Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
tutorials/dipoles/generateInputFiles.py
Go to the documentation of this file.
1import sys
2sys.path.append("../../python/")
3from modlibUtils import *
4
5# Create folder structure
6folders=['config','F','inputFiles']
7for x in folders:
8 if not os.path.exists(x):
9 os.makedirs(x)
10
11# Make a local copy of DefectiveCrystal parameters file and modify that copy if necessary
12DCfile='DefectiveCrystal.txt'
13DCfileTemplate='../../Library/DefectiveCrystal/'+DCfile
14print("\033[1;32mCreating DDfile\033[0m")
15shutil.copy2(DCfileTemplate,'inputFiles/'+DCfile)
16setInputVariable('inputFiles/'+DCfile,'physics','DislocationDynamics ElasticDeformation')
17setInputVariable('inputFiles/'+DCfile,'useFEM','0')
18setInputVariable('inputFiles/'+DCfile,'Nsteps','10000') # number of simulation steps
19setInputVariable('inputFiles/'+DCfile,'maxResolveSteps','0') # number of simulation steps
20setInputVariable('inputFiles/'+DCfile,'dtMax','1e25')
21setInputVariable('inputFiles/'+DCfile,'outputFrequency','100') # output frequency
22setInputVector('inputFiles/'+DCfile,'periodicImageSize',np.array([2,2,2]),'n of images in each direction')
23setInputVariable('inputFiles/'+DCfile,'EwaldLengthFactor','1.0')
24
25# Make a local copy of DD parameters file and modify that copy if necessary
26DDfile='DD.txt'
27DDfileTemplate='../../Library/DislocationDynamics/'+DDfile
28print("\033[1;32mCreating DDfile\033[0m")
29shutil.copy2(DDfileTemplate,'inputFiles/'+DDfile)
30setInputVariable('inputFiles/'+DDfile,'timeSteppingMethod','adaptive') # adaptive or fixed
31setInputVariable('inputFiles/'+DDfile,'dxMax','1') # max nodal displacement for when timeSteppingMethod=adaptive
32setInputVariable('inputFiles/'+DDfile,'use_velocityFilter','1') # don't filter velocity if noise is enabled
33setInputVariable('inputFiles/'+DDfile,'useStochasticForce','0') # Langevin thermal noise enabled
34setInputVariable('inputFiles/'+DDfile,'alphaLineTension','1.0') # dimensionless scale factor in for line tension forces
35setInputVariable('inputFiles/'+DDfile,'Lmin','5') # min segment length (in Burgers vector units)
36setInputVariable('inputFiles/'+DDfile,'Lmax','20') # max segment length (in Burgers vector units)
37setInputVariable('inputFiles/'+DDfile,'outputQuadraturePoints','1') # output quadrature data
38setInputVariable('inputFiles/'+DDfile,'computeElasticEnergyPerLength','1') # output quadrature data
39setInputVariable('inputFiles/'+DDfile,'glideSolverType','Galerkin') # type of glide solver, or none
40setInputVariable('inputFiles/'+DDfile,'climbSolverType','none') # type of clim solver, or none
41setInputVariable('inputFiles/'+DDfile,'remeshFrequency','1')
42setInputVariable('inputFiles/'+DDfile,'quadPerLength','1.0')
43
44# Make a local copy of material file, and modify that copy if necessary
45materialFile='W.txt';
46materialFileTemplate='../../Library/Materials/'+materialFile;
47print("\033[1;32mCreating materialFile\033[0m")
48shutil.copy2(materialFileTemplate,'inputFiles/'+materialFile)
49b_SI=getValueInFile('inputFiles/'+materialFile,'b_SI')
50
51# Make a local copy of ElasticDeformation file, and modify that copy if necessary
52elasticDeformatinoFile='ElasticDeformation.txt';
53elasticDeformatinoFileTemplate='../../Library/ElasticDeformation/'+elasticDeformatinoFile;
54print("\033[1;32mCreating elasticDeformatinoFile\033[0m")
55shutil.copy2(elasticDeformatinoFileTemplate,'inputFiles/'+elasticDeformatinoFile)
56setInputVector('inputFiles/'+elasticDeformatinoFile,'ExternalStressRate',np.array([0.0,0.0,0.0,0.0,0.0,1e-9]),'applied strain rate')
57setInputVector('inputFiles/'+elasticDeformatinoFile,'stiffnessRatio',np.array([0.0,0.0,0.0,0.0,0.0,0.0]),'stiffness ratio')
58
59# Create polycrystal.txt using local material file
60meshFile='unitCube24.msh';
61meshFileTemplate='../../Library/Meshes/'+meshFile;
62print("\033[1;32mCreating polycrystalFile\033[0m")
63shutil.copy2(meshFileTemplate,'inputFiles/'+meshFile)
64pf=PolyCrystalFile(materialFile);
65pf.absoluteTemperature=300;
66pf.meshFile=meshFile
67pf.alignToSlipSystem0=1;
68pf.boxScaling=np.array([500e-9,100e-9,500e-9])/b_SI # length of box edges in Burgers vector units
69pf.periodicFaceIDs=np.array([-1])
70pf.write('inputFiles')
71microstructureFiles = []
72
73# make a local copy of microstructure file, and modify that copy if necessary
74microstructureFileID=1;
75microstructureName='periodicDipoleIndividual.txt';
76microstructureFileTemplate='../../Library/Microstructures/'+microstructureName;
77microstructureFileLocal='inputFiles/microstructureFile'+str(microstructureFileID)+'.txt'
78microstructureFiles.append('microstructureFile'+str(microstructureFileID)+'.txt')
79print("\033[1;32mCreating microstructureFile"+str(microstructureFileID)+"\033[0m")
80shutil.copy2(microstructureFileTemplate,microstructureFileLocal) # target filename is /dst/dir/file.ext
81setInputVector(microstructureFileLocal,'slipSystemIDs',np.array([0,-1]),'slip system IDs for each dipole')
82setInputVector(microstructureFileLocal,'exitFaceIDs',np.array([4,4]),'4 is for edge, 2 for screw')
83setInputMatrix(microstructureFileLocal,'dipoleCenters',np.array([[0.0,0.0,0.0],[0.0,0.0,0.0]]))
84setInputVector(microstructureFileLocal,'nodesPerLine',np.array([10,10]),'number of extra nodes on each dipole')
85setInputVector(microstructureFileLocal,'dipoleHeights',np.array([120,1200]),'height of each dipole, in number of planes')
86setInputVector(microstructureFileLocal,'glideSteps',np.array([1.0,30.0]),'step of each dipole in the glide plane')
87
88print("\033[1;32mCreating initialMicrostructureFile\033[0m")
89with open('inputFiles/initialMicrostructure.txt', "w") as initialMicrostructureFile:
90 for micrFile in microstructureFiles:
91 initialMicrostructureFile.write('microstructureFile='+micrFile+';\n')