Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
testsPy/periodicEnergy/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 DD parameters file and modify that copy if necessary
12DDfile='DD.txt'
13DDfileTemplate='../../Library/DislocationDynamics/'+DDfile
14print("\033[1;32mCreating DDfile\033[0m")
15shutil.copy2(DDfileTemplate,'inputFiles/'+DDfile)
16setInputVariable('inputFiles/'+DDfile,'Lmax','20') # max segment length (in Burgers vector units)
17setInputVariable('inputFiles/'+DDfile,'outputFrequency','1') # output frequency
18setInputVariable('inputFiles/'+DDfile,'outputQuadraturePoints','1') # output quadrature data
19setInputVariable('inputFiles/'+DDfile,'computeElasticEnergyPerLength','1') # output quadrature data
20setInputVariable('inputFiles/'+DDfile,'Nsteps','1') # number of simulation steps
21#setInputVector('inputFiles/'+DDfile,'nodalVelocityConstraints',np.array([0.0,1.0,0.0]),'Velocty constrained in the x direction')
22setInputVariable('inputFiles/'+DDfile,'quadPerLength','1.0')
23setInputVector('inputFiles/'+DDfile,'periodicImageSize',np.array([0,2,0]),'n of images in each direction')
24setInputVariable('inputFiles/'+DDfile,'EwaldLengthFactor','1.0')
25setInputVariable('inputFiles/'+DDfile,'maxJunctionIterations','0')
26setInputVariable('inputFiles/'+DDfile,'remeshFrequency','0')
27
28
29materialFile='W.txt';
30materialFileTemplate='../../Library/Materials/'+materialFile;
31shutil.copy2(materialFileTemplate,'inputFiles/'+materialFile)
32b_SI=getValueInFile('inputFiles/'+materialFile,'b_SI')
33h_SI=b_SI/np.sqrt(2.0/3.0) # plane heigh in BCC
34
35
36# Make a local copy of ElasticDeformation file, and modify that copy if necessary
37elasticDeformatinoFile='ElasticDeformation.txt';
38elasticDeformatinoFileTemplate='../../Library/ElasticDeformation/'+elasticDeformatinoFile;
39print("\033[1;32mCreating elasticDeformatinoFile\033[0m")
40shutil.copy2(elasticDeformatinoFileTemplate,'inputFiles/'+elasticDeformatinoFile)
41#setInputVector('inputFiles/'+elasticDeformatinoFile,'ExternalStress0',np.array([0.0,0.0,0.0,0.0,0.0,0.0]),'applied stress')
42setInputVector('inputFiles/'+elasticDeformatinoFile,'ExternalStressRate',np.array([0.0,0.0,0.0,0.0,0.0,0.0]),'applied strain rate')
43setInputVector('inputFiles/'+elasticDeformatinoFile,'stiffnessRatio',np.array([0.0,0.0,0.0,0.0,0.0,0.0]),'stiffness ratio')
44
45meshFile='unitCube24.msh';
46meshFileTemplate='../../Library/Meshes/'+meshFile;
47print("\033[1;32mCreating polycrystalFile\033[0m")
48shutil.copy2(meshFileTemplate,'inputFiles/'+meshFile)
49pf=PolyCrystalFile(materialFile);
50pf.absoluteTemperature=300;
51pf.meshFile=meshFile
52pf.alignToSlipSystem0=1
53pf.boxScaling=np.array([300e-10,180e-10,400e-10])/pf.boxEdgesLatticeLengths/b_SI # must be a vector of integers
54pf.X0=np.array([0,0,0]) # Centering unitCube mesh. Mesh nodes X are mapped to x=F*(X-X0)
55pf.periodicFaceIDs=np.array([-1])
56pf.write('inputFiles')
57
58
59# make a local copy of microstructure file, and modify that copy if necessary
60microstructureFile1='periodicDipoleIndividual.txt';
61microstructureFileTemplate='../../Library/Microstructures/'+microstructureFile1;
62print("\033[1;32mCreating microstructureFile\033[0m")
63shutil.copy2(microstructureFileTemplate,'inputFiles/'+microstructureFile1) # target filename is /dst/dir/file.ext
64setInputVector('inputFiles/'+microstructureFile1,'slipSystemIDs',np.array([0]),'slip system IDs for each dipole')
65setInputVector('inputFiles/'+microstructureFile1,'exitFaceIDs',np.array([1]),'4 is for edge, 2 for screw')
66setInputVector('inputFiles/'+microstructureFile1,'dipoleCenters',np.array([0.0,0.0,0.0]),'dipole center')
67setInputVector('inputFiles/'+microstructureFile1,'nodesPerLine',np.array([0]),'number of extra nodes on each dipole')
68setInputVector('inputFiles/'+microstructureFile1,'dipoleHeights',np.array([np.round(200e-10/h_SI)]),'height of each dipole, in number of planes')
69setInputVector('inputFiles/'+microstructureFile1,'glideSteps',np.array([1.0]),'step of each dipole in the glide plane')
70
71
80
81
82print("\033[1;32mCreating initialMicrostructureFile\033[0m")
83with open('inputFiles/initialMicrostructure.txt', "w") as initialMicrostructureFile:
84 initialMicrostructureFile.write('microstructureFile='+microstructureFile1+';\n')
85# initialMicrostructureFile.write('microstructureFile='+microstructureFile2+';\n')
setInputVector(fileName, variable, newVal, newCom)
setInputVariable(fileName, variable, newVal)
getValueInFile(fileName, variable)