8.0
general documentation
Loading...
Searching...
No Matches
cs_equation_param.h
Go to the documentation of this file.
1#ifndef __CS_EQUATION_PARAM_H__
2#define __CS_EQUATION_PARAM_H__
3
4/*============================================================================
5 * Functions related to the structure cs_equation_param_t storing the settings
6 * related to an equation.
7 *============================================================================*/
8
9/*
10 This file is part of code_saturne, a general-purpose CFD tool.
11
12 Copyright (C) 1998-2023 EDF S.A.
13
14 This program is free software; you can redistribute it and/or modify it under
15 the terms of the GNU General Public License as published by the Free Software
16 Foundation; either version 2 of the License, or (at your option) any later
17 version.
18
19 This program is distributed in the hope that it will be useful, but WITHOUT
20 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
21 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
22 details.
23
24 You should have received a copy of the GNU General Public License along with
25 this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
26 Street, Fifth Floor, Boston, MA 02110-1301, USA.
27*/
28
29/*----------------------------------------------------------------------------
30 * Local headers
31 *----------------------------------------------------------------------------*/
32
33#include "cs_advection_field.h"
34#include "cs_enforcement.h"
35#include "cs_hodge.h"
36#include "cs_iter_algo.h"
37#include "cs_param_cdo.h"
38#include "cs_param_sles.h"
39#include "cs_property.h"
40#include "cs_xdef.h"
41
42/*----------------------------------------------------------------------------*/
43
45
46/*============================================================================
47 * Macro definitions
48 *============================================================================*/
49
95
96#define CS_EQUATION_LOCKED (1 << 0) /* 1 */
97#define CS_EQUATION_UNSTEADY (1 << 1) /* 2 */
98#define CS_EQUATION_CONVECTION (1 << 2) /* 4 */
99#define CS_EQUATION_DIFFUSION (1 << 3) /* 8 */
100#define CS_EQUATION_CURLCURL (1 << 4) /* 16 */
101#define CS_EQUATION_GRADDIV (1 << 5) /* 32 */
102#define CS_EQUATION_REACTION (1 << 6) /* 64 */
103#define CS_EQUATION_FORCE_VALUES (1 << 7) /* 128 */
104#define CS_EQUATION_INSIDE_SYSTEM (1 << 8) /* 256 */
105#define CS_EQUATION_BUILD_HOOK (1 << 9) /* 512 */
106#define CS_EQUATION_USER_TRIGGERED (1 << 10) /* 1024 */
107
108
131
132#define CS_EQUATION_POST_BALANCE (1 << 0) /* 1 */
133#define CS_EQUATION_POST_PECLET (1 << 1) /* 2 */
134#define CS_EQUATION_POST_UPWIND_COEF (1 << 2) /* 4 */
135#define CS_EQUATION_POST_NORMAL_FLUX (1 << 3) /* 8 */
136
138
139/*============================================================================
140 * Type definitions
141 *============================================================================*/
142
170
184
185/*----------------------------------------------------------------------------*/
186
191
192typedef struct {
193
198
201 int dim;
202
210
211 union {
214 };
215
220
222
227
229
230 /* Numerical settings */
231
234
238
240
452
453 int iconv;
454 int istat;
457 int idiff;
472 double thetav; /* TODO: merge with theta */
473 double blencv;
474 double blend_st;
475 double epsilo;
476 double epsrsm;
477 double epsrgr;
478 double climgr;
479 double relaxv;
480
515
519
523
535
538
550
552
568
573
585
588
601
604
617
620
658
666
685
689
703
706
723
726
744
747
782
785
790
799
801
803
805
806/*----------------------------------------------------------------------------*/
807
1210
1254
1255/*============================================================================
1256 * Static inline public function prototypes
1257 *============================================================================*/
1258
1259/*----------------------------------------------------------------------------*/
1266/*----------------------------------------------------------------------------*/
1267
1268static inline void
1270 cs_flag_t flag)
1271{
1272 assert(eqp != NULL);
1273 eqp->flag |= flag;
1274}
1275
1276/*----------------------------------------------------------------------------*/
1284/*----------------------------------------------------------------------------*/
1285
1286static inline bool
1288{
1289 assert(eqp != NULL);
1290 if (eqp->flag & CS_EQUATION_DIFFUSION)
1291 return true;
1292 else
1293 return false;
1294}
1295
1296/*----------------------------------------------------------------------------*/
1304/*----------------------------------------------------------------------------*/
1305
1306static inline bool
1308{
1309 assert(eqp != NULL);
1310 if (eqp->flag & CS_EQUATION_CURLCURL)
1311 return true;
1312 else
1313 return false;
1314}
1315
1316/*----------------------------------------------------------------------------*/
1324/*----------------------------------------------------------------------------*/
1325
1326static inline bool
1328{
1329 assert(eqp != NULL);
1330 if (eqp->flag & CS_EQUATION_GRADDIV)
1331 return true;
1332 else
1333 return false;
1334}
1335
1336/*----------------------------------------------------------------------------*/
1344/*----------------------------------------------------------------------------*/
1345
1346static inline bool
1348{
1349 assert(eqp != NULL);
1350 if (eqp->flag & CS_EQUATION_CONVECTION)
1351 return true;
1352 else
1353 return false;
1354}
1355
1356/*----------------------------------------------------------------------------*/
1364/*----------------------------------------------------------------------------*/
1365
1366static inline bool
1368{
1369 assert(eqp != NULL);
1370 if (eqp->flag & CS_EQUATION_REACTION)
1371 return true;
1372 else
1373 return false;
1374}
1375
1376/*----------------------------------------------------------------------------*/
1384/*----------------------------------------------------------------------------*/
1385
1386static inline bool
1388{
1389 assert(eqp != NULL);
1390 if (eqp->flag & CS_EQUATION_UNSTEADY)
1391 return true;
1392 else
1393 return false;
1394}
1395
1396/*----------------------------------------------------------------------------*/
1404/*----------------------------------------------------------------------------*/
1405
1406static inline bool
1408{
1409 assert(eqp != NULL);
1410 if (eqp->n_source_terms > 0)
1411 return true;
1412 else
1413 return false;
1414}
1415
1416/*----------------------------------------------------------------------------*/
1425/*----------------------------------------------------------------------------*/
1426
1427static inline bool
1429{
1430 assert(eqp != NULL);
1431 if (eqp->flag & CS_EQUATION_FORCE_VALUES)
1432 return true;
1433 else
1434 return false;
1435}
1436
1437/*----------------------------------------------------------------------------*/
1446/*----------------------------------------------------------------------------*/
1447
1448static inline bool
1450{
1451 assert(eqp != NULL);
1452 if (eqp->flag & CS_EQUATION_CONVECTION) {
1455 return true;
1456 else
1457 return false;
1458 }
1459 else
1460 return false;
1461}
1462
1463/*----------------------------------------------------------------------------*/
1472/*----------------------------------------------------------------------------*/
1473
1474static inline bool
1476{
1477 assert(eqp != NULL);
1478 if (eqp->flag & CS_EQUATION_BUILD_HOOK)
1479 return true;
1480 else
1481 return false;
1482}
1483
1484/*----------------------------------------------------------------------------*/
1495/*----------------------------------------------------------------------------*/
1496
1497static inline bool
1499 const char *name)
1500{
1501 if (eqp == NULL)
1502 return false;
1503 if (eqp->name == NULL)
1504 return false;
1505 if (strcmp(eqp->name, name) == 0)
1506 return true;
1507 else
1508 return false;
1509}
1510
1511/*============================================================================
1512 * Public function prototypes
1513 *============================================================================*/
1514
1515/*----------------------------------------------------------------------------*/
1526/*----------------------------------------------------------------------------*/
1527
1529cs_equation_param_create(const char *name,
1530 cs_equation_type_t type,
1531 int dim,
1532 cs_param_bc_type_t default_bc);
1533
1534/*----------------------------------------------------------------------------*/
1547/*----------------------------------------------------------------------------*/
1548
1549inline static cs_equation_param_t *
1551 cs_equation_type_t type,
1552 int dim,
1553 cs_param_bc_type_t default_bc)
1554{
1555 return cs_equation_param_create(name, type, dim, default_bc);
1556}
1557
1558/*----------------------------------------------------------------------------*/
1567/*----------------------------------------------------------------------------*/
1568
1569void
1572 bool copy_fld_id);
1573
1574/*----------------------------------------------------------------------------*/
1583/*----------------------------------------------------------------------------*/
1584
1585void
1587 cs_equation_param_t *dst);
1588
1589/*----------------------------------------------------------------------------*/
1600/*----------------------------------------------------------------------------*/
1601
1602inline static void
1605 bool copy_fid)
1606{
1607 cs_equation_param_copy_from(ref, dst, copy_fid);
1608}
1609
1610/*----------------------------------------------------------------------------*/
1622/*----------------------------------------------------------------------------*/
1623
1624void
1626
1627/*----------------------------------------------------------------------------*/
1641/*----------------------------------------------------------------------------*/
1642
1643inline static void
1648
1649/*----------------------------------------------------------------------------*/
1657/*----------------------------------------------------------------------------*/
1658
1661
1662/*----------------------------------------------------------------------------*/
1672/*----------------------------------------------------------------------------*/
1673
1674inline static cs_equation_param_t *
1679
1680/*----------------------------------------------------------------------------*/
1689/*----------------------------------------------------------------------------*/
1690
1691void
1694 const char *keyval);
1695
1696/*----------------------------------------------------------------------------*/
1707/*----------------------------------------------------------------------------*/
1708
1709inline static void
1712 const char *keyval)
1713{
1714 cs_equation_param_set(eqp, key, keyval);
1715}
1716
1717/*----------------------------------------------------------------------------*/
1725/*----------------------------------------------------------------------------*/
1726
1727void
1729
1730/*----------------------------------------------------------------------------*/
1736/*----------------------------------------------------------------------------*/
1737
1738void
1740
1741/*----------------------------------------------------------------------------*/
1748/*----------------------------------------------------------------------------*/
1749
1750void
1752
1753/*----------------------------------------------------------------------------*/
1761/*----------------------------------------------------------------------------*/
1762
1763void
1765
1766/*----------------------------------------------------------------------------*/
1772/*----------------------------------------------------------------------------*/
1773
1774void
1776
1777/*----------------------------------------------------------------------------*/
1786/*----------------------------------------------------------------------------*/
1787
1788bool
1790
1791/*----------------------------------------------------------------------------*/
1806/*----------------------------------------------------------------------------*/
1807
1808cs_xdef_t *
1810 const char *z_name,
1811 cs_real_t *val);
1812
1813/*----------------------------------------------------------------------------*/
1829/*----------------------------------------------------------------------------*/
1830
1831cs_xdef_t *
1833 const char *z_name,
1834 double quantity);
1835
1836/*----------------------------------------------------------------------------*/
1852/*----------------------------------------------------------------------------*/
1853
1854cs_xdef_t *
1856 const char *z_name,
1857 cs_analytic_func_t *analytic,
1858 void *input);
1859
1860/*----------------------------------------------------------------------------*/
1876/*----------------------------------------------------------------------------*/
1877
1878cs_xdef_t *
1880 const char *z_name,
1881 cs_flag_t loc_flag,
1882 cs_dof_func_t *func,
1883 void *input);
1884
1885/*----------------------------------------------------------------------------*/
1894/*----------------------------------------------------------------------------*/
1895
1896void
1898 cs_xdef_t *xdef);
1899
1900/*----------------------------------------------------------------------------*/
1913/*----------------------------------------------------------------------------*/
1914
1915cs_xdef_t *
1917 const cs_param_bc_type_t bc_type,
1918 const char *z_name,
1919 cs_real_t *values);
1920
1921/*----------------------------------------------------------------------------*/
1942/*----------------------------------------------------------------------------*/
1943
1944cs_xdef_t *
1946 const cs_param_bc_type_t bc_type,
1947 const char *z_name,
1948 cs_flag_t loc,
1949 cs_real_t *array,
1950 bool is_owner,
1951 bool full_length);
1952
1953/*----------------------------------------------------------------------------*/
1966/*----------------------------------------------------------------------------*/
1967
1968cs_xdef_t *
1970 const cs_param_bc_type_t bc_type,
1971 const char *z_name,
1972 cs_field_t *field);
1973
1974/*----------------------------------------------------------------------------*/
1989/*----------------------------------------------------------------------------*/
1990
1991cs_xdef_t *
1993 const cs_param_bc_type_t bc_type,
1994 const char *z_name,
1995 cs_analytic_func_t *analytic,
1996 void *input);
1997
1998/*----------------------------------------------------------------------------*/
2014/*----------------------------------------------------------------------------*/
2015
2016cs_xdef_t *
2018 const cs_param_bc_type_t bc_type,
2019 const char *z_name,
2020 cs_flag_t loc_flag,
2021 cs_dof_func_t *func,
2022 void *input);
2023
2024/*----------------------------------------------------------------------------*/
2035/*----------------------------------------------------------------------------*/
2036
2037cs_xdef_t *
2039 const char *z_name);
2040
2041/*----------------------------------------------------------------------------*/
2053/*----------------------------------------------------------------------------*/
2054
2055void
2057 const char *z_name);
2058
2059/*----------------------------------------------------------------------------*/
2068/*----------------------------------------------------------------------------*/
2069
2070void
2072 const char *z_name);
2073
2074/*----------------------------------------------------------------------------*/
2084/*----------------------------------------------------------------------------*/
2085
2086void
2088 cs_property_t *property);
2089
2090/*----------------------------------------------------------------------------*/
2099/*----------------------------------------------------------------------------*/
2100
2101void
2103 cs_property_t *property,
2104 int inversion);
2105
2106/*----------------------------------------------------------------------------*/
2114/*----------------------------------------------------------------------------*/
2115
2116void
2118 cs_property_t *property);
2119
2120/*----------------------------------------------------------------------------*/
2129/*----------------------------------------------------------------------------*/
2130
2131void
2133 cs_property_t *property);
2134
2135/*----------------------------------------------------------------------------*/
2143/*----------------------------------------------------------------------------*/
2144
2145void
2147 cs_adv_field_t *adv_field);
2148
2149/*----------------------------------------------------------------------------*/
2156/*----------------------------------------------------------------------------*/
2157
2158void
2160 cs_property_t *property);
2161
2162/*----------------------------------------------------------------------------*/
2172/*----------------------------------------------------------------------------*/
2173
2174int
2176 cs_property_t *property);
2177
2178/*----------------------------------------------------------------------------*/
2190/*----------------------------------------------------------------------------*/
2191
2192cs_xdef_t *
2194 const char *z_name,
2195 cs_real_t *val);
2196
2197/*----------------------------------------------------------------------------*/
2210/*----------------------------------------------------------------------------*/
2211
2212cs_xdef_t *
2214 const char *z_name,
2215 cs_analytic_func_t *func,
2216 void *input);
2217
2218/*----------------------------------------------------------------------------*/
2232/*----------------------------------------------------------------------------*/
2233
2234cs_xdef_t *
2236 const char *z_name,
2237 cs_flag_t loc_flag,
2238 cs_dof_func_t *func,
2239 void *input);
2240
2241/*----------------------------------------------------------------------------*/
2261/*----------------------------------------------------------------------------*/
2262
2263cs_xdef_t *
2265 const char *z_name,
2266 cs_flag_t loc,
2267 cs_real_t *array,
2268 bool is_owner,
2269 bool full_length);
2270
2271/*----------------------------------------------------------------------------*/
2283/*----------------------------------------------------------------------------*/
2284
2285cs_xdef_t *
2287 const char *z_name,
2288 double *val);
2289
2290/*----------------------------------------------------------------------------*/
2303/*----------------------------------------------------------------------------*/
2304
2305cs_xdef_t *
2307 const char *z_name,
2308 double *quantity);
2309
2310/*----------------------------------------------------------------------------*/
2323/*----------------------------------------------------------------------------*/
2324
2325cs_xdef_t *
2327 const char *z_name,
2328 cs_analytic_func_t *func,
2329 void *input);
2330
2331/*----------------------------------------------------------------------------*/
2345/*----------------------------------------------------------------------------*/
2346
2347cs_xdef_t *
2349 const char *z_name,
2350 cs_flag_t loc_flag,
2351 cs_dof_func_t *func,
2352 void *input);
2353
2354/*----------------------------------------------------------------------------*/
2373/*----------------------------------------------------------------------------*/
2374
2377 cs_lnum_t n_vertices,
2378 const cs_lnum_t vertex_ids[],
2379 const cs_real_t ref_value[],
2380 const cs_real_t vtx_values[]);
2381
2382/*----------------------------------------------------------------------------*/
2401/*----------------------------------------------------------------------------*/
2402
2405 cs_lnum_t n_edges,
2406 const cs_lnum_t edge_ids[],
2407 const cs_real_t ref_value[],
2408 const cs_real_t edge_values[]);
2409
2410/*----------------------------------------------------------------------------*/
2429/*----------------------------------------------------------------------------*/
2430
2433 cs_lnum_t n_faces,
2434 const cs_lnum_t face_ids[],
2435 const cs_real_t ref_value[],
2436 const cs_real_t face_values[]);
2437
2438/*----------------------------------------------------------------------------*/
2455/*----------------------------------------------------------------------------*/
2456
2459 cs_lnum_t n_cells,
2460 const cs_lnum_t elt_ids[],
2461 const cs_real_t ref_value[],
2462 const cs_real_t cell_values[]);
2463
2464/*----------------------------------------------------------------------------*/
2483/*----------------------------------------------------------------------------*/
2484
2487 int enforcement_id,
2488 cs_lnum_t n_cells,
2489 const cs_lnum_t cell_ids[],
2490 const cs_real_t ref_value[],
2491 const cs_real_t cell_values[]);
2492
2493/*----------------------------------------------------------------------------*/
2494
2496
2497#endif /* __CS_EQUATION_PARAM_H__ */
#define restrict
Definition cs_defs.h:139
#define BEGIN_C_DECLS
Definition cs_defs.h:509
double cs_real_t
Floating-point value.
Definition cs_defs.h:319
#define END_C_DECLS
Definition cs_defs.h:510
int cs_lnum_t
local mesh entity id
Definition cs_defs.h:313
unsigned short int cs_flag_t
Definition cs_defs.h:321
void cs_equation_param_set(cs_equation_param_t *eqp, cs_equation_key_t key, const char *keyval)
Set a parameter attached to a keyname in a cs_equation_param_t structure.
Definition cs_equation_param.c:1819
int cs_equation_add_reaction(cs_equation_param_t *eqp, cs_property_t *property)
Associate a new term related to the reaction operator for the equation associated to the given cs_equ...
Definition cs_equation_param.c:3267
void cs_equation_add_graddiv(cs_equation_param_t *eqp, cs_property_t *property)
Associate a new term related to the grad-div operator for the equation associated to the given cs_equ...
Definition cs_equation_param.c:3166
void cs_equation_param_unlock_settings(cs_equation_param_t *eqp)
Unlock settings. Be sure that is really wanted (inconsistency between the setup logging and what is u...
Definition cs_equation_param.c:1897
static void cs_equation_set_param(cs_equation_param_t *eqp, cs_equation_key_t key, const char *keyval)
Set a parameter attached to a keyname in a cs_equation_param_t structure.
Definition cs_equation_param.h:1710
cs_xdef_t * cs_equation_find_bc(cs_equation_param_t *eqp, const char *z_name)
Return pointer to existing boundary condition definition structure for the given equation param struc...
Definition cs_equation_param.c:2982
static bool cs_equation_param_has_time(const cs_equation_param_t *eqp)
Ask if the parameters of the equation needs an unsteady term.
Definition cs_equation_param.h:1387
void cs_equation_param_lock_settings(cs_equation_param_t *eqp)
Lock settings to prevent from unwanted modifications.
Definition cs_equation_param.c:1879
static bool cs_equation_param_has_curlcurl(const cs_equation_param_t *eqp)
Ask if the parameters of the equation needs a curl-curl term.
Definition cs_equation_param.h:1307
cs_xdef_t * cs_equation_add_bc_by_array(cs_equation_param_t *eqp, const cs_param_bc_type_t bc_type, const char *z_name, cs_flag_t loc, cs_real_t *array, bool is_owner, bool full_length)
Define and initialize a new structure to set a boundary condition related to the given equation struc...
Definition cs_equation_param.c:2634
cs_xdef_t * cs_equation_add_bc_by_analytic(cs_equation_param_t *eqp, const cs_param_bc_type_t bc_type, const char *z_name, cs_analytic_func_t *analytic, void *input)
Define and initialize a new structure to set a boundary condition related to the given equation param...
Definition cs_equation_param.c:2803
#define CS_EQUATION_CURLCURL
The term related to the curl-curl operator is needed.
Definition cs_equation_param.h:100
bool cs_equation_param_has_robin_bc(const cs_equation_param_t *eqp)
Ask if the parameter settings of the equation has requested the treatment of Robin boundary condition...
Definition cs_equation_param.c:2299
cs_xdef_t * cs_equation_add_volume_mass_injection_by_dof_func(cs_equation_param_t *eqp, const char *z_name, cs_flag_t loc_flag, cs_dof_func_t *func, void *input)
Add a new volume mass injection definition source term by initializing a cs_xdef_t structure,...
Definition cs_equation_param.c:3714
cs_enforcement_param_t * cs_equation_add_edge_dof_enforcement(cs_equation_param_t *eqp, cs_lnum_t n_edges, const cs_lnum_t edge_ids[], const cs_real_t ref_value[], const cs_real_t edge_values[])
Add an enforcement of the value of degrees of freedom located at the mesh edges. The spatial discreti...
Definition cs_equation_param.c:3847
cs_xdef_t * cs_equation_add_ic_by_value(cs_equation_param_t *eqp, const char *z_name, cs_real_t *val)
Define the initial condition for the unknown related to this equation. This definition applies to a v...
Definition cs_equation_param.c:2331
cs_xdef_t * cs_equation_add_source_term_by_array(cs_equation_param_t *eqp, const char *z_name, cs_flag_t loc, cs_real_t *array, bool is_owner, bool full_length)
Add a new source term by initializing a cs_xdef_t structure. Case of a definition by an array.
Definition cs_equation_param.c:3487
static cs_equation_param_t * cs_equation_free_param(cs_equation_param_t *eqp)
Free a cs_equation_param_t.
Definition cs_equation_param.h:1675
void cs_equation_remove_bc(cs_equation_param_t *eqp, const char *z_name)
Remove boundary condition from the given equation param structure for a given zone.
Definition cs_equation_param.c:3020
cs_xdef_t * cs_equation_add_bc_by_dof_func(cs_equation_param_t *eqp, const cs_param_bc_type_t bc_type, const char *z_name, cs_flag_t loc_flag, cs_dof_func_t *func, void *input)
Define and initialize a new structure to set a boundary condition related to the given cs_equation_pa...
Definition cs_equation_param.c:2894
cs_xdef_t * cs_equation_add_ic_by_analytic(cs_equation_param_t *eqp, const char *z_name, cs_analytic_func_t *analytic, void *input)
Define the initial condition for the unknown related to this equation. This definition applies to a v...
Definition cs_equation_param.c:2429
void cs_equation_add_sliding_condition(cs_equation_param_t *eqp, const char *z_name)
Define and initialize a new structure to set a sliding boundary condition related to the given equati...
Definition cs_equation_param.c:3066
cs_enforcement_param_t * cs_equation_add_face_dof_enforcement(cs_equation_param_t *eqp, cs_lnum_t n_faces, const cs_lnum_t face_ids[], const cs_real_t ref_value[], const cs_real_t face_values[])
Add an enforcement of the value of degrees of freedom located at the mesh faces. The spatial discreti...
Definition cs_equation_param.c:3920
#define CS_EQUATION_UNSTEADY
Unsteady term is needed.
Definition cs_equation_param.h:97
cs_xdef_t * cs_equation_add_ic_by_qov(cs_equation_param_t *eqp, const char *z_name, double quantity)
Define the initial condition for the unknown related to this equation. This definition applies to a v...
Definition cs_equation_param.c:2380
cs_equation_param_t * cs_equation_param_free(cs_equation_param_t *eqp)
Free a cs_equation_param_t.
Definition cs_equation_param.c:1795
#define CS_EQUATION_DIFFUSION
Diffusion term is needed. A scalar-/vector-valued Laplacian with div .grad.
Definition cs_equation_param.h:99
cs_xdef_t * cs_equation_add_bc_by_field(cs_equation_param_t *eqp, const cs_param_bc_type_t bc_type, const char *z_name, cs_field_t *field)
Define and initialize a new structure to set a boundary condition related to the given equation struc...
Definition cs_equation_param.c:2729
cs_xdef_t * cs_equation_add_ic_by_dof_func(cs_equation_param_t *eqp, const char *z_name, cs_flag_t loc_flag, cs_dof_func_t *func, void *input)
Define the initial condition for the unknown related to this equation. This definition applies to a v...
Definition cs_equation_param.c:2483
void cs_equation_param_set_sles(cs_equation_param_t *eqp)
Set parameters for initializing SLES structures used for the resolution of the linear system....
Definition cs_equation_param.c:1856
cs_xdef_t * cs_equation_add_volume_mass_injection_by_value(cs_equation_param_t *eqp, const char *z_name, double *val)
Add a new volume mass injection definition source term by initializing a cs_xdef_t structure,...
Definition cs_equation_param.c:3561
static bool cs_equation_param_has_graddiv(const cs_equation_param_t *eqp)
Ask if the parameters of the equation needs a grad-div term.
Definition cs_equation_param.h:1327
#define CS_EQUATION_REACTION
Reaction term is needed.
Definition cs_equation_param.h:102
cs_equation_key_t
List of available keys for setting the parameters of an equation.
Definition cs_equation_param.h:1211
@ CS_EQKEY_ITSOL_EPS
Definition cs_equation_param.h:1231
@ CS_EQKEY_HODGE_REAC_ALGO
Definition cs_equation_param.h:1229
@ CS_EQKEY_HODGE_DIFF_ALGO
Definition cs_equation_param.h:1226
@ CS_EQKEY_ITSOL_RESNORM_TYPE
Definition cs_equation_param.h:1233
@ CS_EQKEY_SOLVER_FAMILY
Definition cs_equation_param.h:1245
@ CS_EQKEY_SPACE_SCHEME
Definition cs_equation_param.h:1246
@ CS_EQKEY_SADDLE_SOLVER
Definition cs_equation_param.h:1241
@ CS_EQKEY_DOF_REDUCTION
Definition cs_equation_param.h:1224
@ CS_EQKEY_ADV_UPWIND_PORTION
Definition cs_equation_param.h:1217
@ CS_EQKEY_SADDLE_PRECOND
Definition cs_equation_param.h:1239
@ CS_EQKEY_PRECOND
Definition cs_equation_param.h:1237
@ CS_EQKEY_BC_WEAK_PENA_COEFF
Definition cs_equation_param.h:1222
@ CS_EQKEY_ITSOL_RTOL
Definition cs_equation_param.h:1235
@ CS_EQKEY_AMG_TYPE
Definition cs_equation_param.h:1218
@ CS_EQKEY_ADV_SCHEME
Definition cs_equation_param.h:1215
@ CS_EQKEY_SLES_VERBOSITY
Definition cs_equation_param.h:1244
@ CS_EQKEY_BC_ENFORCEMENT
Definition cs_equation_param.h:1219
@ CS_EQKEY_PRECOND_BLOCK_TYPE
Definition cs_equation_param.h:1238
@ CS_EQKEY_BC_STRONG_PENA_COEFF
Definition cs_equation_param.h:1221
@ CS_EQKEY_SADDLE_VERBOSITY
Definition cs_equation_param.h:1242
@ CS_EQKEY_ADV_FORMULATION
Definition cs_equation_param.h:1214
@ CS_EQKEY_DO_LUMPING
Definition cs_equation_param.h:1223
@ CS_EQKEY_ITSOL
Definition cs_equation_param.h:1230
@ CS_EQKEY_ITSOL_MAX_ITER
Definition cs_equation_param.h:1232
@ CS_EQKEY_SCHUR_APPROX
Definition cs_equation_param.h:1243
@ CS_EQKEY_EXTRA_OP
Definition cs_equation_param.h:1225
@ CS_EQKEY_BC_QUADRATURE
Definition cs_equation_param.h:1220
@ CS_EQKEY_TIME_SCHEME
Definition cs_equation_param.h:1247
@ CS_EQKEY_HODGE_TIME_ALGO
Definition cs_equation_param.h:1228
@ CS_EQKEY_ADV_STRATEGY
Definition cs_equation_param.h:1216
@ CS_EQKEY_TIME_THETA
Definition cs_equation_param.h:1248
@ CS_EQKEY_OMP_ASSEMBLY_STRATEGY
Definition cs_equation_param.h:1236
@ CS_EQKEY_ITSOL_RESTART
Definition cs_equation_param.h:1234
@ CS_EQKEY_HODGE_DIFF_COEF
Definition cs_equation_param.h:1227
@ CS_EQKEY_SADDLE_RTOL
Definition cs_equation_param.h:1240
@ CS_EQKEY_VERBOSITY
Definition cs_equation_param.h:1249
@ CS_EQKEY_N_KEYS
Definition cs_equation_param.h:1251
@ CS_EQKEY_ADV_EXTRAPOL
Definition cs_equation_param.h:1213
static bool cs_equation_param_has_implicit_advection(const cs_equation_param_t *eqp)
Ask if the parameters of the equation induces an implicit treatment of the advection term.
Definition cs_equation_param.h:1449
static bool cs_equation_param_has_internal_enforcement(const cs_equation_param_t *eqp)
Ask if the parameters of the equation has an internal enforcement of the degrees of freedom.
Definition cs_equation_param.h:1428
void cs_equation_add_curlcurl(cs_equation_param_t *eqp, cs_property_t *property, int inversion)
Associate a new term related to the curl-curl operator for the equation associated to the given cs_eq...
Definition cs_equation_param.c:3135
cs_xdef_t * cs_equation_add_source_term_by_analytic(cs_equation_param_t *eqp, const char *z_name, cs_analytic_func_t *func, void *input)
Add a new source term by initializing a cs_xdef_t structure. Case of a definition by an analytical fu...
Definition cs_equation_param.c:3358
void cs_equation_param_ensure_consistent_settings(cs_equation_param_t *eqp)
At this stage, the numerical settings should not be modified anymore by the user. One makes a last se...
Definition cs_equation_param.c:1916
static void cs_equation_clear_param(cs_equation_param_t *eqp)
Free the contents of a cs_equation_param_t.
Definition cs_equation_param.h:1644
#define CS_EQUATION_FORCE_VALUES
Add an algebraic manipulation to set the value of a given set of interior degrees of freedom.
Definition cs_equation_param.h:103
cs_xdef_t * cs_equation_add_source_term_by_val(cs_equation_param_t *eqp, const char *z_name, cs_real_t *val)
Add a new source term by initializing a cs_xdef_t structure. Case of a definition by a constant value...
Definition cs_equation_param.c:3307
void cs_equation_add_advection_scaling_property(cs_equation_param_t *eqp, cs_property_t *property)
Associate a scaling property to the advection.
Definition cs_equation_param.c:3241
void cs_equation_add_xdef_bc(cs_equation_param_t *eqp, cs_xdef_t *xdef)
Set a boundary condition from an existing cs_xdef_t structure The lifecycle of the cs_xdef_t structur...
Definition cs_equation_param.c:2534
cs_xdef_t * cs_equation_add_source_term_by_dof_func(cs_equation_param_t *eqp, const char *z_name, cs_flag_t loc_flag, cs_dof_func_t *func, void *input)
Add a new source term by initializing a cs_xdef_t structure. Case of a definition by a DoF function.
Definition cs_equation_param.c:3418
#define CS_EQUATION_BUILD_HOOK
Activate a build hook function to get a fine control of the discretization process during the cellwis...
Definition cs_equation_param.h:105
static cs_equation_param_t * cs_equation_create_param(const char *name, cs_equation_type_t type, int dim, cs_param_bc_type_t default_bc)
Create a cs_equation_param_t structure.
Definition cs_equation_param.h:1550
void cs_equation_add_advection(cs_equation_param_t *eqp, cs_adv_field_t *adv_field)
Associate a new term related to the advection operator for the equation associated to the given cs_eq...
Definition cs_equation_param.c:3217
void cs_equation_param_clear(cs_equation_param_t *eqp)
Free the contents of a cs_equation_param_t.
Definition cs_equation_param.c:1710
#define CS_EQUATION_CONVECTION
Convection term is needed.
Definition cs_equation_param.h:98
static void cs_equation_copy_param_from(const cs_equation_param_t *ref, cs_equation_param_t *dst, bool copy_fid)
Copy the settings from one cs_equation_param_t structure to another one. The name is not copied.
Definition cs_equation_param.h:1603
static bool cs_equation_param_has_sourceterm(const cs_equation_param_t *eqp)
Ask if the parameters of the equation needs a source term.
Definition cs_equation_param.h:1407
cs_enforcement_param_t * cs_equation_add_cell_enforcement(cs_equation_param_t *eqp, cs_lnum_t n_cells, const cs_lnum_t elt_ids[], const cs_real_t ref_value[], const cs_real_t cell_values[])
Add an enforcement of the value related to the degrees of freedom associated to the list of selected ...
Definition cs_equation_param.c:3989
cs_xdef_t * cs_equation_add_volume_mass_injection_by_qov(cs_equation_param_t *eqp, const char *z_name, double *quantity)
Add a new volume mass injection definition source term by initializing a cs_xdef_t structure,...
Definition cs_equation_param.c:3610
void cs_equation_param_copy_from(const cs_equation_param_t *ref, cs_equation_param_t *dst, bool copy_fld_id)
Copy the settings from one cs_equation_param_t structure to another one. The name is not copied.
Definition cs_equation_param.c:1469
cs_equation_param_t * cs_equation_param_create(const char *name, cs_equation_type_t type, int dim, cs_param_bc_type_t default_bc)
Create a cs_equation_param_t structure.
Definition cs_equation_param.c:1263
static bool cs_equation_param_has_name(cs_equation_param_t *eqp, const char *name)
Check if a cs_equation_param_t structure has its name member equal to the given name.
Definition cs_equation_param.h:1498
cs_xdef_t * cs_equation_add_bc_by_value(cs_equation_param_t *eqp, const cs_param_bc_type_t bc_type, const char *z_name, cs_real_t *values)
Define and initialize a new structure to set a boundary condition related to the given equation struc...
Definition cs_equation_param.c:2562
cs_enforcement_param_t * cs_equation_add_or_replace_cell_enforcement(cs_equation_param_t *eqp, int enforcement_id, cs_lnum_t n_cells, const cs_lnum_t cell_ids[], const cs_real_t ref_value[], const cs_real_t cell_values[])
Add a new enforcement if enforcement_id does not exist or replace it otherwise. Enforcement of the va...
Definition cs_equation_param.c:4055
cs_enforcement_param_t * cs_equation_add_vertex_dof_enforcement(cs_equation_param_t *eqp, cs_lnum_t n_vertices, const cs_lnum_t vertex_ids[], const cs_real_t ref_value[], const cs_real_t vtx_values[])
Add an enforcement of the value of degrees of freedom located at the mesh vertices....
Definition cs_equation_param.c:3776
static void cs_equation_param_set_flag(cs_equation_param_t *eqp, cs_flag_t flag)
Update the flag related to a cs_equation_param_t structure.
Definition cs_equation_param.h:1269
static bool cs_equation_param_has_diffusion(const cs_equation_param_t *eqp)
Ask if the parameters of the equation needs a diffusion term.
Definition cs_equation_param.h:1287
void cs_equation_add_time(cs_equation_param_t *eqp, cs_property_t *property)
Associate a new term related to the time derivative operator for the equation associated to the given...
Definition cs_equation_param.c:3192
#define CS_EQUATION_GRADDIV
The term related to the grad-div operator is needed.
Definition cs_equation_param.h:101
cs_equation_type_t
Type of equations managed by the solver.
Definition cs_equation_param.h:171
@ CS_EQUATION_TYPE_SOLIDIFICATION
Definition cs_equation_param.h:178
@ CS_EQUATION_TYPE_MAXWELL
Definition cs_equation_param.h:174
@ CS_EQUATION_TYPE_THERMAL
Definition cs_equation_param.h:177
@ CS_EQUATION_TYPE_PREDEFINED
Definition cs_equation_param.h:176
@ CS_EQUATION_TYPE_GROUNDWATER
Definition cs_equation_param.h:173
@ CS_EQUATION_N_TYPES
Definition cs_equation_param.h:181
@ CS_EQUATION_TYPE_NAVSTO
Definition cs_equation_param.h:175
@ CS_EQUATION_TYPE_USER
Definition cs_equation_param.h:179
static bool cs_equation_param_has_convection(const cs_equation_param_t *eqp)
Ask if the parameters of the equation needs a convection term.
Definition cs_equation_param.h:1347
static bool cs_equation_param_has_user_hook(const cs_equation_param_t *eqp)
Ask if the parameters of the equation has activated a user hook to get a fine tuning of the cellwise ...
Definition cs_equation_param.h:1475
static bool cs_equation_param_has_reaction(const cs_equation_param_t *eqp)
Ask if the parameters of the equation needs a reaction term.
Definition cs_equation_param.h:1367
void cs_equation_add_diffusion(cs_equation_param_t *eqp, cs_property_t *property)
Associate a new term related to the Laplacian operator for the equation associated to the given cs_eq...
Definition cs_equation_param.c:3109
void cs_equation_param_log(const cs_equation_param_t *eqp)
Print the detail of a cs_equation_param_t structure.
Definition cs_equation_param.c:1987
void cs_equation_param_copy_bc(const cs_equation_param_t *ref, cs_equation_param_t *dst)
Copy only the part dedicated to the boundary conditions and the DoF (degrees of freedom) enforcement ...
Definition cs_equation_param.c:1649
cs_xdef_t * cs_equation_add_volume_mass_injection_by_analytic(cs_equation_param_t *eqp, const char *z_name, cs_analytic_func_t *func, void *input)
Add a new volume mass injection definition source term by initializing a cs_xdef_t structure,...
Definition cs_equation_param.c:3659
cs_param_assemble_omp_strategy_t
Definition cs_param_cdo.h:107
Structure and routines handling the SLES settings stored inside a cs_param_sles_t structure.
cs_param_space_scheme_t
Type of numerical scheme for the discretization in space.
Definition cs_param_types.h:211
cs_param_advection_form_t
Definition cs_param_types.h:307
cs_param_bc_type_t
Definition cs_param_types.h:475
cs_param_advection_extrapol_t
Choice of how to extrapolate the advection field in the advection term.
Definition cs_param_types.h:418
cs_param_bc_enforce_t
Definition cs_param_types.h:520
cs_param_time_scheme_t
Definition cs_param_types.h:274
cs_param_nl_algo_t
Class of non-linear iterative algorithm.
Definition cs_param_types.h:551
void cs_analytic_func_t(cs_real_t time, cs_lnum_t n_elts, const cs_lnum_t *elt_ids, const cs_real_t *coords, bool dense_output, void *input, cs_real_t *retval)
Generic function pointer for an evaluation relying on an analytic function.
Definition cs_param_types.h:127
void cs_dof_func_t(cs_lnum_t n_elts, const cs_lnum_t *elt_ids, bool dense_output, void *input, cs_real_t *retval)
Generic function pointer for computing a quantity at predefined locations such as degrees of freedom ...
Definition cs_param_types.h:154
cs_param_advection_scheme_t
Definition cs_param_types.h:351
cs_param_dof_reduction_t
Definition cs_param_types.h:239
cs_param_advection_strategy_t
Choice of how to handle the advection term in an equation.
Definition cs_param_types.h:384
@ CS_PARAM_ADVECTION_IMPLICIT_FULL
Definition cs_param_types.h:386
@ CS_PARAM_ADVECTION_IMPLICIT_LINEARIZED
Definition cs_param_types.h:387
Definition field.f90:27
Definition cs_advection_field.h:150
Set of data defining an enforcement.
Definition cs_enforcement.h:89
Set of parameters to handle an unsteady convection-diffusion-reaction equation with term sources.
Definition cs_equation_param.h:192
int idiff
Definition cs_equation_param.h:457
cs_param_advection_scheme_t adv_scheme
Definition cs_equation_param.h:660
double epsilo
Definition cs_equation_param.h:475
cs_param_assemble_omp_strategy_t omp_assembly_choice
Definition cs_equation_param.h:800
cs_hodge_param_t graddiv_hodgep
Definition cs_equation_param.h:618
cs_real_t theta
Definition cs_equation_param.h:572
cs_real_t upwind_portion
Definition cs_equation_param.h:663
cs_property_t * curlcurl_property
Definition cs_equation_param.h:603
double blend_st
Definition cs_equation_param.h:474
int verbosity
Definition cs_equation_param.h:212
int n_source_terms
Definition cs_equation_param.h:704
bool do_lumping
Definition cs_equation_param.h:551
int space_poly_degree
Definition cs_equation_param.h:239
int nswrsm
Definition cs_equation_param.h:465
cs_xdef_t ** volume_mass_injections
Definition cs_equation_param.h:725
double epsrsm
Definition cs_equation_param.h:476
cs_real_t strong_pena_bc_coeff
Definition cs_equation_param.h:521
int isstpc
Definition cs_equation_param.h:463
cs_enforcement_param_t ** enforcement_params
Definition cs_equation_param.h:746
int istat
Definition cs_equation_param.h:454
cs_param_nl_algo_t incremental_algo_type
Definition cs_equation_param.h:786
double epsrgr
Definition cs_equation_param.h:477
cs_property_t * diffusion_property
Definition cs_equation_param.h:587
double climgr
Definition cs_equation_param.h:478
int ircflu
Definition cs_equation_param.h:469
cs_property_t * adv_scaling_property
Definition cs_equation_param.h:665
cs_param_sles_saddle_t * saddle_param
Definition cs_equation_param.h:784
cs_param_bc_enforce_t default_enforcement
Definition cs_equation_param.h:520
int ibdtso
Definition cs_equation_param.h:462
int iswdyn
Definition cs_equation_param.h:460
int dim
Definition cs_equation_param.h:201
cs_real_t incremental_relax_factor
Definition cs_equation_param.h:788
cs_xdef_t ** source_terms
Definition cs_equation_param.h:705
int ndircl
Definition cs_equation_param.h:456
double blencv
Definition cs_equation_param.h:473
cs_param_sles_t * sles_param
Definition cs_equation_param.h:783
int imrgra
Definition cs_equation_param.h:467
cs_param_time_scheme_t time_scheme
Definition cs_equation_param.h:571
cs_flag_t post_flag
Definition cs_equation_param.h:228
int iconv
Definition cs_equation_param.h:453
cs_param_dof_reduction_t dof_reduction
Definition cs_equation_param.h:233
int nswrgr
Definition cs_equation_param.h:464
cs_flag_t flag
Definition cs_equation_param.h:221
cs_property_t ** reaction_properties
Definition cs_equation_param.h:688
cs_equation_type_t type
Definition cs_equation_param.h:200
cs_xdef_t ** ic_defs
Definition cs_equation_param.h:537
double thetav
Definition cs_equation_param.h:472
cs_iter_algo_param_aa_t incremental_anderson_param
Definition cs_equation_param.h:789
int n_bc_defs
Definition cs_equation_param.h:517
int n_volume_mass_injections
Definition cs_equation_param.h:724
cs_param_advection_extrapol_t adv_extrapol
Definition cs_equation_param.h:662
double relaxv
Definition cs_equation_param.h:479
int imvisf
Definition cs_equation_param.h:466
int icoupl
Definition cs_equation_param.h:471
int iwarni
Definition cs_equation_param.h:213
cs_hodge_param_t diffusion_hodgep
Definition cs_equation_param.h:586
int n_enforcements
Definition cs_equation_param.h:745
cs_property_t * time_property
Definition cs_equation_param.h:570
int imligr
Definition cs_equation_param.h:468
cs_hodge_param_t reaction_hodgep
Definition cs_equation_param.h:686
int n_ic_defs
Definition cs_equation_param.h:536
int n_reaction_terms
Definition cs_equation_param.h:687
cs_param_advection_strategy_t adv_strategy
Definition cs_equation_param.h:661
int idifft
Definition cs_equation_param.h:458
cs_param_advection_form_t adv_formulation
Definition cs_equation_param.h:659
cs_hodge_param_t time_hodgep
Definition cs_equation_param.h:569
char *restrict name
Definition cs_equation_param.h:199
int idften
Definition cs_equation_param.h:459
cs_adv_field_t * adv_field
Definition cs_equation_param.h:664
cs_param_space_scheme_t space_scheme
Definition cs_equation_param.h:232
cs_param_bc_type_t default_bc
Definition cs_equation_param.h:516
cs_param_sles_cvg_t incremental_algo_cvg
Definition cs_equation_param.h:787
cs_property_t * graddiv_property
Definition cs_equation_param.h:619
int idircl
Definition cs_equation_param.h:455
cs_real_t weak_pena_bc_coeff
Definition cs_equation_param.h:522
cs_xdef_t ** bc_defs
Definition cs_equation_param.h:518
int ischcv
Definition cs_equation_param.h:461
cs_hodge_param_t curlcurl_hodgep
Definition cs_equation_param.h:602
int iwgrec
Definition cs_equation_param.h:470
Field descriptor.
Definition cs_field.h:130
Structure storing all metadata/parameters related to the usage of a discrete Hodge operator.
Definition cs_hodge.h:151
Structure storing all the parameters to drive the algorithm called Anderson acceleration.
Definition cs_iter_algo.h:140
Set of parameters to check the convergence (or the divergence) of an iterative process (tolerances or...
Definition cs_param_sles.h:61
Structure storing all metadata related to the resolution of a saddle-point linear system.
Definition cs_param_sles.h:133
Structure storing all metadata related to the resolution of a linear system with an iterative solver.
Definition cs_param_sles.h:91
Structure associated to the definition of a property relying on the cs_xdef_t structure.
Structure storing medata for defining a quantity in a very flexible way.
Definition cs_xdef.h:160