Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
tutorials/uniformLoadController/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','10') # output frequency
22
23# Make a local copy of DD parameters file and modify that copy if necessary
24DDfile='DD.txt'
25DDfileTemplate='../../Library/DislocationDynamics/'+DDfile
26print("\033[1;32mCreating DDfile\033[0m")
27shutil.copy2(DDfileTemplate,'inputFiles/'+DDfile)
28setInputVariable('inputFiles/'+DDfile,'timeSteppingMethod','adaptive') # adaptive or fixed
29setInputVariable('inputFiles/'+DDfile,'dxMax','10') # max nodal displacement for when timeSteppingMethod=adaptive
30setInputVariable('inputFiles/'+DDfile,'use_velocityFilter','1') # don't filter velocity if noise is enabled
31setInputVariable('inputFiles/'+DDfile,'alphaLineTension','1.0') # dimensionless scale factor in for line tension forces
32setInputVariable('inputFiles/'+DDfile,'Lmin','25') # min segment length (in Burgers vector units)
33setInputVariable('inputFiles/'+DDfile,'Lmax','150') # max segment length (in Burgers vector units)
34setInputVariable('inputFiles/'+DDfile,'outputQuadraturePoints','1') # output quadrature data
35setInputVariable('inputFiles/'+DDfile,'glideSolverType','Galerkin') # type of glide solver, or none
36setInputVariable('inputFiles/'+DDfile,'climbSolverType','none') # type of clim solver, or none
37setInputVariable('inputFiles/'+DDfile,'crossSlipModel','0') # crossSlipModel
38
39# Make a local copy of material file, and modify that copy if necessary
40materialFile='W.txt';
41materialFileTemplate='../../Library/Materials/'+materialFile;
42print("\033[1;32mCreating materialFile\033[0m")
43shutil.copy2(materialFileTemplate,'inputFiles/'+materialFile)
44#setInputVariable('inputFiles/'+materialFile,'enabledSlipSystems','full<111>{110}')
45b_SI=getValueInFile('inputFiles/'+materialFile,'b_SI')
46
47# Make a local copy of ElasticDeformation file, and modify that copy if necessary
48elasticDeformatinoFile='ElasticDeformation.txt';
49elasticDeformatinoFileTemplate='../../Library/ElasticDeformation/'+elasticDeformatinoFile;
50print("\033[1;32mCreating elasticDeformatinoFile\033[0m")
51shutil.copy2(elasticDeformatinoFileTemplate,'inputFiles/'+elasticDeformatinoFile)
52setInputVector('inputFiles/'+elasticDeformatinoFile,'ExternalStress0',np.array([0.0,0.0,0.01,0.0,0.0,0.0]),'applied stress')
53
54# Create polycrystal.txt using local material file
55meshFile='unitCube24.msh';
56meshFileTemplate='../../Library/Meshes/'+meshFile;
57print("\033[1;32mCreating polycrystalFile\033[0m")
58shutil.copy2(meshFileTemplate,'inputFiles/'+meshFile)
59pf=PolyCrystalFile(materialFile);
60pf.absoluteTemperature=300;
61pf.meshFile=meshFile
62#pf.alignToSlipSystem0=1
63#pf.grain1globalX1=np.array([1,1,0])
64#pf.grain1globalX3=np.array([0,0,1])
65#pf.boxEdges=np.array([[1,1,0],[0,1,0],[0,0,1]]) # i-throw is the direction of i-th box edge
66pf.boxScaling=np.array([1e-6,1e-6,1e-6])/b_SI # length of box edges in Burgers vector units
67pf.X0=np.array([0,0,0]) # Centering unitCube mesh. Mesh nodes X are mapped to x=F*(X-X0)
68pf.periodicFaceIDs=np.array([-1])
69pf.write('inputFiles')
70microstructureFiles = []
71
72microstructureFileID=1;
73microstructureName='prismaticLoopsDensity.txt';
74microstructureFileTemplate='../../Library/Microstructures/'+microstructureName;
75microstructureFileLocal='inputFiles/microstructureFile'+str(microstructureFileID)+'.txt'
76microstructureFiles.append('microstructureFile'+str(microstructureFileID)+'.txt')
77print("\033[1;32mCreating microstructureFile"+str(microstructureFileID)+"\033[0m")
78shutil.copy2(microstructureFileTemplate,microstructureFileLocal) # target filename is /dst/dir/file.ext
79setInputVariable(microstructureFileLocal,'targetDensity_SI','1e13')
80setInputVariable(microstructureFileLocal,'radiusDistributionMean_SI','1e-07')
81setInputVariable(microstructureFileLocal,'radiusDistributionStd_SI','0e-07')
82setInputVector(microstructureFileLocal,'allowedGrainIDs',np.array([-1]),'set of grain IDs where loops are allowed. Use -1 for all grains')
83setInputVector(microstructureFileLocal,'allowedSlipSystemIDs',np.array([-1]),'set of slip system IDs whose Burgers vector are allowed to be the prism axis. Use -1 for all slip systems')
84
85microstructureFileID=2;
86microstructureName='frankLoopsDensity.txt';
87microstructureFileTemplate='../../Library/Microstructures/'+microstructureName;
88microstructureFileLocal='inputFiles/microstructureFile'+str(microstructureFileID)+'.txt'
89microstructureFiles.append('microstructureFile'+str(microstructureFileID)+'.txt')
90print("\033[1;32mCreating microstructureFile"+str(microstructureFileID)+"\033[0m")
91shutil.copy2(microstructureFileTemplate,microstructureFileLocal) # target filename is /dst/dir/file.ext
92setInputVariable(microstructureFileLocal,'targetDensity_SI','1e13')
93setInputVariable(microstructureFileLocal,'radiusDistributionMean_SI','5e-08')
94setInputVariable(microstructureFileLocal,'radiusDistributionStd_SI','1e-09')
95setInputVariable(microstructureFileLocal,'areVacancyLoops','0')
96setInputVector(microstructureFileLocal,'allowedGrainIDs',np.array([-1]),'set of grain IDs where loops are allowed. Use -1 for all grains')
97setInputVector(microstructureFileLocal,'allowedPlaneIDs',np.array([-1]),'# set of plane IDs containing the loops. Use -1 for random plane')
98
99print("\033[1;32mCreating initialMicrostructureFile\033[0m")
100with open('inputFiles/initialMicrostructure.txt', "w") as initialMicrostructureFile:
101 for micrFile in microstructureFiles:
102 initialMicrostructureFile.write('microstructureFile='+micrFile+';\n')