133 lines
6.0 KiB
Plaintext
133 lines
6.0 KiB
Plaintext
# This test calculates the J-integral for a sequence of different loads
|
|
# for a system with a crack tip.
|
|
#
|
|
# loops around crack and one around undefected material
|
|
# loop 0 - does not include crack
|
|
# loop 1 - smallest contour around left crack tip
|
|
# loop 2 - medium contour around left crack tip
|
|
# loop 3 - largest contour around left crack tip
|
|
# loop 4 - medium contour around right crack tip
|
|
#for Lennard-Jones potential for gold:
|
|
# surface energy (gamma) of 0.1599 eV/Å^2 = 2.56191 J/m2.
|
|
# 2*gamma = 0.3198 eV/Å^2 = 5.12382 J/m2
|
|
# using the internal nktv2p conversion factor,
|
|
# the units of eshelby_stress are eV/Å^3, and
|
|
# the resulting boundary integral is eV/Å since we also include thickness (a
|
|
# boundary surface area rather than a periphery). If we multiply the 2*gamma
|
|
# quantity times the thickness t = 3*4.08 = 12.24 Å, we obtain 2*gamma*t =
|
|
# 3.914352 eV/Å, which agrees with the mesh calculation.
|
|
echo both
|
|
log eshelby_static.log
|
|
units metal
|
|
dimension 3
|
|
boundary p p p
|
|
atom_style atomic
|
|
# create system
|
|
#lattice fcc 3.615 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1
|
|
#lattice fcc 3.615 origin 0.2 0.2 0.2 orient x 1 0 0 orient y 0 1 0 orient z 0 0 1
|
|
lattice fcc 4.08 origin 0.25 0.25 0.25
|
|
region SYSTEM block -10 10 -10 10 0 3
|
|
region UPPER block -10 10 0 10 0 3
|
|
region LOWER block -10 0 -10 10 0 3
|
|
create_box 1 SYSTEM
|
|
create_atoms 1 region SYSTEM
|
|
mass 1 63.55
|
|
group internal region SYSTEM
|
|
group upper region UPPER
|
|
group lower region LOWER
|
|
#pair_style eam
|
|
#pair_coeff * * ../../../../potentials/Cu_u3.eam
|
|
#pair_style lj/smooth 8.0 10.0
|
|
#pair_coeff * * 10.0 1.5
|
|
pair_style lj/smooth/linear 5.456108274435118
|
|
pair_coeff * * 0.7242785984051078 2.598146797350056
|
|
# define region
|
|
region abovecrack block -2.01 2.01 0 8 INF INF units lattice
|
|
group abovecrack region abovecrack
|
|
region belowcrack block -2.01 2.01 -8 0 INF INF units lattice
|
|
group belowcrack region belowcrack
|
|
neighbor 1.0 bin
|
|
neigh_modify delay 1000000
|
|
neigh_modify exclude group abovecrack belowcrack
|
|
thermo 10
|
|
compute_modify thermo_temp extra 0
|
|
region FORCECHECK block -6 0 6 10 0 3
|
|
group FORCECHECK region FORCECHECK
|
|
compute fxsum FORCECHECK reduce sum fx
|
|
compute fysum FORCECHECK reduce sum fy
|
|
compute fzsum FORCECHECK reduce sum fz
|
|
thermo_style custom step ke pe press c_fxsum c_fysum c_fzsum
|
|
thermo_modify format 1 %4i format 2 %3.1g format 3 %20.16g
|
|
timestep 0.0
|
|
# (1) minimize the system to get a relaxed configuration
|
|
min_modify line quadratic
|
|
variable tol equal 1.e-11
|
|
minimize 0.0 ${tol} 100000 1000000
|
|
write_restart eshelby.restart
|
|
# (2) pull crack apart
|
|
reset_timestep 0
|
|
fix PK1 internal atc field
|
|
# NOTE tune this relative to lattice size
|
|
fix_modify PK1 mesh create 10 10 1 SYSTEM p f p
|
|
fix_modify PK1 fields none
|
|
fix_modify PK1 fields add mass_density internal_energy temperature stress displacement
|
|
fix_modify PK1 fields add eshelby_stress transformed_stress
|
|
fix_modify PK1 gradients add displacement
|
|
fix_modify PK1 set reference_potential_energy
|
|
fix_modify PK1 output eshelby_staticFE 1 text binary tensor_components
|
|
#fix_modify PK1 on_the_fly
|
|
#-- make concentric loops around one/both of the crack tips
|
|
#-- & another around undefected material (loop0)
|
|
fix_modify PK1 mesh create_faceset loop0 box -6 0 6 10 -INF INF outward
|
|
fix_modify PK1 output boundary_integral eshelby_stress faceset loop0
|
|
fix_modify PK1 output boundary_integral stress faceset loop0
|
|
fix_modify PK1 output boundary_integral internal_energy faceset loop0
|
|
#fix_modify PK1 output boundary_integral displacement_gradient faceset loop0
|
|
fix_modify PK1 mesh create_faceset loop1 box -6 0 -2 2 -INF INF outward
|
|
fix_modify PK1 output boundary_integral eshelby_stress faceset loop1
|
|
fix_modify PK1 output boundary_integral stress faceset loop1
|
|
fix_modify PK1 output boundary_integral internal_energy faceset loop1
|
|
#fix_modify PK1 output boundary_integral displacement_gradient faceset loop1
|
|
fix_modify PK1 mesh create_faceset loop2 box -8 0 -4 4 -INF INF outward
|
|
fix_modify PK1 output boundary_integral eshelby_stress faceset loop2
|
|
fix_modify PK1 output boundary_integral stress faceset loop2
|
|
fix_modify PK1 output boundary_integral internal_energy faceset loop2
|
|
#fix_modify PK1 output boundary_integral displacement_gradient faceset loop2
|
|
fix_modify PK1 mesh create_faceset loop3 box -10 0 -6 6 -INF INF outward
|
|
fix_modify PK1 output boundary_integral eshelby_stress faceset loop3
|
|
fix_modify PK1 output boundary_integral stress faceset loop3
|
|
fix_modify PK1 output boundary_integral internal_energy faceset loop3
|
|
#fix_modify PK1 output boundary_integral displacement_gradient faceset loop3
|
|
fix_modify PK1 mesh create_faceset loop4 box 0 8 -6 6 -INF INF outward
|
|
fix_modify PK1 output boundary_integral eshelby_stress faceset loop4
|
|
fix_modify PK1 output boundary_integral stress faceset loop4
|
|
fix_modify PK1 output boundary_integral internal_energy faceset loop4
|
|
#fix_modify PK1 output boundary_integral displacement_gradient faceset loop4
|
|
#-- compute across crack jumps in displacement
|
|
#fix PK1upper internal atc hardy
|
|
#fix_modify PK1upper mesh create 10 5 1 UPPER p f p
|
|
#fix_modify PK1upper fields none
|
|
#fix_modify PK1upper fields add displacement
|
|
#fix PK1lower lower atc hardy
|
|
#fix_modify PK1lower mesh create 10 5 1 LOWER p f p
|
|
#fix_modify PK1lower fields none
|
|
#fix_modify PK1lower fields add displacement
|
|
# initial (1)
|
|
run 1
|
|
# increment (2)
|
|
variable L equal 20
|
|
variable n equal 10
|
|
variable i loop $n
|
|
# NOTE this does not generate KE
|
|
# NOTE crack is complete at i =8 / 10
|
|
variable s equal 0.08*$L/$n
|
|
label loop_i
|
|
variable strain equal $i*$s
|
|
print ">>> step $i, total strain ${strain}"
|
|
change_box all y delta 0 $s remap units lattice
|
|
minimize 0.0 ${tol} 100000 1000000
|
|
# reset_timestep $i
|
|
run 1
|
|
next i
|
|
jump in.eshelby_static loop_i
|