MoDeNa  1.0
Software framework facilitating sequential multi-scale modelling
idealGas.py
1 
31 
32 
39 
40 import os
41 import modena
42 from modena import ForwardMappingModel, BackwardMappingModel, SurrogateModel, CFunction, ModenaFireTask
43 import modena.Strategy as Strategy
44 from fireworks import Firework, Workflow, FWAction
45 from fireworks.utilities.fw_utilities import explicit_serialize
46 
47 
48 f = CFunction(
49  Ccode= '''
50 #include "modena.h"
51 #include "math.h"
52 
53 void idealGas
54 (
55  const modena_model_t* model,
56  const double* inputs,
57  double *outputs
58 )
59 {
60  {% block variables %}{% endblock %}
61 
62  const double R = parameters[0];
63 
64  outputs[0] = p0/R/T0;
65 }
66 ''',
67  # These are global bounds for the function
68  inputs={
69  'p0': { 'min': 0, 'max': 9e99 },
70  'T0': { 'min': 0, 'max': 9e99 },
71  },
72  outputs={
73  'rho0': { 'min': 9e99, 'max': -9e99, 'argPos': 0 },
74  },
75  parameters={
76  'R': { 'min': 0.0, 'max': 9e99, 'argPos': 0 } },
77 )
78 
79 m = ForwardMappingModel(
80  _id= 'idealGas',
81  surrogateFunction= f,
82  substituteModels= [ ],
83  parameters= [ 287.0 ],
84 )
85