8.0
general documentation
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 
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 
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 
139 /*============================================================================
140  * Type definitions
141  *============================================================================*/
142 
171 typedef enum {
172 
180 
182 
184 
185 /*----------------------------------------------------------------------------*/
186 
192 typedef struct {
193 
199  char *restrict name;
201  int dim;
211  union {
213  int iwarni;
214  };
215 
222 
229 
230  /* Numerical settings */
231 
240 
453  int iconv;
454  int istat;
455  int idircl;
456  int ndircl;
457  int idiff;
458  int idifft;
459  int idften;
460  int iswdyn;
461  int ischcv;
462  int ibdtso;
463  int isstpc;
464  int nswrgr;
465  int nswrsm;
466  int imvisf;
467  int imrgra;
468  int imligr;
469  int ircflu;
470  int iwgrec;
471  int icoupl;
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 
519 
523 
538 
552 
573 
588 
604 
620 
666 
689 
706 
726 
747 
785 
790 
801 
805 
806 /*----------------------------------------------------------------------------*/
807 
1211 typedef enum {
1212 
1250 
1252 
1254 
1255 /*============================================================================
1256  * Static inline public function prototypes
1257  *============================================================================*/
1258 
1259 /*----------------------------------------------------------------------------*/
1266 /*----------------------------------------------------------------------------*/
1267 
1268 static inline void
1270  cs_flag_t flag)
1271 {
1272  assert(eqp != NULL);
1273  eqp->flag |= flag;
1274 }
1275 
1276 /*----------------------------------------------------------------------------*/
1284 /*----------------------------------------------------------------------------*/
1285 
1286 static 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 
1306 static 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 
1326 static 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 
1346 static 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 
1366 static 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 
1386 static 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 
1406 static 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 
1427 static 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 
1448 static 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 
1474 static 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 
1497 static 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 
1529 cs_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 
1549 inline static cs_equation_param_t *
1550 cs_equation_create_param(const char *name,
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 
1569 void
1571  cs_equation_param_t *dst,
1572  bool copy_fld_id);
1573 
1574 /*----------------------------------------------------------------------------*/
1583 /*----------------------------------------------------------------------------*/
1584 
1585 void
1587  cs_equation_param_t *dst);
1588 
1589 /*----------------------------------------------------------------------------*/
1600 /*----------------------------------------------------------------------------*/
1601 
1602 inline static void
1604  cs_equation_param_t *dst,
1605  bool copy_fid)
1606 {
1607  cs_equation_param_copy_from(ref, dst, copy_fid);
1608 }
1609 
1610 /*----------------------------------------------------------------------------*/
1622 /*----------------------------------------------------------------------------*/
1623 
1624 void
1626 
1627 /*----------------------------------------------------------------------------*/
1641 /*----------------------------------------------------------------------------*/
1642 
1643 inline static void
1645 {
1647 }
1648 
1649 /*----------------------------------------------------------------------------*/
1657 /*----------------------------------------------------------------------------*/
1658 
1661 
1662 /*----------------------------------------------------------------------------*/
1672 /*----------------------------------------------------------------------------*/
1673 
1674 inline static cs_equation_param_t *
1676 {
1677  return cs_equation_param_free(eqp);
1678 }
1679 
1680 /*----------------------------------------------------------------------------*/
1689 /*----------------------------------------------------------------------------*/
1690 
1691 void
1693  cs_equation_key_t key,
1694  const char *keyval);
1695 
1696 /*----------------------------------------------------------------------------*/
1707 /*----------------------------------------------------------------------------*/
1708 
1709 inline static void
1711  cs_equation_key_t key,
1712  const char *keyval)
1713 {
1714  cs_equation_param_set(eqp, key, keyval);
1715 }
1716 
1717 /*----------------------------------------------------------------------------*/
1725 /*----------------------------------------------------------------------------*/
1726 
1727 void
1729 
1730 /*----------------------------------------------------------------------------*/
1736 /*----------------------------------------------------------------------------*/
1737 
1738 void
1740 
1741 /*----------------------------------------------------------------------------*/
1748 /*----------------------------------------------------------------------------*/
1749 
1750 void
1752 
1753 /*----------------------------------------------------------------------------*/
1761 /*----------------------------------------------------------------------------*/
1762 
1763 void
1765 
1766 /*----------------------------------------------------------------------------*/
1772 /*----------------------------------------------------------------------------*/
1773 
1774 void
1776 
1777 /*----------------------------------------------------------------------------*/
1786 /*----------------------------------------------------------------------------*/
1787 
1788 bool
1790 
1791 /*----------------------------------------------------------------------------*/
1806 /*----------------------------------------------------------------------------*/
1807 
1808 cs_xdef_t *
1810  const char *z_name,
1811  cs_real_t *val);
1812 
1813 /*----------------------------------------------------------------------------*/
1829 /*----------------------------------------------------------------------------*/
1830 
1831 cs_xdef_t *
1833  const char *z_name,
1834  double quantity);
1835 
1836 /*----------------------------------------------------------------------------*/
1852 /*----------------------------------------------------------------------------*/
1853 
1854 cs_xdef_t *
1856  const char *z_name,
1857  cs_analytic_func_t *analytic,
1858  void *input);
1859 
1860 /*----------------------------------------------------------------------------*/
1876 /*----------------------------------------------------------------------------*/
1877 
1878 cs_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 
1896 void
1898  cs_xdef_t *xdef);
1899 
1900 /*----------------------------------------------------------------------------*/
1913 /*----------------------------------------------------------------------------*/
1914 
1915 cs_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 
1944 cs_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 
1968 cs_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 
1991 cs_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 
2016 cs_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 
2037 cs_xdef_t *
2039  const char *z_name);
2040 
2041 /*----------------------------------------------------------------------------*/
2053 /*----------------------------------------------------------------------------*/
2054 
2055 void
2057  const char *z_name);
2058 
2059 /*----------------------------------------------------------------------------*/
2068 /*----------------------------------------------------------------------------*/
2069 
2070 void
2072  const char *z_name);
2073 
2074 /*----------------------------------------------------------------------------*/
2084 /*----------------------------------------------------------------------------*/
2085 
2086 void
2088  cs_property_t *property);
2089 
2090 /*----------------------------------------------------------------------------*/
2099 /*----------------------------------------------------------------------------*/
2100 
2101 void
2103  cs_property_t *property,
2104  int inversion);
2105 
2106 /*----------------------------------------------------------------------------*/
2114 /*----------------------------------------------------------------------------*/
2115 
2116 void
2118  cs_property_t *property);
2119 
2120 /*----------------------------------------------------------------------------*/
2129 /*----------------------------------------------------------------------------*/
2130 
2131 void
2133  cs_property_t *property);
2134 
2135 /*----------------------------------------------------------------------------*/
2143 /*----------------------------------------------------------------------------*/
2144 
2145 void
2147  cs_adv_field_t *adv_field);
2148 
2149 /*----------------------------------------------------------------------------*/
2156 /*----------------------------------------------------------------------------*/
2157 
2158 void
2160  cs_property_t *property);
2161 
2162 /*----------------------------------------------------------------------------*/
2172 /*----------------------------------------------------------------------------*/
2173 
2174 int
2176  cs_property_t *property);
2177 
2178 /*----------------------------------------------------------------------------*/
2190 /*----------------------------------------------------------------------------*/
2191 
2192 cs_xdef_t *
2194  const char *z_name,
2195  cs_real_t *val);
2196 
2197 /*----------------------------------------------------------------------------*/
2210 /*----------------------------------------------------------------------------*/
2211 
2212 cs_xdef_t *
2214  const char *z_name,
2215  cs_analytic_func_t *func,
2216  void *input);
2217 
2218 /*----------------------------------------------------------------------------*/
2232 /*----------------------------------------------------------------------------*/
2233 
2234 cs_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 
2263 cs_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 
2285 cs_xdef_t *
2287  const char *z_name,
2288  double *val);
2289 
2290 /*----------------------------------------------------------------------------*/
2303 /*----------------------------------------------------------------------------*/
2304 
2305 cs_xdef_t *
2307  const char *z_name,
2308  double *quantity);
2309 
2310 /*----------------------------------------------------------------------------*/
2323 /*----------------------------------------------------------------------------*/
2324 
2325 cs_xdef_t *
2327  const char *z_name,
2328  cs_analytic_func_t *func,
2329  void *input);
2330 
2331 /*----------------------------------------------------------------------------*/
2345 /*----------------------------------------------------------------------------*/
2346 
2347 cs_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
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:2391
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
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:2691
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:3523
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:3229
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:3128
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_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:2342
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_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:2765
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
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:3380
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:2856
#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:2261
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:2982
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
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:3676
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:3738
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:3028
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:2445
#define CS_EQUATION_UNSTEADY
Unsteady term is needed.
Definition: cs_equation_param.h:97
#define CS_EQUATION_DIFFUSION
Diffusion term is needed. A scalar-/vector-valued Laplacian with div .grad.
Definition: cs_equation_param.h:99
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:3882
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:2293
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
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
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_RTOL
Definition: cs_equation_param.h:1235
@ CS_EQKEY_SADDLE_SOLVER
Definition: cs_equation_param.h:1241
@ CS_EQKEY_SOLVER_FAMILY
Definition: cs_equation_param.h:1245
@ CS_EQKEY_SADDLE_PRECOND
Definition: cs_equation_param.h:1239
@ CS_EQKEY_ADV_EXTRAPOL
Definition: cs_equation_param.h:1213
@ CS_EQKEY_VERBOSITY
Definition: cs_equation_param.h:1249
@ CS_EQKEY_HODGE_TIME_ALGO
Definition: cs_equation_param.h:1228
@ CS_EQKEY_ADV_STRATEGY
Definition: cs_equation_param.h:1216
@ CS_EQKEY_ITSOL_MAX_ITER
Definition: cs_equation_param.h:1232
@ CS_EQKEY_ITSOL
Definition: cs_equation_param.h:1230
@ CS_EQKEY_BC_WEAK_PENA_COEFF
Definition: cs_equation_param.h:1222
@ CS_EQKEY_BC_QUADRATURE
Definition: cs_equation_param.h:1220
@ CS_EQKEY_HODGE_DIFF_COEF
Definition: cs_equation_param.h:1227
@ CS_EQKEY_HODGE_DIFF_ALGO
Definition: cs_equation_param.h:1226
@ CS_EQKEY_AMG_TYPE
Definition: cs_equation_param.h:1218
@ CS_EQKEY_SADDLE_RTOL
Definition: cs_equation_param.h:1240
@ CS_EQKEY_ITSOL_RESNORM_TYPE
Definition: cs_equation_param.h:1233
@ CS_EQKEY_ITSOL_EPS
Definition: cs_equation_param.h:1231
@ CS_EQKEY_ADV_UPWIND_PORTION
Definition: cs_equation_param.h:1217
@ CS_EQKEY_TIME_SCHEME
Definition: cs_equation_param.h:1247
@ CS_EQKEY_DO_LUMPING
Definition: cs_equation_param.h:1223
@ CS_EQKEY_PRECOND
Definition: cs_equation_param.h:1237
@ CS_EQKEY_PRECOND_BLOCK_TYPE
Definition: cs_equation_param.h:1238
@ CS_EQKEY_ADV_SCHEME
Definition: cs_equation_param.h:1215
@ CS_EQKEY_BC_STRONG_PENA_COEFF
Definition: cs_equation_param.h:1221
@ CS_EQKEY_TIME_THETA
Definition: cs_equation_param.h:1248
@ CS_EQKEY_ADV_FORMULATION
Definition: cs_equation_param.h:1214
@ CS_EQKEY_EXTRA_OP
Definition: cs_equation_param.h:1225
@ CS_EQKEY_OMP_ASSEMBLY_STRATEGY
Definition: cs_equation_param.h:1236
@ CS_EQKEY_SCHUR_APPROX
Definition: cs_equation_param.h:1243
@ CS_EQKEY_DOF_REDUCTION
Definition: cs_equation_param.h:1224
@ CS_EQKEY_ITSOL_RESTART
Definition: cs_equation_param.h:1234
@ CS_EQKEY_SPACE_SCHEME
Definition: cs_equation_param.h:1246
@ CS_EQKEY_BC_ENFORCEMENT
Definition: cs_equation_param.h:1219
@ CS_EQKEY_SADDLE_VERBOSITY
Definition: cs_equation_param.h:1242
@ CS_EQKEY_HODGE_REAC_ALGO
Definition: cs_equation_param.h:1229
@ CS_EQKEY_SLES_VERBOSITY
Definition: cs_equation_param.h:1244
@ CS_EQKEY_N_KEYS
Definition: cs_equation_param.h:1251
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
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:3097
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:4017
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:3572
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:3449
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:3809
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:2596
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:2944
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
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:3203
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:2496
#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
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:3179
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
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
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
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
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:2524
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
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:3269
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:3320
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:3154
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:3951
#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_NAVSTO
Definition: cs_equation_param.h:175
@ CS_EQUATION_TYPE_USER
Definition: cs_equation_param.h:179
@ CS_EQUATION_TYPE_THERMAL
Definition: cs_equation_param.h:177
@ CS_EQUATION_TYPE_GROUNDWATER
Definition: cs_equation_param.h:173
@ CS_EQUATION_TYPE_SOLIDIFICATION
Definition: cs_equation_param.h:178
@ CS_EQUATION_TYPE_PREDEFINED
Definition: cs_equation_param.h:176
@ CS_EQUATION_N_TYPES
Definition: cs_equation_param.h:181
@ CS_EQUATION_TYPE_MAXWELL
Definition: cs_equation_param.h:174
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:3071
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:1949
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:3621
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_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.
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_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
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
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
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_LINEARIZED
Definition: cs_param_types.h:387
@ CS_PARAM_ADVECTION_IMPLICIT_FULL
Definition: cs_param_types.h:386
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
cs_real_t strong_pena_bc_coeff
Definition: cs_equation_param.h:521
int istat
Definition: cs_equation_param.h:454
cs_real_t upwind_portion
Definition: cs_equation_param.h:663
int imligr
Definition: cs_equation_param.h:468
cs_param_assemble_omp_strategy_t omp_assembly_choice
Definition: cs_equation_param.h:800
int n_reaction_terms
Definition: cs_equation_param.h:687
cs_param_nl_algo_t incremental_algo_type
Definition: cs_equation_param.h:786
int ndircl
Definition: cs_equation_param.h:456
int iwarni
Definition: cs_equation_param.h:213
cs_real_t weak_pena_bc_coeff
Definition: cs_equation_param.h:522
double blencv
Definition: cs_equation_param.h:473
cs_param_bc_enforce_t default_enforcement
Definition: cs_equation_param.h:520
cs_xdef_t ** volume_mass_injections
Definition: cs_equation_param.h:725
cs_property_t * diffusion_property
Definition: cs_equation_param.h:587
cs_param_sles_t * sles_param
Definition: cs_equation_param.h:783
int isstpc
Definition: cs_equation_param.h:463
cs_enforcement_param_t ** enforcement_params
Definition: cs_equation_param.h:746
int space_poly_degree
Definition: cs_equation_param.h:239
int ibdtso
Definition: cs_equation_param.h:462
cs_real_t incremental_relax_factor
Definition: cs_equation_param.h:788
int nswrsm
Definition: cs_equation_param.h:465
cs_param_advection_scheme_t adv_scheme
Definition: cs_equation_param.h:660
int idften
Definition: cs_equation_param.h:459
cs_property_t * curlcurl_property
Definition: cs_equation_param.h:603
double epsrsm
Definition: cs_equation_param.h:476
cs_xdef_t ** ic_defs
Definition: cs_equation_param.h:537
int idiff
Definition: cs_equation_param.h:457
double relaxv
Definition: cs_equation_param.h:479
cs_param_time_scheme_t time_scheme
Definition: cs_equation_param.h:571
int idifft
Definition: cs_equation_param.h:458
cs_hodge_param_t reaction_hodgep
Definition: cs_equation_param.h:686
double thetav
Definition: cs_equation_param.h:472
cs_hodge_param_t graddiv_hodgep
Definition: cs_equation_param.h:618
int imrgra
Definition: cs_equation_param.h:467
int iswdyn
Definition: cs_equation_param.h:460
cs_xdef_t ** source_terms
Definition: cs_equation_param.h:705
cs_hodge_param_t time_hodgep
Definition: cs_equation_param.h:569
int idircl
Definition: cs_equation_param.h:455
cs_param_sles_saddle_t * saddle_param
Definition: cs_equation_param.h:784
cs_param_advection_strategy_t adv_strategy
Definition: cs_equation_param.h:661
cs_adv_field_t * adv_field
Definition: cs_equation_param.h:664
int n_ic_defs
Definition: cs_equation_param.h:536
int dim
Definition: cs_equation_param.h:201
double epsilo
Definition: cs_equation_param.h:475
int nswrgr
Definition: cs_equation_param.h:464
bool do_lumping
Definition: cs_equation_param.h:551
cs_flag_t flag
Definition: cs_equation_param.h:221
cs_flag_t post_flag
Definition: cs_equation_param.h:228
cs_hodge_param_t curlcurl_hodgep
Definition: cs_equation_param.h:602
cs_hodge_param_t diffusion_hodgep
Definition: cs_equation_param.h:586
cs_param_dof_reduction_t dof_reduction
Definition: cs_equation_param.h:233
int verbosity
Definition: cs_equation_param.h:212
double epsrgr
Definition: cs_equation_param.h:477
cs_equation_type_t type
Definition: cs_equation_param.h:200
int n_source_terms
Definition: cs_equation_param.h:704
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
double climgr
Definition: cs_equation_param.h:478
cs_property_t ** reaction_properties
Definition: cs_equation_param.h:688
cs_param_advection_form_t adv_formulation
Definition: cs_equation_param.h:659
cs_property_t * adv_scaling_property
Definition: cs_equation_param.h:665
cs_xdef_t ** bc_defs
Definition: cs_equation_param.h:518
int icoupl
Definition: cs_equation_param.h:471
int imvisf
Definition: cs_equation_param.h:466
int n_volume_mass_injections
Definition: cs_equation_param.h:724
int iwgrec
Definition: cs_equation_param.h:470
int n_bc_defs
Definition: cs_equation_param.h:517
cs_property_t * time_property
Definition: cs_equation_param.h:570
cs_param_advection_extrapol_t adv_extrapol
Definition: cs_equation_param.h:662
int ischcv
Definition: cs_equation_param.h:461
cs_param_bc_type_t default_bc
Definition: cs_equation_param.h:516
char *restrict name
Definition: cs_equation_param.h:199
int n_enforcements
Definition: cs_equation_param.h:745
cs_param_space_scheme_t space_scheme
Definition: cs_equation_param.h:232
cs_iter_algo_param_aa_t incremental_anderson_param
Definition: cs_equation_param.h:789
int ircflu
Definition: cs_equation_param.h:469
int iconv
Definition: cs_equation_param.h:453
cs_real_t theta
Definition: cs_equation_param.h:572
double blend_st
Definition: cs_equation_param.h:474
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