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