Mechanics of Defect Evolution Library
Loading...
Searching...
No Matches
tutorials/dipoleNoise/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 noise file, and modify that copy if necessary
26gridSize=1024;
27gridSpacing=1e-10;
28boxSize=gridSize*gridSpacing;
29# Make a local copy of noise file, and modify that copy if necessary
30noiseFile='AnalyticalSolidSolutionNoise.txt'
31noiseFileTemplate='../../Library/GlidePlaneNoise/'+noiseFile;
32print("\033[1;32mCreating noiseFile\033[0m")
33shutil.copy2(noiseFileTemplate,'inputFiles/'+noiseFile) # target filename is /dst/dir/file.ext
34#setInputVariable(noiseFile,'seed','1')
35setInputVariable('inputFiles/'+noiseFile,'MSSS_SI','0.45e18')
36setInputVariable('inputFiles/'+noiseFile,'seed','6')
37setInputVector('inputFiles/'+noiseFile,'gridSize',np.array([gridSize,gridSize,64]),'noise grid size')
38
39#noiseFile='MDSolidSolution.txt';
40#noiseFileTemplate='../../Library/GlidePlaneNoise/'+noiseFile;
41#print("\033[1;32mCreating noiseFile\033[0m")
42#shutil.copy2(noiseFileTemplate,'inputFiles/'+noiseFile) # target filename is /dst/dir/file.ext
43#setInputVariable('inputFiles/'+noiseFile,'type','MDSolidSolutionNoise')
44#setInputVariable('inputFiles/'+noiseFile,'tag','0')
45#setInputVariable('inputFiles/'+noiseFile,'seed','0')
46#setInputVariable('inputFiles/'+noiseFile,'correlationFile_L',os.path.abspath('../../Library/GlidePlaneNoise/MDSolidSolutionCorrelations_L_MoNbTi.vtk'))
47#setInputVariable('inputFiles/'+noiseFile,'correlationFile_T',os.path.abspath('../../Library/GlidePlaneNoise/MDSolidSolutionCorrelations_T_MoNbTi.vtk'))
48#setInputVector('inputFiles/'+noiseFile,'gridSize',np.array([100,100,1]),'number of grid points in each direction')
49#setInputVector('inputFiles/'+noiseFile,'gridSpacing_SI',np.array([1.12e-10,1.06e-10,1e-10]),'grid spacing in each direction')
50#setInputVariable('inputFiles/'+noiseFile,'a_cai_SI','0')
51
52# Make a local copy of material file, and modify that copy if necessary
53materialFile='AlMg15.txt';
54materialFileTemplate='../../Library/Materials/'+materialFile;
55print("\033[1;32mCreating materialFile\033[0m")
56shutil.copy2(materialFileTemplate,'inputFiles/'+materialFile)
57#setInputVariable('inputFiles/'+materialFile,'enabledSlipSystems','Shockley')
58setInputVariable('inputFiles/'+materialFile,'glidePlaneNoise',noiseFile)
59b_SI=getValueInFile('inputFiles/'+materialFile,'b_SI')
60
61# Make a local copy of DD parameters file and modify that copy if necessary
62DDfile='DD.txt'
63DDfileTemplate='../../Library/DislocationDynamics/'+DDfile
64print("\033[1;32mCreating DDfile\033[0m")
65shutil.copy2(DDfileTemplate,'inputFiles/'+DDfile)
66setInputVariable('inputFiles/'+DDfile,'timeSteppingMethod','adaptive') # adaptive or fixed
67setInputVariable('inputFiles/'+DDfile,'dxMax','1') # max nodal displacement for when timeSteppingMethod=adaptive
68setInputVariable('inputFiles/'+DDfile,'use_velocityFilter','0') # don't filter velocity if noise is enabled
69setInputVariable('inputFiles/'+DDfile,'useStochasticForce','0') # Langevin thermal noise enabled
70setInputVariable('inputFiles/'+DDfile,'alphaLineTension','1')
71setInputVariable('inputFiles/'+DDfile,'Lmin','5') # min segment length (in Burgers vector units)
72setInputVariable('inputFiles/'+DDfile,'Lmax','20') # max segment length (in Burgers vector units)
73setInputVariable('inputFiles/'+DDfile,'outputQuadraturePoints','1') # output quadrature data
74setInputVariable('inputFiles/'+DDfile,'computeElasticEnergyPerLength','1') # output quadrature data
75setInputVariable('inputFiles/'+DDfile,'glideSolverType','Galerkin') # type of glide solver, or none
76setInputVariable('inputFiles/'+DDfile,'climbSolverType','none') # type of clim solver, or none
77setInputVector('inputFiles/'+DDfile,'nodalVelocityConstraints',np.array([0.0,1.0,0.0]),'Velocty constrained in the x direction')
78setInputVariable('inputFiles/'+DDfile,'remeshFrequency','0')
79setInputVariable('inputFiles/'+DDfile,'maxJunctionIterations','0')
80setInputVariable('inputFiles/'+DDfile,'quadPerLength','1.0')
81
82# Make a local copy of ElasticDeformation file, and modify that copy if necessary
83elasticDeformatinoFile='ElasticDeformation.txt';
84elasticDeformatinoFileTemplate='../../Library/ElasticDeformation/'+elasticDeformatinoFile;
85print("\033[1;32mCreating elasticDeformatinoFile\033[0m")
86shutil.copy2(elasticDeformatinoFileTemplate,'inputFiles/'+elasticDeformatinoFile)
87#setInputVector('inputFiles/'+elasticDeformatinoFile,'ExternalStress0',np.array([0.0,0.0,0.0,0.0,0.0,0.0]),'applied stress')
88setInputVector('inputFiles/'+elasticDeformatinoFile,'ExternalStrainRate',np.array([0.0,0.0,0.0,0.0,0.0,1e-8]),'applied strain rate')
89setInputVector('inputFiles/'+elasticDeformatinoFile,'stiffnessRatio',np.array([0.0,0.0,0.0,0.0,0.0,1e20]),'stiffness ratio')
90
91# Create polycrystal.txt using local material file
92meshFile='unitCube24.msh';
93meshFileTemplate='../../Library/Meshes/'+meshFile;
94print("\033[1;32mCreating polycrystalFile\033[0m")
95shutil.copy2(meshFileTemplate,'inputFiles/'+meshFile)
96pf=PolyCrystalFile(materialFile);
97pf.absoluteTemperature=300;
98pf.meshFile=meshFile
99pf.alignToSlipSystem0=1
100pf.boxScaling=np.array([boxSize,boxSize,boxSize])/b_SI # length of box edges in Burgers vector units
101pf.periodicFaceIDs=np.array([-1])
102pf.write('inputFiles')
103microstructureFiles = []
104
105# make a local copy of microstructure file, and modify that copy if necessary
106microstructureFileID=1;
107microstructureName='periodicDipoleIndividual.txt';
108microstructureFileTemplate='../../Library/Microstructures/'+microstructureName;
109microstructureFileLocal='inputFiles/microstructureFile'+str(microstructureFileID)+'.txt'
110microstructureFiles.append('microstructureFile'+str(microstructureFileID)+'.txt')
111print("\033[1;32mCreating microstructureFile"+str(microstructureFileID)+"\033[0m")
112shutil.copy2(microstructureFileTemplate,microstructureFileLocal) # target filename is /dst/dir/file.ext
113setInputVector(microstructureFileLocal,'slipSystemIDs',np.array([0,-1]),'slip system IDs for each dipole')
114setInputVector(microstructureFileLocal,'exitFaceIDs',np.array([4,4]),'4 is for edge, 2 for screw')
115setInputMatrix(microstructureFileLocal,'dipoleCenters',np.array([[0.0,0.0,0.0],[0.0,0.0,0.0]]))
116setInputVector(microstructureFileLocal,'nodesPerLine',np.array([10,10]),'number of extra nodes on each dipole')
117setInputVector(microstructureFileLocal,'dipoleHeights',np.array([boxSize/b_SI/4/(np.sqrt(6)/3),boxSize/b_SI/4/(np.sqrt(6)/3)]),'height of each dipole, in number of planes')
118setInputVector(microstructureFileLocal,'glideSteps',np.array([100.0,30.0]),'step of each dipole in the glide plane')
119
120print("\033[1;32mCreating initialMicrostructureFile\033[0m")
121with open('inputFiles/initialMicrostructure.txt', "w") as initialMicrostructureFile:
122 for micrFile in microstructureFiles:
123 initialMicrostructureFile.write('microstructureFile='+micrFile+';\n')
setInputVector(fileName, variable, newVal, newCom)
setInputVariable(fileName, variable, newVal)
setInputMatrix(fileName, variable, newVal)
getValueInFile(fileName, variable)