#AtC Thermal Coupling
# This benchmark tests heat conducting into and out of the MD region.  The
# temperature is intially 20 everywhere and the left boundary BC is fixed at 40.
# The result should show heat diffusing through the FEM to the MD and back out 
# to the FEM on the right.  Insufficient time is captured to reach the linear 
# steady state, but heat crossing both boundaries should be observed.
 

units		real
atom_style	atomic

# create domain
#lattice	type reduced density rho* = 4*(sigma/a)^3, where N=4 for fcc, s = 3.405 A (Wagner) and a = 5.25 A (Ashcroft & Mermin, p. 70)
# NOTE following 3 lines added for restart
boundary        f p p
pair_style      lj/cut 13.5
read_data       temp.init
lattice         fcc 5.405 origin 0.25 0.25 0.25
region		simRegion block -12 12 -3 3 -3 3

# create atoms, NOTE commented out for restart
#region		mdRegion block -5 5 -3 3 -3 3
#boundary	f p p
#create_box	1 mdRegion
#create_atoms	1 region mdRegion
#mass		1 39.95

# specify interal/ghost atoms
region		mdInternal block -4 4 -3 3 -3 3
group		internal region mdInternal
group		ghost subtract all internal

# velocities have Vcm = 0, NOTE next four lines commented out for restart
#velocity	internal create 40. 87287 mom yes loop geom

#pair_style	lj/cut 13.5
##pair_coeff	1 1 0.010323166 3.405 13.5
#pair_coeff  	1 1 .238 3.405 13.5

neighbor	5. bin
neigh_modify	every 10 delay 0 check no

#               ID  group atc PhysicsType ParameterFile
fix             AtC internal   atc thermal     Ar_thermal.mat

#               ID  part keywords    nx ny nz region
#fix_modify      AtC fem  create mesh 12 2  2  simRegion f p p
fix_modify      AtC fem  create mesh 12 1  1  simRegion f p p

# specify atom types
#fix_modify      AtC transfer internal type internal
fix_modify      AtC transfer boundary type ghost

# fix a temperature
fix_modify     	AtC transfer fix temperature all 20.

# turn on thermostat
fix_modify	AtC transfer thermal control rescale 10

# equilibrate MD field
#dump            D1 all atom 100 dump.bar1d
#fix_modify      AtC transfer output bar1dfe 100
timestep	5
variable xdof equal 3*count(ghost)
compute_modify thermo_temp extra ${xdof}
thermo_style custom step cpu etotal pe f_AtC[1] temp f_AtC[2] 
thermo_modify  format 1 %6i format 2 %7.2g
thermo		100
run 		400

# change thermostat to hoover
fix_modify	AtC transfer unfix temperature all
fix_modify     	AtC transfer thermal control hoover
fix_modify	AtC transfer filter type exponential
fix_modify	AtC transfer filter scale 10000.0
fix_modify	AtC transfer filter on
fix_modify	AtC transfer internal_quadrature off

# add nodesets
#               ID  mesh create_nodeset tag xmin xmax ymin ymax zmin zmax
fix_modify      AtC mesh create_nodeset lbc -12.1  -11.9   -12  12   -12  12
fix_modify      AtC mesh create_nodeset rbc  11.9   12.1   -12  12   -12  12
fix_modify      AtC transfer fix temperature lbc 40.
fix_modify      AtC transfer fix temperature rbc 20.

# initialize filter
#thermo		1
run		100

# set up output, should be before a "run"
fix_modify      AtC transfer output bar1dFE 100 text

# ouput command
#dump            D1 all atom 1000 dump.bar1d
fix_modify      AtC transfer atomic_output bar1dMD 100

# run with FE
reset_timestep 0
thermo		100
run 		10000
