MoDeNa
1.0
Software framework facilitating sequential multi-scale modelling
createInputs.py
Go to the documentation of this file.
1
#!/usr/bin/python
2
32
from
__future__
import
division
33
41
42
import
json
43
from
numpy
import
exp,log,pi
44
# read json
45
f=open(
"unifiedInput.json"
,
'r')inputs=json.load(f)
46
f.close()
47
# prepare input for Bubble growth model
48
f=open(
"inputs.in"
,
'w'
)
49
f.write(
'{0:d}\n'
.format(inputs[
"bubbleGrowth"
][
"integrator"
]))
50
f.write(
'{0:d}\n'
.format(inputs[
"bubbleGrowth"
][
"method"
]))
51
f.write(
'\n'
)
52
if
(inputs[
"bubbleGrowth"
][
"inertialTerm"
]):
53
f.write(
't\n'
)
54
else
:
55
f.write(
'f\n'
)
56
if
(inputs[
"bubbleGrowth"
][
"solubilityCorrection"
]):
57
f.write(
't\n'
)
58
else
:
59
f.write(
'f\n'
)
60
f.write(
'{0:.3g}\n'
.format(inputs[
"bubbleGrowth"
][
"meshCoarseningParameter"
]))
61
f.write(
'\n'
)
62
f.write(
'{0:d}\n'
.format(inputs[
"bubbleGrowth"
][
"internalNodes"
]))
63
f.write(
'{0:.3g}\n'
.format(inputs[
"bubbleGrowth"
][
"initialTime"
]))
64
f.write(
'{0:.3g}\n'
.format(inputs[
"bubbleGrowth"
][
"finalTime"
]))
65
f.write(
'{0:d}\n'
.format(inputs[
"bubbleGrowth"
][
"outerTimeSteps"
]))
66
f.write(
'{0:d}\n'
.format(inputs[
"bubbleGrowth"
][
"maxInnerTimeSteps"
]))
67
f.write(
'{0:.3g}\n'
.format(inputs[
"bubbleGrowth"
][
"relativeTolerance"
]))
68
f.write(
'{0:.3g}\n'
.format(inputs[
"bubbleGrowth"
][
"absoluteTolerance"
]))
69
f.write(
'\n'
)
70
f.write(
'{0:d}\n'
.format(inputs[
"bubbleGrowth"
][
"numberOfDissolvedGases"
]))
71
f.write(
'{0:d}\n'
.format(inputs[
"bubbleGrowth"
][
"carbonDioxidePosition"
]))
72
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"pressure"
]))
73
f.write(
'{0:.3g} {1:3g}\n'
.format(\
74
inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"molarMass"
],\
75
inputs[
"physicalProperties"
][
"blowingAgents"
][
"CO2"
][
"molarMass"
]))
76
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"polymer"
][
"heatCapacity"
]))
77
f.write(
'{0:.3g} {1:3g}\n'
.format(\
78
inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"heatCapacityInLiquidPhase"
],\
79
inputs[
"physicalProperties"
][
"blowingAgents"
][
"CO2"
][
"heatCapacityInLiquidPhase"
]))
80
f.write(
'{0:.3g} {1:3g}\n'
.format(\
81
inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"heatCapacityInGaseousPhase"
],\
82
inputs[
"physicalProperties"
][
"blowingAgents"
][
"CO2"
][
"heatCapacityInGaseousPhase"
]))
83
f.write(
'{0:.3g} {1:3g}\n'
.format(\
84
inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"evaporationHeat"
],\
85
inputs[
"physicalProperties"
][
"blowingAgents"
][
"CO2"
][
"evaporationHeat"
]))
86
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"density"
]))
87
f.write(
'\n'
)
88
f.write(
'{0:.3g}\n'
.format(inputs[
"initialConditions"
][
"temperature"
]))
89
f.write(
'{0:.3g}\n'
.format(inputs[
"initialConditions"
][
"bubbleRadius"
]))
90
NN=inputs[
"initialConditions"
][
"numberBubbleDensity"
]
91
R0=inputs[
"initialConditions"
][
"bubbleRadius"
]
92
f.write(
'{0:.3g}\n'
.format((1/(NN*exp(log(4/3*pi*R0**3)))+1)**(1/3)))
93
f.write(
'{0:.3g}\n'
.format(inputs[
"initialConditions"
][
"concentrations"
][
"polyol"
]))
94
f.write(
'{0:.3g}\n'
.format(inputs[
"initialConditions"
][
"concentrations"
][
"water"
]))
95
f.write(
'{0:.3g}\n'
.format(inputs[
"initialConditions"
][
"concentrations"
][
"isocyanate"
]))
96
f.write(
'{0:.3g} {1:3g}\n'
.format(\
97
inputs[
"initialConditions"
][
"concentrations"
][
"blowingAgents"
][
"PBL"
],\
98
inputs[
"initialConditions"
][
"concentrations"
][
"blowingAgents"
][
"CO2"
]))
99
f.write(
'1 0 0\n'
)
100
f.write(
'\n'
)
101
if
(inputs[
"kinetics"
][
"kineticModel"
]==
"Baser"
):
102
f.write(
'1\n'
)
103
elif
(inputs[
"kinetics"
][
"kineticModel"
]==
"modena"
):
104
f.write(
'2\n'
)
105
elif
(inputs[
"kinetics"
][
"kineticModel"
]==
"BaserRx"
):
106
f.write(
'3\n'
)
107
else
:
108
print
'kinetic model unknown in Bubble growth model'
109
exit
110
if
(inputs[
"kinetics"
][
"useDilution"
]):
111
f.write(
't\n'
)
112
else
:
113
f.write(
'f\n'
)
114
f.write(
'{0:.3g}\n'
.format(inputs[
"kinetics"
][
"gellingReaction"
][
"frequentialFactor"
]))
115
f.write(
'{0:.3g}\n'
.format(inputs[
"kinetics"
][
"gellingReaction"
][
"activationEnergy"
]))
116
f.write(
'{0:.3g}\n'
.format(inputs[
"kinetics"
][
"blowingReaction"
][
"frequentialFactor"
]))
117
f.write(
'{0:.3g}\n'
.format(inputs[
"kinetics"
][
"blowingReaction"
][
"activationEnergy"
]))
118
f.write(
'{0:.3g}\n'
.format(inputs[
"kinetics"
][
"gellingReaction"
][
"reactionEnthalpy"
]))
119
f.write(
'{0:.3g}\n'
.format(inputs[
"kinetics"
][
"blowingReaction"
][
"reactionEnthalpy"
]))
120
f.write(
'\n'
)
121
f.write(
'{0:d}\n'
.format(inputs[
"physicalProperties"
][
"polymer"
][
"polymerDensityModel"
]))
122
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"polymer"
][
"density"
]))
123
f.write(
'\n'
)
124
f.write(
'{0:d}\n'
.format(inputs[
"physicalProperties"
][
"surfaceTensionModel"
]))
125
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"surfaceTension"
]))
126
f.write(
'\n'
)
127
f.write(
'{0:d} {1:d}\n'
.format(\
128
inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"diffusivityModel"
],\
129
inputs[
"physicalProperties"
][
"blowingAgents"
][
"CO2"
][
"diffusivityModel"
]))
130
f.write(
'{0:.3g} {1:3g}\n'
.format(\
131
inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"diffusivity"
],\
132
inputs[
"physicalProperties"
][
"blowingAgents"
][
"CO2"
][
"diffusivity"
]))
133
f.write(
'\n'
)
134
f.write(
'{0:d} {1:d}\n'
.format(\
135
inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"solubilityModel"
],\
136
inputs[
"physicalProperties"
][
"blowingAgents"
][
"CO2"
][
"solubilityModel"
]))
137
f.write(
'{0:.3g} {1:3g}\n'
.format(\
138
inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"solubility"
],\
139
inputs[
"physicalProperties"
][
"blowingAgents"
][
"CO2"
][
"solubility"
]))
140
f.write(
'\n'
)
141
f.write(
'{0:d}\n'
.format(inputs[
"physicalProperties"
][
"polymer"
][
"viscosityModel"
]))
142
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"polymer"
][
"viscosity"
]))
143
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"polymer"
][
"maxViscosity"
]))
144
f.write(
'4.1e-8\n'
)
145
f.write(
'38.3e3\n'
)
146
f.write(
'0.85\n'
)
147
f.write(
'4e0\n'
)
148
f.write(
'-2e0\n'
)
149
f.close()
150
# prepare input for QmomKinetics
151
f=open(
"inputsQmom.in"
,
'w'
)
152
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"pressure"
]))
153
f.write(
'{0:.3g}\n'
.format(inputs[
"initialConditions"
][
"temperature"
]))
154
f.write(
'{0:.3g}\n'
.format(inputs[
"kinetics"
][
"gellingReaction"
][
"frequentialFactor"
]))
155
f.write(
'{0:.3g}\n'
.format(inputs[
"kinetics"
][
"gellingReaction"
][
"activationEnergy"
]))
156
f.write(
'{0:.3g}\n'
.format(inputs[
"initialConditions"
][
"concentrations"
][
"polyol"
]))
157
f.write(
'{0:.3g}\n'
.format(inputs[
"initialConditions"
][
"concentrations"
][
"isocyanate"
]))
158
f.write(
'{0:.3g}\n'
.format(inputs[
"initialConditions"
][
"concentrations"
][
"water"
]))
159
f.write(
'{0:.3g}\n'
.format(inputs[
"kinetics"
][
"blowingReaction"
][
"frequentialFactor"
]))
160
f.write(
'{0:.3g}\n'
.format(inputs[
"kinetics"
][
"blowingReaction"
][
"activationEnergy"
]))
161
f.write(
'8.3145\n'
)
162
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"polymer"
][
"density"
]))
163
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"density"
]))
164
f.write(
'{0:.3g}\n'
.format(inputs[
"kinetics"
][
"gellingReaction"
][
"reactionEnthalpy"
]))
165
f.write(
'{0:.3g}\n'
.format(inputs[
"kinetics"
][
"blowingReaction"
][
"reactionEnthalpy"
]))
166
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"polymer"
][
"heatCapacity"
]))
167
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"blowingAgents"
][
"CO2"
][
"heatCapacityInLiquidPhase"
]))
168
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"heatCapacityInGaseousPhase"
]))
169
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"heatCapacityInLiquidPhase"
]))
170
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"evaporationHeat"
]))
171
if
(inputs[
"physicalBlowingAgent"
]==
"pentane"
):
172
f.write(
'1\n'
)
173
elif
(inputs[
"physicalBlowingAgent"
]==
"R11"
):
174
f.write(
'2\n'
)
175
else
:
176
print
'unknown blowing agent (solubility)'
177
exit
178
f.write(
'2\n'
)
#TODO implement
179
if
(inputs[
"kinetics"
][
"kineticModel"
]==
"Baser"
):
180
f.write(
'1\n'
)
181
elif
(inputs[
"kinetics"
][
"kineticModel"
]==
"BaserRx"
):
182
f.write(
'2\n'
)
183
else
:
184
print
'kinetic model unknown in QmomKinetics'
185
exit
186
if
(inputs[
"kinetics"
][
"useDilution"
]):
187
f.write(
'1\n'
)
188
else
:
189
f.write(
'0\n'
)
190
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"blowingAgents"
][
"CO2"
][
"molarMass"
]*1e3))
191
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"molarMass"
]*1e3))
192
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"polymer"
][
"molarMassNCO"
]*1e3))
193
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"air"
][
"molarMass"
]*1e3))
194
H=inputs[
"physicalProperties"
][
"blowingAgents"
][
"CO2"
][
"solubility"
]
195
p=inputs[
"physicalProperties"
][
"pressure"
]
196
M=inputs[
"physicalProperties"
][
"blowingAgents"
][
"CO2"
][
"molarMass"
]
197
rho=inputs[
"physicalProperties"
][
"polymer"
][
"density"
]
198
f.write(
'{0:.3g}\n'
.format(H*p*M/rho))
199
c=inputs[
"initialConditions"
][
"concentrations"
][
"blowingAgents"
][
"PBL"
]
200
rho=inputs[
"physicalProperties"
][
"polymer"
][
"density"
]
201
M=inputs[
"physicalProperties"
][
"blowingAgents"
][
"PBL"
][
"molarMass"
]
202
f.write(
'{0:.3g}\n'
.format(c*M/rho))
203
c=inputs[
"initialConditions"
][
"concentrations"
][
"blowingAgents"
][
"CO2"
]
204
rho=inputs[
"physicalProperties"
][
"polymer"
][
"density"
]
205
M=inputs[
"physicalProperties"
][
"blowingAgents"
][
"CO2"
][
"molarMass"
]
206
f.write(
'{0:.3g}\n'
.format(c*M/rho))
207
f.write(
'{0:.3g}\n'
.format(inputs[
"physicalProperties"
][
"surfaceTension"
]))
208
f.write(
'{0:.3g}\n'
.format(inputs[
"initialConditions"
][
"bubbleRadiusDeviation"
]))
209
f.write(
'{0:.3g}\n'
.format(inputs[
"initialConditions"
][
"bubbleRadius"
]*2))
210
f.write(
'{0:.3g}\n'
.format(inputs[
"initialConditions"
][
"numberBubbleDensity"
]))
211
f.write(
'{0:.3g}\n'
.format(inputs[
"QmomKinetics"
][
"absoluteTolerance"
]))
212
f.write(
'{0:.3g}\n'
.format(inputs[
"QmomKinetics"
][
"relativeTolerance"
]))
213
f.write(
'{0:.3g}\n'
.format(inputs[
"QmomKinetics"
][
"timeStep"
]))
214
f.write(
'{0:.3g}\n'
.format(inputs[
"QmomKinetics"
][
"endTime"
]))
215
applications
PUfoam
foamingProcess3D
createInputs.py
Generated on Fri Jan 13 2017 16:47:17 for MoDeNa by
1.8.13