My Project
programmer's documentation
Loading...
Searching...
No Matches
cs_equation.h
Go to the documentation of this file.
1#ifndef __CS_EQUATION_H__
2#define __CS_EQUATION_H__
3
4/*============================================================================
5 * Routines to handle cs_equation_t structure and its related structures
6 *============================================================================*/
7
8/*
9 This file is part of Code_Saturne, a general-purpose CFD tool.
10
11 Copyright (C) 1998-2019 EDF S.A.
12
13 This program is free software; you can redistribute it and/or modify it under
14 the terms of the GNU General Public License as published by the Free Software
15 Foundation; either version 2 of the License, or (at your option) any later
16 version.
17
18 This program is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
20 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
21 details.
22
23 You should have received a copy of the GNU General Public License along with
24 this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
25 Street, Fifth Floor, Boston, MA 02110-1301, USA.
26*/
27
28/*----------------------------------------------------------------------------
29 * Local headers
30 *----------------------------------------------------------------------------*/
31
32#include "cs_cdo_connect.h"
33#include "cs_cdo_quantities.h"
34#include "cs_equation_param.h"
35#include "cs_equation_common.h"
36#include "cs_field.h"
37#include "cs_param.h"
38#include "cs_mesh.h"
39#include "cs_restart.h"
40#include "cs_time_step.h"
41
42/*----------------------------------------------------------------------------*/
43
45
46/*============================================================================
47 * Macro definitions
48 *============================================================================*/
49
50/*============================================================================
51 * Type definitions
52 *============================================================================*/
53
54typedef struct _cs_equation_t cs_equation_t;
55
56/*============================================================================
57 * Public function prototypes
58 *============================================================================*/
59
60/*----------------------------------------------------------------------------*/
66/*----------------------------------------------------------------------------*/
67
68int
70
71/*----------------------------------------------------------------------------*/
80/*----------------------------------------------------------------------------*/
81
83cs_equation_by_name(const char *eqname);
84
85/*----------------------------------------------------------------------------*/
96/*----------------------------------------------------------------------------*/
97
98bool
100 const char *fld_name);
101
102/*----------------------------------------------------------------------------*/
111/*----------------------------------------------------------------------------*/
112
114cs_equation_param_by_name(const char *eqname);
115
116/*----------------------------------------------------------------------------*/
125/*----------------------------------------------------------------------------*/
126
129
130/*----------------------------------------------------------------------------*/
139/*----------------------------------------------------------------------------*/
140
142cs_equation_by_id(int eq_id);
143
144/*----------------------------------------------------------------------------*/
152/*----------------------------------------------------------------------------*/
153
154const char *
156
157/*----------------------------------------------------------------------------*/
165/*----------------------------------------------------------------------------*/
166
167int
169
170/*----------------------------------------------------------------------------*/
178/*----------------------------------------------------------------------------*/
179
182
183/*----------------------------------------------------------------------------*/
192/*----------------------------------------------------------------------------*/
193
194int
196
197/*----------------------------------------------------------------------------*/
206/*----------------------------------------------------------------------------*/
207
210
211/*----------------------------------------------------------------------------*/
219/*----------------------------------------------------------------------------*/
220
223
224/*----------------------------------------------------------------------------*/
231/*----------------------------------------------------------------------------*/
232
233void
235 cs_flag_t flag);
236
237/*----------------------------------------------------------------------------*/
246/*----------------------------------------------------------------------------*/
247
250
251/*----------------------------------------------------------------------------*/
260/*----------------------------------------------------------------------------*/
261
262void *
264
265/*----------------------------------------------------------------------------*/
273/*----------------------------------------------------------------------------*/
274
275bool
277
278/*----------------------------------------------------------------------------*/
286/*----------------------------------------------------------------------------*/
287
288bool
290
291/*----------------------------------------------------------------------------*/
303/*----------------------------------------------------------------------------*/
304
306cs_equation_add(const char *eqname,
307 const char *varname,
308 cs_equation_type_t eqtype,
309 int dim,
310 cs_param_bc_type_t default_bc);
311
312/*----------------------------------------------------------------------------*/
323/*----------------------------------------------------------------------------*/
324
326cs_equation_add_user(const char *eqname,
327 const char *varname,
328 int dim,
329 cs_param_bc_type_t default_bc);
330
331/*----------------------------------------------------------------------------*/
335/*----------------------------------------------------------------------------*/
336
337void
339
340/*----------------------------------------------------------------------------*/
347/*----------------------------------------------------------------------------*/
348
349bool
351
352/*----------------------------------------------------------------------------*/
357/*----------------------------------------------------------------------------*/
358
359void
361
362/*----------------------------------------------------------------------------*/
370/*----------------------------------------------------------------------------*/
371
372void
373cs_equation_get_count(int *n_equations,
374 int *n_predef_equations,
375 int *n_user_equations);
376
377/*----------------------------------------------------------------------------*/
381/*----------------------------------------------------------------------------*/
382
383void
385
386/*----------------------------------------------------------------------------*/
393/*----------------------------------------------------------------------------*/
394
395void
397 const char *keyval);
398
399/*----------------------------------------------------------------------------*/
403/*----------------------------------------------------------------------------*/
404
405void
407
408/*----------------------------------------------------------------------------*/
421/*----------------------------------------------------------------------------*/
422
423void
425 const cs_cdo_quantities_t *quant,
426 const cs_time_step_t *time_step,
427 cs_flag_t vb_scheme_flag,
428 cs_flag_t vcb_scheme_flag,
429 cs_flag_t fb_scheme_flag,
430 cs_flag_t hho_scheme_flag);
431
432/*----------------------------------------------------------------------------*/
442/*----------------------------------------------------------------------------*/
443
444void
446 cs_flag_t vcb_scheme_flag,
447 cs_flag_t fb_scheme_flag,
448 cs_flag_t hho_scheme_flag);
449
450/*----------------------------------------------------------------------------*/
457/*----------------------------------------------------------------------------*/
458
459void
461
462/*----------------------------------------------------------------------------*/
471/*----------------------------------------------------------------------------*/
472
473bool
475
476/*----------------------------------------------------------------------------*/
480/*----------------------------------------------------------------------------*/
481
482void
484
485/*----------------------------------------------------------------------------*/
496/*----------------------------------------------------------------------------*/
497
498void
500 const cs_cdo_connect_t *connect,
501 const cs_cdo_quantities_t *quant,
502 const cs_time_step_t *ts);
503
504/*----------------------------------------------------------------------------*/
512/*----------------------------------------------------------------------------*/
513
514void
516 cs_equation_t *eq);
517
518/*----------------------------------------------------------------------------*/
526/*----------------------------------------------------------------------------*/
527
528void
530 cs_equation_t *eq);
531
532/*----------------------------------------------------------------------------*/
539/*----------------------------------------------------------------------------*/
540
541void
543 cs_equation_t *eq);
544
545/*----------------------------------------------------------------------------*/
551/*----------------------------------------------------------------------------*/
552
553void
555
556/*----------------------------------------------------------------------------*/
565/*----------------------------------------------------------------------------*/
566
569
570/*----------------------------------------------------------------------------*/
579/*----------------------------------------------------------------------------*/
580
583
584/*----------------------------------------------------------------------------*/
596/*----------------------------------------------------------------------------*/
597
600 const int reaction_id);
601
602/*----------------------------------------------------------------------------*/
611/*----------------------------------------------------------------------------*/
612
615
616/*----------------------------------------------------------------------------*/
626/*----------------------------------------------------------------------------*/
627
630
631/*----------------------------------------------------------------------------*/
640/*----------------------------------------------------------------------------*/
641
644
645/*----------------------------------------------------------------------------*/
654/*----------------------------------------------------------------------------*/
655
656int
658
659/*----------------------------------------------------------------------------*/
667/*----------------------------------------------------------------------------*/
668
669int
671
672/*----------------------------------------------------------------------------*/
680/*----------------------------------------------------------------------------*/
681
684
685/*----------------------------------------------------------------------------*/
694/*----------------------------------------------------------------------------*/
695
696cs_real_t *
698
699/*----------------------------------------------------------------------------*/
708/*----------------------------------------------------------------------------*/
709
710cs_real_t *
712
713/*----------------------------------------------------------------------------*/
722/*----------------------------------------------------------------------------*/
723
724cs_real_t *
726
727/*----------------------------------------------------------------------------*/
738/*----------------------------------------------------------------------------*/
739
740void
742 const cs_equation_t *eq,
743 cs_real_t *diff_flux);
744
745/*----------------------------------------------------------------------------*/
756/*----------------------------------------------------------------------------*/
757
758void
760 const char *ml_name,
761 const cs_real_3_t direction,
762 cs_real_t *diff_flux,
763 cs_real_t *conv_flux);
764
765/*----------------------------------------------------------------------------*/
775/*----------------------------------------------------------------------------*/
776
777void
779 cs_flag_t location,
780 cs_real_t t_eval,
781 cs_real_t *diff_flux);
782
783/*----------------------------------------------------------------------------*/
790/*----------------------------------------------------------------------------*/
791
792void
794 cs_real_t *v_gradient);
795
796/*----------------------------------------------------------------------------*/
805/*----------------------------------------------------------------------------*/
806
807void
809 const cs_time_step_t *ts,
810 cs_real_t peclet[]);
811
812/*----------------------------------------------------------------------------*/
819/*----------------------------------------------------------------------------*/
820
821void
823
824/*----------------------------------------------------------------------------*/
831/*----------------------------------------------------------------------------*/
832
833void
835
836/*----------------------------------------------------------------------------*/
845/*----------------------------------------------------------------------------*/
846
847void
849 const cs_cdo_connect_t *connect,
850 const cs_cdo_quantities_t *cdoq,
851 const cs_time_step_t *ts);
852
853/*----------------------------------------------------------------------------*/
858/*----------------------------------------------------------------------------*/
859
860void
862
863/*----------------------------------------------------------------------------*/
864
866
867#endif /* __CS_EQUATION_H__ */
#define BEGIN_C_DECLS
Definition cs_defs.h:467
double cs_real_t
Floating-point value.
Definition cs_defs.h:302
cs_real_t cs_real_3_t[3]
vector of 3 floating-point values
Definition cs_defs.h:315
#define END_C_DECLS
Definition cs_defs.h:468
unsigned short int cs_flag_t
Definition cs_defs.h:304
cs_equation_t * cs_equation_by_id(int eq_id)
Find the cs_equation_t structure with id eq_id Return NULL if not find.
Definition cs_equation.c:463
void cs_equation_extra_post(void)
Predefined extra-operations related to equations according to the type of numerical scheme (for the s...
Definition cs_equation.c:2921
void cs_equation_write_extra_restart(cs_restart_t *restart)
Write into the restart file additionnal arrays (not defined as fields) but useful for the checkpoint/...
Definition cs_equation.c:2783
cs_property_t * cs_equation_get_time_property(const cs_equation_t *eq)
Return a pointer to the cs_property_t structure associated to the unsteady term for this equation (NU...
Definition cs_equation.c:690
void cs_equation_post_balance(const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *cdoq, const cs_time_step_t *ts)
Predefined extra-operations related to all equations.
Definition cs_equation.c:2808
cs_equation_param_t * cs_equation_get_param(const cs_equation_t *eq)
Return the cs_equation_param_t structure associated to a cs_equation_t structure.
Definition cs_equation.c:443
cs_equation_t * cs_equation_add_user(const char *eqname, const char *varname, int dim, cs_param_bc_type_t default_bc)
Add a new user equation structure and set a first set of parameters.
Definition cs_equation.c:1078
void cs_equation_set_default_param(cs_equation_key_t key, const char *keyval)
Set a parameter attached to a keyname for the default settigns.
Definition cs_equation.c:1264
bool cs_equation_set_functions(void)
Assign a set of pointer functions for managing the cs_equation_t structure during the computation Aft...
Definition cs_equation.c:1672
void cs_equation_read_extra_restart(cs_restart_t *restart)
Write into the restart file additionnal arrays (not defined as fields) but useful for the checkpoint/...
Definition cs_equation.c:2760
void cs_equation_set_sles(void)
Setup the linear algebra requirements.
Definition cs_equation.c:1294
void cs_equation_set_flag(cs_equation_t *eq, cs_flag_t flag)
Redefine the flag associated to an equation.
Definition cs_equation.c:606
int cs_equation_get_space_poly_degree(const cs_equation_t *eq)
Return the max. degree used in the polynomial basis for the space discretization.
Definition cs_equation.c:832
bool cs_equation_needs_steady_state_solve(void)
Check if a steady-state computation is requested according to the setting.
Definition cs_equation.c:1160
void cs_equation_set_range_set(const cs_cdo_connect_t *connect)
Assign a cs_range_set_t structures for synchronization when computing in parallel mode.
Definition cs_equation.c:1479
void cs_equation_solve_steady_state(const cs_mesh_t *mesh, cs_equation_t *eq)
Build and then solve the linear system for this equation when the goal is to find the steady state.
Definition cs_equation.c:2303
void * cs_equation_get_scheme_context(const cs_equation_t *eq)
Return a pointer to a structure useful to handle low-level operations for the given equation.
Definition cs_equation.c:648
cs_flag_t cs_equation_get_flag(const cs_equation_t *eq)
Return the flag associated to an equation.
Definition cs_equation.c:584
cs_param_time_scheme_t cs_equation_get_time_scheme(const cs_equation_t *eq)
Return the type of numerical scheme used for the discretization in time.
Definition cs_equation.c:740
cs_field_t * cs_equation_get_field(const cs_equation_t *eq)
Return the field structure associated to a cs_equation_t structure.
Definition cs_equation.c:523
void cs_equation_create_fields(void)
Create a field structure related to all cs_equation_t structures.
Definition cs_equation.c:2001
cs_real_t * cs_equation_get_vertex_values(const cs_equation_t *eq)
For a given equation, retrieve an array of values related to each vertex of the mesh for the unknowns...
Definition cs_equation.c:2409
cs_param_space_scheme_t cs_equation_get_space_scheme(const cs_equation_t *eq)
Return the type of numerical scheme used for the discretization in space.
Definition cs_equation.c:810
cs_equation_param_t * cs_equation_param_by_name(const char *eqname)
Return the cs_equation_param_t structure associated to a cs_equation_t structure thanks to the equati...
Definition cs_equation.c:414
void cs_equation_get_count(int *n_equations, int *n_predef_equations, int *n_user_equations)
Get the count of equations of each macro type.
Definition cs_equation.c:1211
bool cs_equation_uses_new_mechanism(const cs_equation_t *eq)
Return true is the given equation is steady otherwise false.
Definition cs_equation.c:919
void cs_equation_compute_diff_flux_cellwise(const cs_equation_t *eq, cs_flag_t location, cs_real_t t_eval, cs_real_t *diff_flux)
Cellwise computation of the diffusive flux across all cell faces. Primal or dual faces are considered...
Definition cs_equation.c:2590
void cs_equation_log_monitoring(void)
Print a synthesis of the monitoring information in the performance file.
Definition cs_equation.c:1182
const char * cs_equation_get_name(const cs_equation_t *eq)
Return the name related to the given cs_equation_t structure.
Definition cs_equation.c:483
cs_real_t * cs_equation_get_cell_values(const cs_equation_t *eq)
Get the values at each cell centers for the field unknowns related to this equation.
Definition cs_equation.c:2385
void cs_equation_compute_vtx_field_gradient(const cs_equation_t *eq, cs_real_t *v_gradient)
Cellwise computation of the discrete gradient at vertices.
Definition cs_equation.c:2671
cs_equation_builder_t * cs_equation_get_builder(const cs_equation_t *eq)
Return the cs_equation_builder_t structure associated to a cs_equation_t structure....
Definition cs_equation.c:628
bool cs_equation_is_steady(const cs_equation_t *eq)
Return true is the given equation is steady otherwise false.
Definition cs_equation.c:895
cs_property_t * cs_equation_get_diffusion_property(const cs_equation_t *eq)
Return a pointer to the cs_property_t structure associated to the diffusion term for this equation (N...
Definition cs_equation.c:668
void cs_equation_solve(const cs_mesh_t *mesh, cs_equation_t *eq)
Build and then solve the linear system for an equation with an unsteady term.
Definition cs_equation.c:2331
bool cs_equation_has_field_name(const cs_equation_t *eq, const char *fld_name)
Check if the asociated field to a cs_equation_t structure has name equal to fld_name.
Definition cs_equation.c:386
cs_property_t * cs_equation_get_reaction_property(const cs_equation_t *eq, const int reaction_id)
Return a pointer to the cs_property_t structure associated to the reaction term with id equal to reac...
Definition cs_equation.c:715
void cs_equation_compute_boundary_diff_flux(cs_real_t t_eval, const cs_equation_t *eq, cs_real_t *diff_flux)
Compute the diffusive flux across all boundary faces According to the space discretization scheme,...
Definition cs_equation.c:2435
void cs_equation_compute_flux_across_plane(const cs_equation_t *eq, const char *ml_name, const cs_real_3_t direction, cs_real_t *diff_flux, cs_real_t *conv_flux)
Compute the diffusive and convective flux across a plane defined by a mesh location structure attache...
Definition cs_equation.c:2517
cs_equation_t * cs_equation_by_name(const char *eqname)
Find the cs_equation_t structure with name eqname Return NULL if not find.
Definition cs_equation.c:350
void cs_equation_build_system(const cs_mesh_t *mesh, cs_equation_t *eq)
Build the linear system for this equation.
Definition cs_equation.c:2151
void cs_equation_destroy_all(void)
Destroy all cs_equation_t structures.
Definition cs_equation.c:1113
cs_real_t * cs_equation_get_face_values(const cs_equation_t *eq)
For a given equation, retrieve an array of values related to each face of the mesh for the unknowns.
Definition cs_equation.c:2361
void cs_equation_set_shared_structures(const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *time_step, cs_flag_t vb_scheme_flag, cs_flag_t vcb_scheme_flag, cs_flag_t fb_scheme_flag, cs_flag_t hho_scheme_flag)
Set shared structures among the activated class of discretization schemes.
Definition cs_equation.c:1333
void cs_equation_log_setup(void)
Summarize all cs_equation_t structures.
Definition cs_equation.c:1227
cs_real_t cs_equation_get_theta_time_val(const cs_equation_t *eq)
Return the value of the theta parameter in theta time scheme discretization.
Definition cs_equation.c:763
cs_field_t * cs_equation_get_boundary_flux(const cs_equation_t *eq)
Return the field structure for the (normal) boundary flux associated to a cs_equation_t structure.
Definition cs_equation.c:563
int cs_equation_get_id(const cs_equation_t *eq)
Return the id number related to the given cs_equation_t structure.
Definition cs_equation.c:503
cs_equation_type_t cs_equation_get_type(const cs_equation_t *eq)
Return the type of equation for the given equation structure.
Definition cs_equation.c:874
void cs_equation_unset_shared_structures(cs_flag_t vb_scheme_flag, cs_flag_t vcb_scheme_flag, cs_flag_t fb_scheme_flag, cs_flag_t hho_scheme_flag)
Release shared structures among the activated class of discretization schemes.
Definition cs_equation.c:1441
cs_equation_t * cs_equation_add(const char *eqname, const char *varname, cs_equation_type_t eqtype, int dim, cs_param_bc_type_t default_bc)
Add a new equation structure and set a first set of parameters.
Definition cs_equation.c:955
void cs_equation_initialize(const cs_mesh_t *mesh, const cs_cdo_connect_t *connect, const cs_cdo_quantities_t *quant, const cs_time_step_t *ts)
Allocate and initialize the builder of the algebraic system. Set the initialize condition to all vari...
Definition cs_equation.c:2104
int cs_equation_get_field_id(const cs_equation_t *eq)
Return the id related to the variable field structure associated to the cs_equation_t structure.
Definition cs_equation.c:543
int cs_equation_get_var_dim(const cs_equation_t *eq)
Return the dimension of the variable solved by this equation.
Definition cs_equation.c:853
int cs_equation_get_n_equations(void)
Retrieve the number of equations.
Definition cs_equation.c:333
void cs_equation_compute_peclet(const cs_equation_t *eq, const cs_time_step_t *ts, cs_real_t peclet[])
Compute and post-process Peclet number if requested.
Definition cs_equation.c:2712
void cs_equation_solve_deprecated(cs_equation_t *eq)
Solve the linear system for this equation.
Definition cs_equation.c:2192
Structure and routines handling the specific settings related to a cs_equation_t structure.
cs_equation_key_t
List of available keys for setting the parameters of an equation.
Definition cs_equation_param.h:643
cs_equation_type_t
Type of equations managed by the solver.
Definition cs_equation_param.h:133
cs_param_space_scheme_t
Type of numerical scheme for the discretization in space.
Definition cs_param.h:125
cs_param_bc_type_t
Definition cs_param.h:302
cs_param_time_scheme_t
Definition cs_param.h:183
struct _cs_restart_t cs_restart_t
Definition cs_restart.h:87
Definition mesh.f90:26
Definition cs_equation_priv.h:310
char *restrict varname
Definition cs_equation_priv.h:317
Definition cs_cdo_connect.h:74
Definition cs_cdo_quantities.h:94
Store common elements used when building an algebraic system related to an equation.
Definition cs_equation_common.h:61
Set of parameters to handle an unsteady convection-diffusion-reaction equation with term sources.
Definition cs_equation_param.h:148
Main structure to handle the discretization and the resolution of an equation.
Field descriptor.
Definition cs_field.h:124
Definition cs_mesh.h:63
Definition cs_property.h:104
time step descriptor
Definition cs_time_step.h:51