8.1
general documentation
cs_equation_system.h
Go to the documentation of this file.
1 #ifndef __CS_EQUATION_SYSTEM_H__
2 #define __CS_EQUATION_SYSTEM_H__
3 
4 /*============================================================================
5  * Functions to handle a set of coupled equations hinging on the cs_equation_t
6  * structure
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_equation.h"
34 #include "cs_equation_priv.h"
36 #include "cs_param_types.h"
37 
38 /*----------------------------------------------------------------------------*/
39 
41 
42 /*============================================================================
43  * Macro definitions
44  *============================================================================*/
45 
46 /*============================================================================
47  * Type definitions
48  *============================================================================*/
49 
50 /*----------------------------------------------------------------------------*/
66 /*----------------------------------------------------------------------------*/
67 
68 typedef void *
69 (cs_equation_system_define_t)(int n_eqs,
70  const cs_equation_system_param_t *sysp,
71  cs_equation_core_t **core_array,
72  cs_cdo_system_helper_t **p_sh);
73 
74 /*----------------------------------------------------------------------------*/
90 /*----------------------------------------------------------------------------*/
91 
92 typedef void *
93 (cs_equation_system_free_t)(int n_eqs,
94  cs_equation_core_t **core_array,
95  void *sys_context);
96 
97 /*----------------------------------------------------------------------------*/
108 /*----------------------------------------------------------------------------*/
109 
110 typedef void
111 (cs_equation_system_solve_t)(bool c2p,
112  int n_eqs,
114  cs_equation_core_t **blocks,
115  void *sys_context,
117 
118 
123 typedef struct {
124 
135 
137  int timer_id;
153 
154  void *context;
155 
172 
198 
223 
226 
232 
233 /*============================================================================
234  * Public function prototypes
235  *============================================================================*/
236 
237 /*----------------------------------------------------------------------------*/
243 /*----------------------------------------------------------------------------*/
244 
245 int
247 
248 /*----------------------------------------------------------------------------*/
256 /*----------------------------------------------------------------------------*/
257 
259 cs_equation_system_by_id(int sys_id);
260 
261 /*----------------------------------------------------------------------------*/
270 /*----------------------------------------------------------------------------*/
271 
274 
275 /*----------------------------------------------------------------------------*/
285 /*----------------------------------------------------------------------------*/
286 
288 cs_equation_system_add(const char *sysname,
289  int n_eqs,
290  int block_var_dim);
291 
292 /*----------------------------------------------------------------------------*/
296 /*----------------------------------------------------------------------------*/
297 
298 void
300 
301 /*----------------------------------------------------------------------------*/
305 /*----------------------------------------------------------------------------*/
306 
307 void
309 
310 /*----------------------------------------------------------------------------*/
315 /*----------------------------------------------------------------------------*/
316 
317 void
319 
320 /*----------------------------------------------------------------------------*/
329 /*----------------------------------------------------------------------------*/
330 
331 void
333  const cs_cdo_connect_t *connect,
334  const cs_cdo_quantities_t *quant,
335  const cs_time_step_t *time_step);
336 
337 /*----------------------------------------------------------------------------*/
342 /*----------------------------------------------------------------------------*/
343 
344 void
346 
347 /*----------------------------------------------------------------------------*/
351 /*----------------------------------------------------------------------------*/
352 
353 void
355 
356 /*----------------------------------------------------------------------------*/
364 /*----------------------------------------------------------------------------*/
365 
366 void
368 
369 /*----------------------------------------------------------------------------*/
376 /*----------------------------------------------------------------------------*/
377 
378 void
379 cs_equation_system_solve(bool cur2prev,
380  cs_equation_system_t *eqsys);
381 
382 /*----------------------------------------------------------------------------*/
391 /*----------------------------------------------------------------------------*/
392 
393 void
395  cs_equation_t *eq,
396  cs_equation_system_t *eqsys);
397 
398 /*----------------------------------------------------------------------------*/
408 /*----------------------------------------------------------------------------*/
409 
410 void
412  int col_id,
413  cs_equation_param_t *eqp,
414  cs_equation_system_t *eqsys);
415 
416 /*----------------------------------------------------------------------------*/
417 
419 
420 #endif /* __CS_EQUATION_SYSTEM_H__ */
#define BEGIN_C_DECLS
Definition: cs_defs.h:514
#define END_C_DECLS
Definition: cs_defs.h:515
cs_equation_system_t * cs_equation_system_by_id(int sys_id)
Retrieve the pointer to the equation system related to the given id.
Definition: cs_equation_system.c:279
void cs_equation_system_init_sharing(const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *time_step)
Assign a set of shared pointer to the main structures.
Definition: cs_equation_system.c:482
cs_equation_system_t * cs_equation_system_add(const char *sysname, int n_eqs, int block_var_dim)
Add a new structure to handle system of coupled equations.
Definition: cs_equation_system.c:320
void cs_equation_system_assign_param(int row_id, int col_id, cs_equation_param_t *eqp, cs_equation_system_t *eqsys)
Assign the given equation parameters to the block with ids (row_id, col_id) in the block matrix.
Definition: cs_equation_system.c:798
void cs_equation_system_assign_equation(int row_id, cs_equation_t *eq, cs_equation_system_t *eqsys)
Assign the given equation to the diagonal block located at position (row_id, row_id) in the matrix of...
Definition: cs_equation_system.c:751
void cs_equation_system_destroy_all(void)
Destroy all cs_equation_system_t structures.
Definition: cs_equation_system.c:351
void cs_equation_system_log_setup(void)
Log the setup for all structures managing systems of equations.
Definition: cs_equation_system.c:368
void cs_equation_system_solve(bool cur2prev, cs_equation_system_t *eqsys)
Solve of a system of coupled equations. Unsteady case.
Definition: cs_equation_system.c:708
cs_equation_system_param_t * cs_equation_system_param_by_id(int sys_id)
Retrieve the pointer to the set of parameters of a system of equations related to the given id.
Definition: cs_equation_system.c:299
void cs_equation_system_define(void)
Define the builder and scheme context structures associated to all the systems of equations which hav...
Definition: cs_equation_system.c:652
void cs_equation_system_set_functions(void)
Assign a set of pointer functions for managing all the systems of equations.
Definition: cs_equation_system.c:549
void() cs_equation_system_solve_t(bool c2p, int n_eqs, cs_equation_system_param_t *sysp, cs_equation_core_t **blocks, void *sys_context, cs_cdo_system_helper_t *sh)
Build and solve a linear system within the CDO framework.
Definition: cs_equation_system.h:111
void cs_equation_system_log_monitoring(void)
Print a synthesis of the monitoring information in the performance file.
Definition: cs_equation_system.c:450
void *() cs_equation_system_free_t(int n_eqs, cs_equation_core_t **core_array, void *sys_context)
Free an array of structures (equation parameters, equation builders or scheme context) for each equat...
Definition: cs_equation_system.h:93
int cs_equation_system_get_n_systems(void)
Get the number of systems of equations.
Definition: cs_equation_system.c:263
void *() cs_equation_system_define_t(int n_eqs, const cs_equation_system_param_t *sysp, cs_equation_core_t **core_array, cs_cdo_system_helper_t **p_sh)
Create and initialize equation builders and scheme context for each equation which are in the extra-d...
Definition: cs_equation_system.h:69
void cs_equation_system_set_sles(void)
Set the SLES associated to each system of equations.
Definition: cs_equation_system.c:613
Definition: mesh.f90:26
Definition: cs_cdo_connect.h:61
Definition: cs_cdo_quantities.h:137
Definition: cs_cdo_system.h:377
Main structures on which an equation structure relies.
Definition: cs_equation.h:82
Set of parameters to handle an unsteady convection-diffusion-reaction equation with term sources.
Definition: cs_equation_param.h:192
Main structure storing the parameter settings.
Definition: cs_equation_system_param.h:72
Main structure to handle a set of coupled equations.
Definition: cs_equation_system.h:123
cs_equation_system_free_t * free
Definition: cs_equation_system.h:222
void * context
Definition: cs_equation_system.h:154
cs_equation_t ** equations
Definition: cs_equation_system.h:171
cs_equation_system_solve_t * solve_steady_state_system
Definition: cs_equation_system.h:225
cs_equation_system_param_t * param
Definition: cs_equation_system.h:134
int timer_id
Definition: cs_equation_system.h:137
cs_timer_counter_t timer
Definition: cs_equation_system.h:136
cs_equation_core_t ** block_factories
Definition: cs_equation_system.h:197
cs_equation_system_define_t * define
Definition: cs_equation_system.h:221
cs_cdo_system_helper_t * system_helper
Definition: cs_equation_system.h:152
cs_equation_system_solve_t * solve_system
Definition: cs_equation_system.h:224
int n_equations
Definition: cs_equation_system.h:170
Main structure to handle the discretization and the resolution of an equation.
Definition: cs_mesh.h:85
time step descriptor
Definition: cs_time_step.h:64
Definition: cs_timer.h:55