MAiNGO
functionWrapper.h
Go to the documentation of this file.
1 /**********************************************************************************
2  * Copyright (c) 2019 Process Systems Engineering (AVT.SVT), RWTH Aachen University
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License 2.0 which is available at
6  * http://www.eclipse.org/legal/epl-2.0.
7  *
8  * SPDX-License-Identifier: EPL-2.0
9  *
10  * @file functionWrapper.h
11  *
12  * @brief Wrapper to provide more convenient names for functions defined by MC++.
13  * In particular, the names are chosen for better consistency with the
14  * ones used by the ALE parser.
15  *
16  **********************************************************************************/
17 
18 #pragma once
19 
20 #include "ffunc.hpp"
21 
22 inline mc::FFVar
23 xlogx(const mc::FFVar& Var)
24 {
25  return mc::xlog(Var);
26 }
27 
28 inline mc::FFVar
29 xexpy(const mc::FFVar& y, const mc::FFVar& x)
30 {
31  return mc::expx_times_y(x, y);
32 }
33 
34 inline mc::FFVar
35 norm2(const mc::FFVar& Var1, const mc::FFVar& Var2)
36 {
37  return mc::euclidean_norm_2d(Var1, Var2);
38 }
39 
40 inline mc::FFVar
41 xabsx(const mc::FFVar& Var)
42 {
43  return mc::fabsx_times_x(Var);
44 }
45 
46 inline mc::FFVar
47 squash(const mc::FFVar& Var, const double lb, const double ub)
48 {
49  return mc::squash_node(Var, lb, ub);
50 }
51 
52 inline mc::FFVar
53 ext_antoine_psat(const mc::FFVar& T, const double p1, const double p2, const double p3, const double p4,
54  const double p5, const double p6, const double p7)
55 {
56  return mc::vapor_pressure(T, 1, p1, p2, p3, p4, p5, p6, p7);
57 }
58 
59 inline mc::FFVar
60 ext_antoine_psat(const mc::FFVar& T, const std::vector<double> p)
61 {
62  assert(p.size() == 7);
63  return mc::vapor_pressure(T, 1, p[0], p[1], p[2], p[3], p[4], p[5], p[6]);
64 }
65 
66 inline mc::FFVar
67 antoine_psat(const mc::FFVar& T, const double p1, const double p2, const double p3)
68 {
69  return mc::vapor_pressure(T, 2, p1, p2, p3);
70 }
71 
72 inline mc::FFVar
73 antoine_psat(const mc::FFVar& T, const std::vector<double> p)
74 {
75  assert(p.size() == 3);
76  return mc::vapor_pressure(T, 2, p[0], p[1], p[2]);
77 }
78 
79 inline mc::FFVar
80 wagner_psat(const mc::FFVar& Var, const double p1, const double p2, const double p3, const double p4, const double Tc, const double p6)
81 {
82  return mc::vapor_pressure(Var, 3, p1, p2, p3, p4, Tc, p6);
83 }
84 
85 inline mc::FFVar
86 wagner_psat(const mc::FFVar& T, const std::vector<double> p)
87 {
88  assert(p.size() == 6);
89  return mc::vapor_pressure(T, 3, p[0], p[1], p[2], p[3], p[4], p[5]);
90 }
91 
92 inline mc::FFVar
93 ik_cape_psat(const mc::FFVar& T, const double p1, const double p2, const double p3, const double p4,
94  const double p5, const double p6, const double p7, const double p8, const double p9, const double p10)
95 {
96 
97  return mc::vapor_pressure(T, 4, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
98 }
99 
100 inline mc::FFVar
101 ik_cape_psat(const mc::FFVar& T, const std::vector<double> p)
102 {
103  assert(p.size() == 10);
104  return mc::vapor_pressure(T, 4, p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7], p[8], p[9]);
105 }
106 
107 inline mc::FFVar
108 antoine_tsat(const mc::FFVar& T, const double p1, const double p2, const double p3)
109 {
110  return mc::saturation_temperature(T, 2, p1, p2, p3);
111 }
112 
113 inline mc::FFVar
114 antoine_tsat(const mc::FFVar& T, const std::vector<double> p)
115 {
116  assert(p.size() == 3);
117  return mc::saturation_temperature(T, 2, p[0], p[1], p[2]);
118 }
119 
120 inline mc::FFVar
121 aspen_hig(const mc::FFVar& T, const double T0, const double p1, const double p2, const double p3, const double p4,
122  const double p5, const double p6)
123 {
124  return mc::ideal_gas_enthalpy(T, T0, 1, p1, p2, p3, p4, p5, p6);
125 }
126 
127 inline mc::FFVar
128 aspen_hig(const mc::FFVar& T, const double T0, const std::vector<double> p)
129 {
130  assert(p.size() == 6);
131  return mc::ideal_gas_enthalpy(T, T0, 1, p[0], p[1], p[2], p[3], p[4], p[5]);
132 }
133 
134 inline mc::FFVar
135 nasa9_hig(const mc::FFVar& T, const double T0, const double p1, const double p2, const double p3, const double p4,
136  const double p5, const double p6, const double p7)
137 {
138  return mc::ideal_gas_enthalpy(T, T0, 2, p1, p2, p3, p4, p5, p6, p7);
139 }
140 
141 inline mc::FFVar
142 nasa9_hig(const mc::FFVar& T, const double T0, const std::vector<double> p)
143 {
144  assert(p.size() == 7);
145  return mc::ideal_gas_enthalpy(T, T0, 2, p[0], p[1], p[2], p[3], p[4], p[5], p[6]);
146 }
147 
148 inline mc::FFVar
149 dippr107_hig(const mc::FFVar& T, const double T0, const double p1, const double p2, const double p3, const double p4,
150  const double p5)
151 {
152  return mc::ideal_gas_enthalpy(T, T0, 3, p1, p2, p3, p4, p5);
153 }
154 
155 inline mc::FFVar
156 dippr107_hig(const mc::FFVar& T, const double T0, const std::vector<double> p)
157 {
158  assert(p.size() == 5);
159  return mc::ideal_gas_enthalpy(T, T0, 3, p[0], p[1], p[2], p[3], p[4]);
160 }
161 
162 inline mc::FFVar
163 dippr127_hig(const mc::FFVar& T, const double T0, const double p1, const double p2, const double p3, const double p4,
164  const double p5, const double p6, const double p7)
165 {
166  return mc::ideal_gas_enthalpy(T, T0, 4, p1, p2, p3, p4, p5, p6, p7);
167 }
168 
169 inline mc::FFVar
170 dippr127_hig(const mc::FFVar& T, const double T0, const std::vector<double> p)
171 {
172  assert(p.size() == 7);
173  return mc::ideal_gas_enthalpy(T, T0, 4, p[0], p[1], p[2], p[3], p[4], p[5], p[6]);
174 }
175 
176 inline mc::FFVar
177 watson_dhvap(const mc::FFVar& T, const double Tc, const double a, const double b, const double T1,
178  const double dHT1)
179 {
180  return mc::enthalpy_of_vaporization(T, 1, Tc, a, b, T1, dHT1);
181 }
182 
183 inline mc::FFVar
184 watson_dhvap(const mc::FFVar& T, const std::vector<double> p)
185 {
186  assert(p.size() == 5);
187  return mc::enthalpy_of_vaporization(T, 1, p[0], p[1], p[2], p[3], p[4]);
188 }
189 
190 inline mc::FFVar
191 dippr106_dhvap(const mc::FFVar& T, const double Tc, const double p1, const double p2, const double p3,
192  const double p4, const double p5)
193 {
194  return mc::enthalpy_of_vaporization(T, 2, Tc, p1, p2, p3, p4, p5);
195 }
196 
197 inline mc::FFVar
198 dippr106_dhvap(const mc::FFVar& T, const std::vector<double> p)
199 {
200  assert(p.size() == 6);
201  return mc::enthalpy_of_vaporization(T, 2, p[0], p[1], p[2], p[3], p[4], p[5]);
202 }
203 
204 
205 inline mc::FFVar
206 nrtl_tau(const mc::FFVar& T, const std::vector<double> p)
207 {
208  assert(p.size() == 4);
209  return mc::nrtl_tau(T, p[0], p[1], p[2], p[3]);
210 }
211 
212 inline mc::FFVar
213 nrtl_dtau(const mc::FFVar& T, const std::vector<double> p)
214 {
215  assert(p.size() == 3);
216  return mc::nrtl_dtau(T, p[0], p[1], p[2]);
217 }
218 
219 inline mc::FFVar
220 nrtl_g(const mc::FFVar& T, const double a, const double b, const double e, const double f, const double alpha)
221 {
222  return mc::nrtl_G(T, a, b, e, f, alpha);
223 }
224 
225 inline mc::FFVar
226 nrtl_g(const mc::FFVar& T, const std::vector<double> p)
227 {
228  assert(p.size() == 5);
229  return mc::nrtl_G(T, p[0], p[1], p[2], p[3], p[4]);
230 }
231 
232 inline mc::FFVar
233 nrtl_gtau(const mc::FFVar& T, const double a, const double b, const double e, const double f, const double alpha)
234 {
235  return mc::nrtl_Gtau(T, a, b, e, f, alpha);
236 }
237 
238 inline mc::FFVar
239 nrtl_gtau(const mc::FFVar& T, const std::vector<double> p)
240 {
241  assert(p.size() == 5);
242  return mc::nrtl_Gtau(T, p[0], p[1], p[2], p[3], p[4]);
243 }
244 
245 inline mc::FFVar
246 nrtl_gdtau(const mc::FFVar& Var, const double a, const double b, const double e, const double f, const double alpha)
247 {
248  return mc::nrtl_Gdtau(Var, a, b, e, f, alpha);
249 }
250 
251 inline mc::FFVar
252 nrtl_gdtau(const mc::FFVar& Var, const std::vector<double> p)
253 {
254  assert(p.size() == 5);
255  return mc::nrtl_Gdtau(Var, p[0], p[1], p[2], p[3], p[4]);
256 }
257 
258 inline mc::FFVar
259 nrtl_dgtau(const mc::FFVar& Var, const double a, const double b, const double e, const double f, const double alpha)
260 {
261  return mc::nrtl_dGtau(Var, a, b, e, f, alpha);
262 }
263 
264 inline mc::FFVar
265 nrtl_dgtau(const mc::FFVar& Var, const std::vector<double> p)
266 {
267  assert(p.size() == 5);
268  return mc::nrtl_dGtau(Var, p[0], p[1], p[2], p[3], p[4]);
269 }
270 
271 inline mc::FFVar
272 schroeder_ethanol_p(const mc::FFVar& Var)
273 {
274  return mc::p_sat_ethanol_schroeder(Var);
275 }
276 
277 inline mc::FFVar
278 schroeder_ethanol_rhovap(const mc::FFVar& Var)
279 {
280  return mc::rho_vap_sat_ethanol_schroeder(Var);
281 }
282 
283 inline mc::FFVar
284 schroeder_ethanol_rholiq(const mc::FFVar& Var)
285 {
286  return mc::rho_liq_sat_ethanol_schroeder(Var);
287 }
288 
289 inline mc::FFVar
290 cost_turton(const mc::FFVar& Var, const double p1, const double p2, const double p3)
291 {
292  return mc::cost_function(Var, 1, p1, p2, p3);
293 }
294 
295 inline mc::FFVar
296 cost_turton(const mc::FFVar& Var, const std::vector<double> p)
297 {
298  assert(p.size() == 3);
299  return mc::cost_function(Var, 1, p[0], p[1], p[2]);
300 }
301 
302 inline mc::FFVar
303 covar_matern_1(const mc::FFVar& Var)
304 {
305  return mc::covariance_function(Var, 1);
306 }
307 
308 inline mc::FFVar
309 covar_matern_3(const mc::FFVar& Var)
310 {
311  return mc::covariance_function(Var, 2);
312 }
313 
314 inline mc::FFVar
315 covar_matern_5(const mc::FFVar& Var)
316 {
317  return mc::covariance_function(Var, 3);
318 }
319 
320 inline mc::FFVar
321 covar_sqrexp(const mc::FFVar& Var)
322 {
323  return mc::covariance_function(Var, 4);
324 }
325 
326 inline mc::FFVar
327 gpdf(const mc::FFVar& Var)
328 {
329  return mc::gaussian_probability_density_function(Var);
330 }
mc::FFVar norm2(const mc::FFVar &Var1, const mc::FFVar &Var2)
Definition: functionWrapper.h:35
mc::FFVar xexpy(const mc::FFVar &y, const mc::FFVar &x)
Definition: functionWrapper.h:29
mc::FFVar covar_matern_1(const mc::FFVar &Var)
Definition: functionWrapper.h:303
mc::FFVar nrtl_gdtau(const mc::FFVar &Var, const double a, const double b, const double e, const double f, const double alpha)
Definition: functionWrapper.h:246
mc::FFVar schroeder_ethanol_rholiq(const mc::FFVar &Var)
Definition: functionWrapper.h:284
mc::FFVar covar_sqrexp(const mc::FFVar &Var)
Definition: functionWrapper.h:321
mc::FFVar Var
Definition: aleModel.h:28
mc::FFVar ext_antoine_psat(const mc::FFVar &T, const double p1, const double p2, const double p3, const double p4, const double p5, const double p6, const double p7)
Definition: functionWrapper.h:53
mc::FFVar schroeder_ethanol_p(const mc::FFVar &Var)
Definition: functionWrapper.h:272
mc::FFVar dippr107_hig(const mc::FFVar &T, const double T0, const double p1, const double p2, const double p3, const double p4, const double p5)
Definition: functionWrapper.h:149
mc::FFVar nrtl_gtau(const mc::FFVar &T, const double a, const double b, const double e, const double f, const double alpha)
Definition: functionWrapper.h:233
mc::FFVar ik_cape_psat(const mc::FFVar &T, const double p1, const double p2, const double p3, const double p4, const double p5, const double p6, const double p7, const double p8, const double p9, const double p10)
Definition: functionWrapper.h:93
mc::FFVar nrtl_dgtau(const mc::FFVar &Var, const double a, const double b, const double e, const double f, const double alpha)
Definition: functionWrapper.h:259
mc::FFVar covar_matern_3(const mc::FFVar &Var)
Definition: functionWrapper.h:309
mc::FFVar xlogx(const mc::FFVar &Var)
Definition: functionWrapper.h:23
mc::FFVar cost_turton(const mc::FFVar &Var, const double p1, const double p2, const double p3)
Definition: functionWrapper.h:290
mc::FFVar dippr127_hig(const mc::FFVar &T, const double T0, const double p1, const double p2, const double p3, const double p4, const double p5, const double p6, const double p7)
Definition: functionWrapper.h:163
mc::FFVar nrtl_g(const mc::FFVar &T, const double a, const double b, const double e, const double f, const double alpha)
Definition: functionWrapper.h:220
mc::FFVar nrtl_tau(const mc::FFVar &T, const std::vector< double > p)
Definition: functionWrapper.h:206
mc::FFVar nrtl_dtau(const mc::FFVar &T, const std::vector< double > p)
Definition: functionWrapper.h:213
mc::FFVar covar_matern_5(const mc::FFVar &Var)
Definition: functionWrapper.h:315
mc::FFVar schroeder_ethanol_rhovap(const mc::FFVar &Var)
Definition: functionWrapper.h:278
mc::FFVar xabsx(const mc::FFVar &Var)
Definition: functionWrapper.h:41
mc::FFVar nasa9_hig(const mc::FFVar &T, const double T0, const double p1, const double p2, const double p3, const double p4, const double p5, const double p6, const double p7)
Definition: functionWrapper.h:135
mc::FFVar dippr106_dhvap(const mc::FFVar &T, const double Tc, const double p1, const double p2, const double p3, const double p4, const double p5)
Definition: functionWrapper.h:191
mc::FFVar aspen_hig(const mc::FFVar &T, const double T0, const double p1, const double p2, const double p3, const double p4, const double p5, const double p6)
Definition: functionWrapper.h:121
mc::FFVar squash(const mc::FFVar &Var, const double lb, const double ub)
Definition: functionWrapper.h:47
mc::FFVar watson_dhvap(const mc::FFVar &T, const double Tc, const double a, const double b, const double T1, const double dHT1)
Definition: functionWrapper.h:177
mc::FFVar antoine_psat(const mc::FFVar &T, const double p1, const double p2, const double p3)
Definition: functionWrapper.h:67
mc::FFVar wagner_psat(const mc::FFVar &Var, const double p1, const double p2, const double p3, const double p4, const double Tc, const double p6)
Definition: functionWrapper.h:80
mc::FFVar antoine_tsat(const mc::FFVar &T, const double p1, const double p2, const double p3)
Definition: functionWrapper.h:108
mc::FFVar gpdf(const mc::FFVar &Var)
Definition: functionWrapper.h:327