4import matplotlib.pyplot
as plt
5plt.rcParams[
'text.usetex'] =
True
6sys.path.append(
"../../python")
7from modlibUtils
import *
8sys.path.append(
"../../build/tools/pyMoDELib")
13periodicImageCases=np.array([[4,4,4,2]])
18 folders=[
'config',
'F',
'inputFiles']
20 if not os.path.exists(x):
25 DDfileTemplate=
'../../Library/DislocationDynamics/'+DDfile
26 print(
"\033[1;32mCreating DDfile\033[0m")
27 shutil.copy2(DDfileTemplate,
'inputFiles/'+DDfile)
50 materialFile=
'Cu.txt';
51 materialFileTemplate=
'../../Library/Materials/'+materialFile;
52 print(
"\033[1;32mCreating materialFile\033[0m")
53 shutil.copy2(materialFileTemplate,
'inputFiles/'+materialFile)
59 meshFile=
'unitCube24.msh';
60 meshFileTemplate=
'../../Library/Meshes/'+meshFile;
61 print(
"\033[1;32mCreating polycrystalFile\033[0m")
62 shutil.copy2(meshFileTemplate,
'inputFiles/'+meshFile)
64 pf.absoluteTemperature=300;
66 pf.alignToSlipSystem0=1;
67 pf.boxScaling=np.array([300e-10,180e-10,400e-10])/b_SI
68 pf.periodicFaceIDs=np.array([-1])
69 pf.write(
'inputFiles')
73 simulationDir=os.path.abspath(
".")
75 for k
in range(0,np.size(periodicImageCases,0)):
76 fFile=file_path =
"F/F_0.txt"
77 if os.path.exists(fFile):
79 fLabes=file_path =
"F/F_labels.txt"
80 if os.path.exists(fLabes):
82 periodicImageSize=np.array(periodicImageCases[k,:3]).astype(int)
83 EwaldLengthFactor=periodicImageCases[k,3]
84 setInputVariable(
'inputFiles/'+DDfile,
'EwaldLengthFactor',str(EwaldLengthFactor))
85 setInputVector(
'inputFiles/'+DDfile,
'periodicImageSize',periodicImageSize,
'number of periodic images along each period vector')
86 print(
"BEFORE DDBASE")
87 ddBase=pyMoDELib.DefectiveCrystalBase(simulationDir)
91 xCenter=mesh.xCenter()
92 print(
"BEFORE defectiveCrystal")
93 defectiveCrystal=pyMoDELib.DefectiveCrystal(ddBase)
94 print(
"AFTER defectiveCrystal")
97 spec=pyMoDELib.PeriodicDipoleIndividualSpecification()
98 spec.slipSystemIDs=[0,1]
99 spec.exitFaceIDs=[1,1]
100 spec.dipoleCenters=np.array([xCenter,xCenter])
101 spec.dipoleHeights=[60,60]
102 spec.nodesPerLine=[0,0]
104 X=np.linspace(0, 150, num=100)
112 print(
"BEFORE FOR LOOP")
114 spec.glideSteps=[x,x+7]
115 print(
"BEFORE MICROSTRUCTURE")
116 microstructureGenerator=pyMoDELib.MicrostructureGenerator(ddBase)
117 print(
"AFTER MICROSTRUCTURE")
118 microstructureGenerator.addPeriodicDipoleIndividual(spec)
119 print(
"DONE MICROSTRUCTURE")
122 defectiveCrystal.initializeConfiguration(microstructureGenerator.configIO)
123 defectiveCrystal.runSingleStep()
125 S11[j]=np.mean(aux.gaussPoints[:,10])
126 S12[j]=np.mean(aux.gaussPoints[:,11])
127 S13[j]=np.mean(aux.gaussPoints[:,12])
128 S22[j]=np.mean(aux.gaussPoints[:,14])
129 S23[j]=np.mean(aux.gaussPoints[:,15])
130 S33[j]=np.mean(aux.gaussPoints[:,18])
132 print(
"AFTER FOR LOOP")
135 E=
getFarray(F,Flabels,
'dislocation elastic energy [mu b^3]')
136 data=np.empty([np.size(X),8])
145 outFileName=
'data'+
'_'+str(periodicImageSize[0])+
'_'+str(periodicImageSize[1])+
'_'+str(periodicImageSize[2])+
'_'+str(EwaldLengthFactor)+
'.txt'
146 np.savetxt(outFileName, data)
151for k
in range(0,np.size(periodicImageCases,0)):
152 periodicImageSize=np.array(periodicImageCases[k,:3]).astype(int)
153 EwaldLengthFactor=periodicImageCases[k,3]
154 key=str(periodicImageSize[0])+
'_'+str(periodicImageSize[1])+
'_'+str(periodicImageSize[2])+
'_'+str(EwaldLengthFactor)
155 FileName=
'data_'+key+
'.txt'
156 dataDict[key]=np.loadtxt(FileName);
158fields=[
'energy',
'sigma11',
'sigma22',
'sigma33',
'sigma23',
'sigma13',
'sigma12']
159fieldLabels=[
'elastic energy $[\mu b^3]$',
'$\sigma_{11}$ $[\mu]$',
'$\sigma_{22}$ $[\mu]$',
'$\sigma_{33}$ $[\mu]$',
'$\sigma_{23}$ $[\mu]$',
'$\sigma_{13}$ $[\mu]$',
'$\sigma_{12}$ $[\mu]$']
160for k
in range(0,len(fields)):
163 ax1=plt.subplot(1,1,1)
166 ax1.plot(data[:,0], data[:,k+1],label=key)
169 plt.xlabel(
'dipole distance $[b]$')
170 plt.ylabel(fieldLabels[k])
171 fig1.savefig(fields[k], bbox_inches=
'tight')
setInputVector(fileName, variable, newVal, newCom)
setInputVariable(fileName, variable, newVal)
getFarray(F, Flabels, label)
getValueInFile(fileName, variable)