Files
lammps/examples/PACKAGES/atc/hardy/in.eshelby_static
2021-06-29 11:23:47 -04:00

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