MoDeNa
1.0
Software framework facilitating sequential multi-scale modelling
fullerEtAlDiffusion.py
1
31
32
39
40
from
modena
import
CFunction, IndexSet, ForwardMappingModel
41
import
modena.Strategy
as
Strategy
42
43
species = IndexSet(
44
name=
'species'
,
45
names= [
'H2O'
,
'N2'
,
'SO2'
]
46
)
47
48
49
f = CFunction(
50
inputs={
51
'T'
: {
'min'
: 0,
'max'
: 9e99 },
52
'p'
: {
'min'
: 0,
'max'
: 9e99 },
53
},
54
outputs={
55
'D[A]'
: {
'min'
: 0,
'max'
: 9e99,
'argPos'
: 0 },
56
},
57
parameters={
58
'W[A]'
: {
'min'
: 0,
'max'
: 9e99,
'argPos'
: 0 },
59
'V[A]'
: {
'min'
: 0,
'max'
: 9e99,
'argPos'
: 1 },
60
'W[B]'
: {
'min'
: 0,
'max'
: 9e99,
'argPos'
: 2 },
61
'V[B]'
: {
'min'
: 0,
'max'
: 9e99,
'argPos'
: 3 },
62
},
63
indices={
64
'A'
: species,
65
'B'
: species,
66
},
67
Ccode=
'''
68
#include "modena.h"
69
#include "math.h"
70
71
void fullerEtAlDiffusion
72
(
73
const modena_model_t* model,
74
const double* inputs,
75
double *outputs
76
)
77
{
78
{% block variables %}{% endblock %}
79
80
const double WA = parameters[0];
81
const double VA = parameters[1];
82
const double WB = parameters[2];
83
const double VB = parameters[3];
84
85
outputs[0] = 1.011e-4*pow(T, 1.75)*pow(1.0/WA + 1.0/WB, 1.0/2.0);
86
outputs[0] /= p*(pow(pow(VA, 1.0/3.0) + pow(VB, 1.0/3.0), 2.0));
87
}
88
'''
,
89
)
90
91
m = ForwardMappingModel(
92
_id=
'fullerEtAlDiffusion[A=H2O,B=N2]'
,
93
surrogateFunction= f,
94
substituteModels= [ ],
95
parameters= [ 16, 9.44, 14, 11.38 ],
96
)
Strategy
examples
MoDeNaModels
fullerEtAlDiffusion
fullerEtAlDiffusion.py
Generated on Fri Jan 13 2017 16:47:19 for MoDeNa by
1.8.13