8.1
general documentation
cs_atmo.h
Go to the documentation of this file.
1 #ifndef __CS_ATMO_H__
2 #define __CS_ATMO_H__
3 
4 /*============================================================================
5  * Main for atmospheric related functions
6  *============================================================================*/
7 
8 /*
9  This file is part of code_saturne, a general-purpose CFD tool.
10 
11  Copyright (C) 1998-2023 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 
30 /*----------------------------------------------------------------------------
31  * Local headers
32  *----------------------------------------------------------------------------*/
33 
34 #include "cs_base.h"
35 
36 /*----------------------------------------------------------------------------*/
37 
39 
40 /*============================================================================
41  * Local Macro definitions
42  *============================================================================*/
43 
44 /*============================================================================
45  * Type definitions
46  *============================================================================*/
47 
48 /*----------------------------------------------------------------------------
49  * Atmospheric models
50  *----------------------------------------------------------------------------*/
51 
52 typedef enum {
53 
58 
60 
61 /*----------------------------------------------------------------------------
62  * Atmospheric nucleation models
63  *----------------------------------------------------------------------------*/
64 
65 typedef enum {
66 
71 
73 
74 /*----------------------------------------------------------------------------
75  * Atmospheric aerosol external library
76  *----------------------------------------------------------------------------*/
77 
78 typedef enum {
79 
82 
84 
85 /*----------------------------------------------------------------------------
86  * Atmospheric universal functions
87  *----------------------------------------------------------------------------*/
88 
89 typedef enum {
90 
96 
98 
99 /*----------------------------------------------------------------------------
100  * Atmospheric soil model
101  *----------------------------------------------------------------------------*/
102 
103 typedef enum {
104 
113 
115 
116 /*============================================================================
117  * Type definitions
118  *============================================================================*/
119 
124 /*----------------------------------------------------------------------------
125  * Atmospheric model options descriptor
126  *----------------------------------------------------------------------------*/
127 
128 typedef struct {
129  /* Space and time reference of the run */
131  int syear;
133  int squant;
135  int shour;
137  int smin;
149  union {
151  int nbmetd; /* deprecated */
152  };
154  union {
156  int nbmett; /* deprecated */
157  };
159  union {
161  int nbmetm;
162  };
163 
165  union {
167  int nbmaxt;
168  };
178 
181 
217 
230 
234 
237 
240 
241  /* Model options */
276 
279 
318 
341 
352 
372 
374 
375 /*----------------------------------------------------------------------------
376  * Atmospheric model constants descriptor
377  *----------------------------------------------------------------------------*/
378 
379 typedef struct {
380  /* Space and time reference of the run */
383 
385 
386 /*----------------------------------------------------------------------------
387  * Atmospheric chemistry options descriptor
388  *----------------------------------------------------------------------------*/
389 
390 typedef struct {
391 
399  int model;
402 
405 
406  /* Flag to deactivate photolysis */
408 
413 
421  int n_layer;
423  int n_size;
425  int *species_to_scalar_id; // used only in Fortran
429  int *chempoint;
432 
441 
443 
444 /*============================================================================
445  * Static global variables
446  *============================================================================*/
447 
448 /* Pointer to atmo options structure */
450 
451 /* Pointer to atmo constants structure */
453 
454 /* Pointer to atmo chemistry structure */
456 
457 /*============================================================================
458  * Public function definitions
459  *============================================================================*/
460 
461 /*----------------------------------------------------------------------------*/
463 /*----------------------------------------------------------------------------*/
464 
465 void
467 
468 /*----------------------------------------------------------------------------*/
472 /*----------------------------------------------------------------------------*/
473 
474 void
476 
477 /*----------------------------------------------------------------------------*/
481 /*----------------------------------------------------------------------------*/
482 
483 void
485 
486 /*----------------------------------------------------------------------------*/
508 /*----------------------------------------------------------------------------*/
509 
510 void
512 
513 /*----------------------------------------------------------------------------*/
531 /*----------------------------------------------------------------------------*/
532 
533 void
535 
536 /*----------------------------------------------------------------------------*/
545 /*----------------------------------------------------------------------------*/
546 
547 cs_real_t
549  cs_real_t dlmo);
550 
551 /*----------------------------------------------------------------------------*/
560 /*----------------------------------------------------------------------------*/
561 
562 cs_real_t
564  cs_real_t dlmo);
565 
566 /*----------------------------------------------------------------------------*/
576 /*----------------------------------------------------------------------------*/
577 
578 cs_real_t
580  cs_real_t z0,
581  cs_real_t dlmo);
582 
583 /*----------------------------------------------------------------------------*/
593 /*----------------------------------------------------------------------------*/
594 
595 cs_real_t
597  cs_real_t z0,
598  cs_real_t dlmo);
599 
600 /*----------------------------------------------------------------------------*/
606 /*----------------------------------------------------------------------------*/
607 
608 void
609 cs_atmo_set_meteo_file_name(const char *file_name);
610 
611 /*----------------------------------------------------------------------------*/
617 /*----------------------------------------------------------------------------*/
618 
619 void
620 cs_atmo_set_chem_conc_file_name(const char *file_name);
621 
622 /*----------------------------------------------------------------------------*/
628 /*----------------------------------------------------------------------------*/
629 
630 void
631 cs_atmo_set_aero_conc_file_name(const char *file_name);
632 
633 /*----------------------------------------------------------------------------*/
639 /*----------------------------------------------------------------------------*/
640 
641 void
642 cs_atmo_chemistry_set_spack_file_name(const char *file_name);
643 
644 /*----------------------------------------------------------------------------*/
650 /*----------------------------------------------------------------------------*/
651 
652 void
653 cs_atmo_chemistry_set_aerosol_file_name(const char *file_name);
654 
655 /*----------------------------------------------------------------------------*/
661 /*----------------------------------------------------------------------------*/
662 
663 void
665 
666 /*----------------------------------------------------------------------------*/
688 /*----------------------------------------------------------------------------*/
689 
690 void
692  cs_real_t xlong,
693  cs_real_t jour,
694  cs_real_t heurtu,
695  int imer,
696  cs_real_t *albe,
697  cs_real_t *za,
698  cs_real_t *muzero,
699  cs_real_t *omega,
700  cs_real_t *fo);
701 
702 /*----------------------------------------------------------------------------*/
706 /*----------------------------------------------------------------------------*/
707 
708 void
709 cs_atmo_log_setup(void);
710 
711 /*----------------------------------------------------------------------------*/
715 /*----------------------------------------------------------------------------*/
716 
717 void
719 
720 /*----------------------------------------------------------------------------*/
724 /*----------------------------------------------------------------------------*/
725 
726 void
728 
729 /*----------------------------------------------------------------------------*/
733 /*----------------------------------------------------------------------------*/
734 
735 void
736 cs_atmo_finalize(void);
737 
738 /*----------------------------------------------------------------------------*/
742 /*----------------------------------------------------------------------------*/
743 
744 void
746 
747 /*----------------------------------------------------------------------------*/
751 /*----------------------------------------------------------------------------*/
752 
753 void
754 cs_soil_model(void);
755 
756 /*----------------------------------------------------------------------------*/
757 
759 
760 #endif /* __CS_ATMO_H__ */
cs_atmo_model_t
Definition: cs_atmo.h:52
@ CS_ATMO_DRY
Definition: cs_atmo.h:56
@ CS_ATMO_CONSTANT_DENSITY
Definition: cs_atmo.h:55
@ CS_ATMO_OFF
Definition: cs_atmo.h:54
@ CS_ATMO_HUMID
Definition: cs_atmo.h:57
void cs_atmo_declare_chem_from_spack(void)
This function declare additional transported variables for atmospheric module for the chemistry defin...
Definition: cs_atmo.c:3580
cs_atmo_soil_cat_t
Definition: cs_atmo.h:103
@ CS_ATMO_SOIL_23_CAT
Definition: cs_atmo.h:112
@ CS_ATMO_SOIL_5_CAT
Definition: cs_atmo.h:106
@ CS_ATMO_SOIL_7_CAT
Definition: cs_atmo.h:109
void cs_atmo_log_setup(void)
Print the atmospheric module options to setup.log.
Definition: cs_atmo.c:3797
void cs_atmo_add_property_fields(void)
Definition: cs_atmo.c:1953
cs_real_t cs_mo_psih(cs_real_t z, cs_real_t z0, cs_real_t dlmo)
Universal function psih for neutral, stable and unstable.
cs_atmo_nucleation_type_t
Definition: cs_atmo.h:65
@ CS_ATMO_NUC_OFF
Definition: cs_atmo.h:67
@ CS_ATMO_NUC_ABDUL_RAZZAK
Definition: cs_atmo.h:70
@ CS_ATMO_NUC_COHARD
Definition: cs_atmo.h:69
@ CS_ATMO_NUC_PRUPPACHER_KLETT
Definition: cs_atmo.h:68
void cs_atmo_aerosol_log_setup(void)
Print the atmospheric aerosols options to setup.log.
Definition: cs_atmo.c:3983
cs_real_t cs_mo_psim(cs_real_t z, cs_real_t z0, cs_real_t dlmo)
Universal function psim for neutral, stable and unstable.
void cs_atmo_z_ground_compute(void)
This function computes the ground elevation.
Definition: cs_atmo.c:2995
void cs_atmo_set_aero_conc_file_name(const char *file_name)
This function set the file name of the aerosol concentration file.
Definition: cs_atmo.c:3499
cs_atmo_universal_functions_t
Definition: cs_atmo.h:89
@ CS_ATMO_UNIV_FN_BUSINGER
Definition: cs_atmo.h:93
@ CS_ATMO_UNIV_FN_CARL
Definition: cs_atmo.h:95
@ CS_ATMO_UNIV_FN_CHENG
Definition: cs_atmo.h:91
@ CS_ATMO_UNIV_FN_HARTOGENSIS
Definition: cs_atmo.h:94
@ CS_ATMO_UNIV_FN_HOGSTROM
Definition: cs_atmo.h:92
void cs_atmo_chemistry_set_spack_file_name(const char *file_name)
This function set the file name of the SPACK file.
Definition: cs_atmo.c:3531
cs_atmo_option_t * cs_glob_atmo_option
cs_atmo_chemistry_t * cs_glob_atmo_chemistry
void cs_atmo_finalize(void)
Deallocate arrays for atmo module.
Definition: cs_atmo.c:4029
cs_real_t cs_mo_phim(cs_real_t z, cs_real_t dlmo)
Universal function phim for neutral, stable and unstable.
cs_atmo_aerosol_type_t
Definition: cs_atmo.h:78
@ CS_ATMO_AEROSOL_SSH
Definition: cs_atmo.h:81
@ CS_ATMO_AEROSOL_OFF
Definition: cs_atmo.h:80
void cs_atmo_compute_solar_angles(cs_real_t xlat, cs_real_t xlong, cs_real_t jour, cs_real_t heurtu, int imer, cs_real_t *albe, cs_real_t *za, cs_real_t *muzero, cs_real_t *omega, cs_real_t *fo)
1D Radiative scheme - Solar data + zenithal angle)
Definition: cs_atmo.c:3693
void cs_soil_model(void)
Compute soil and interface values using Deardorff force restore method.
Definition: cs_atmo.c:2170
void cs_atmo_set_chem_conc_file_name(const char *file_name)
This function set the file name of the chemistry concentration file.
Definition: cs_atmo.c:3470
void cs_atmo_chemistry_log_setup(void)
Print the atmospheric chemistry options to setup.log.
Definition: cs_atmo.c:3918
void cs_atmo_chemistry_set_aerosol_file_name(const char *file_name)
This function sets the file name to initialize the aerosol library.
Definition: cs_atmo.c:3556
void cs_atmo_init_meteo_profiles(void)
Initialize meteo profiles if no meteo file is given.
Definition: cs_atmo.c:2477
void cs_user_soil_model(void)
Allow call of cs_user fonctions during soil model computation.
void cs_atmo_compute_meteo_profiles(void)
Compute meteo profiles if no meteo file is given.
Definition: cs_atmo.c:2765
void cs_atmo_hydrostatic_profiles_compute(void)
Compute hydrostatic profiles of density and pressure.
Definition: cs_atmo.c:3208
void cs_atmo_set_meteo_file_name(const char *file_name)
This function set the file name of the meteo file.
Definition: cs_atmo.c:3441
cs_atmo_constants_t * cs_glob_atmo_constants
cs_real_t cs_mo_phih(cs_real_t z, cs_real_t dlmo)
Universal function phih for neutral, stable and unstable.
#define BEGIN_C_DECLS
Definition: cs_defs.h:514
double cs_real_t
Floating-point value.
Definition: cs_defs.h:319
#define END_C_DECLS
Definition: cs_defs.h:515
real(c_double), pointer, save xlat
latitude of the domain origin
Definition: atincl.f90:205
double precision, dimension(ncharm), save omega
Definition: cpincl.f90:96
Definition: cs_atmo.h:390
bool init_gas_with_lib
Definition: cs_atmo.h:417
int model
Definition: cs_atmo.h:399
int * species_to_scalar_id
Definition: cs_atmo.h:425
cs_real_t * molar_mass
Definition: cs_atmo.h:428
int n_species
Definition: cs_atmo.h:400
cs_atmo_aerosol_type_t aerosol_model
Definition: cs_atmo.h:412
char * aero_file_name
Definition: cs_atmo.h:434
bool chemistry_with_photolysis
Definition: cs_atmo.h:407
bool frozen_gas_chem
Definition: cs_atmo.h:415
int * species_to_field_id
Definition: cs_atmo.h:426
int n_reactions
Definition: cs_atmo.h:401
bool init_aero_with_lib
Definition: cs_atmo.h:419
char * aero_conc_file_name
Definition: cs_atmo.h:440
char * chem_conc_file_name
Definition: cs_atmo.h:437
int n_layer
Definition: cs_atmo.h:421
int chemistry_sep_mode
Definition: cs_atmo.h:404
int * chempoint
Definition: cs_atmo.h:429
int n_size
Definition: cs_atmo.h:423
char * spack_file_name
Definition: cs_atmo.h:424
cs_real_t * reacnum
Definition: cs_atmo.h:431
Definition: cs_atmo.h:379
cs_real_t ps
Definition: cs_atmo.h:382
Definition: cs_atmo.h:128
cs_real_t meteo_t1
Definition: cs_atmo.h:311
cs_real_t domain_orientation
Definition: cs_atmo.h:233
int nbmetm
Definition: cs_atmo.h:161
cs_real_t meteo_zi
Definition: cs_atmo.h:287
cs_real_t * z_dyn_met
Definition: cs_atmo.h:354
cs_real_t * rad_1d_zray
Definition: cs_atmo.h:206
int squant
Definition: cs_atmo.h:133
cs_real_t meteo_dlmo
Definition: cs_atmo.h:281
cs_real_t * hyd_p_met
Definition: cs_atmo.h:360
int distribution_model
Definition: cs_atmo.h:268
cs_real_t * rad_1d_dacinfe
Definition: cs_atmo.h:187
int radiative_model_1d
Definition: cs_atmo.h:170
cs_real_t ssec
Definition: cs_atmo.h:139
cs_real_t * rad_1d_tauzq
Definition: cs_atmo.h:200
cs_real_t * rad_1d_aco2
Definition: cs_atmo.h:189
cs_real_t * rad_1d_ql
Definition: cs_atmo.h:221
int syear
Definition: cs_atmo.h:131
int sedimentation_model
Definition: cs_atmo.h:243
bool compute_z_ground
Definition: cs_atmo.h:236
cs_real_t * rad_1d_sol_div
Definition: cs_atmo.h:210
cs_real_t * rad_1d_ird
Definition: cs_atmo.h:214
int shour
Definition: cs_atmo.h:135
cs_real_t meteo_qwstar
Definition: cs_atmo.h:322
cs_real_t meteo_zt1
Definition: cs_atmo.h:293
cs_real_t meteo_t0
Definition: cs_atmo.h:309
int deposition_model
Definition: cs_atmo.h:245
cs_real_t * rad_1d_daco2
Definition: cs_atmo.h:192
int smin
Definition: cs_atmo.h:137
cs_real_t * rad_1d_acsups
Definition: cs_atmo.h:196
cs_real_t meteo_qw1
Definition: cs_atmo.h:324
cs_real_t * rad_1d_qw
Definition: cs_atmo.h:219
int nbmaxt
Definition: cs_atmo.h:167
cs_real_t * rad_1d_tauz
Definition: cs_atmo.h:202
cs_real_t * v_met
Definition: cs_atmo.h:345
cs_real_t meteo_u1
Definition: cs_atmo.h:299
cs_real_t y_l93
Definition: cs_atmo.h:147
int meteo_phih_s
Definition: cs_atmo.h:336
cs_real_t * rad_1d_ir_div
Definition: cs_atmo.h:208
int subgrid_model
Definition: cs_atmo.h:263
cs_real_t * rad_1d_acsup
Definition: cs_atmo.h:195
cs_real_t * ek_met
Definition: cs_atmo.h:349
cs_real_t * u_met
Definition: cs_atmo.h:343
cs_real_t meteo_zu2
Definition: cs_atmo.h:291
cs_real_t meteo_uref
Definition: cs_atmo.h:297
cs_real_t meteo_ustar0
Definition: cs_atmo.h:303
int soil_zone_id
Definition: cs_atmo.h:371
cs_real_t meteo_z0
Definition: cs_atmo.h:283
int rad_1d_nlevels_max
Definition: cs_atmo.h:177
int nbmetd
Definition: cs_atmo.h:151
cs_real_t * rad_1d_dacsups
Definition: cs_atmo.h:198
char * meteo_file_name
Definition: cs_atmo.h:278
cs_real_t * rad_1d_sold
Definition: cs_atmo.h:216
cs_real_t * z_temp_met
Definition: cs_atmo.h:356
cs_real_t latitude
Definition: cs_atmo.h:143
int meteo_phim_s
Definition: cs_atmo.h:334
cs_real_t meteo_wstar0
Definition: cs_atmo.h:305
int met_1d_nlevels_t
Definition: cs_atmo.h:155
int met_1d_nlevels_d
Definition: cs_atmo.h:150
cs_real_t meteo_sensi
Definition: cs_atmo.h:332
int meteo_phih_u
Definition: cs_atmo.h:340
cs_real_t meteo_t2
Definition: cs_atmo.h:313
cs_real_t * rad_1d_solu
Definition: cs_atmo.h:215
int met_1d_nlevels_max_t
Definition: cs_atmo.h:166
cs_real_t * w_met
Definition: cs_atmo.h:347
cs_real_t * time_met
Definition: cs_atmo.h:358
cs_real_t meteo_zu1
Definition: cs_atmo.h:289
cs_real_t meteo_tstar
Definition: cs_atmo.h:315
int theo_interp
Definition: cs_atmo.h:239
cs_real_t longitude
Definition: cs_atmo.h:141
cs_atmo_soil_cat_t soil_cat
Definition: cs_atmo.h:369
cs_real_t meteo_qw2
Definition: cs_atmo.h:326
int met_1d_ntimes
Definition: cs_atmo.h:160
int nbmett
Definition: cs_atmo.h:156
cs_real_t meteo_evapor
Definition: cs_atmo.h:330
int open_bcs_treatment
Definition: cs_atmo.h:238
int soil_model
Definition: cs_atmo.h:364
cs_real_t meteo_u2
Definition: cs_atmo.h:301
cs_real_t * rad_1d_iru
Definition: cs_atmo.h:213
cs_real_t * rad_1d_z
Definition: cs_atmo.h:183
cs_real_t * rad_1d_aco2s
Definition: cs_atmo.h:190
int meteo_profile
Definition: cs_atmo.h:275
cs_real_t * rad_1d_dacsup
Definition: cs_atmo.h:197
int meteo_phim_u
Definition: cs_atmo.h:338
cs_real_t * rad_1d_xy
Definition: cs_atmo.h:180
cs_real_t x_l93
Definition: cs_atmo.h:145
cs_real_t meteo_zref
Definition: cs_atmo.h:285
cs_real_t * ep_met
Definition: cs_atmo.h:351
cs_real_t * rad_1d_aerosols
Definition: cs_atmo.h:229
int rad_1d_nvert
Definition: cs_atmo.h:172
cs_real_t meteo_ql0
Definition: cs_atmo.h:328
int nucleation_model
Definition: cs_atmo.h:255
cs_real_t meteo_qw0
Definition: cs_atmo.h:320
cs_real_t * rad_1d_fn
Definition: cs_atmo.h:227
int rad_1d_nlevels
Definition: cs_atmo.h:174
cs_real_t * rad_1d_zq
Definition: cs_atmo.h:204
cs_real_t * rad_1d_daco2s
Definition: cs_atmo.h:193
cs_real_t * pot_t_met
Definition: cs_atmo.h:362
cs_real_t * rad_1d_acinfe
Definition: cs_atmo.h:185
cs_real_t meteo_zt2
Definition: cs_atmo.h:295
cs_real_t * rad_1d_nc
Definition: cs_atmo.h:225
cs_real_t * rad_1d_qv
Definition: cs_atmo.h:223
cs_real_t meteo_psea
Definition: cs_atmo.h:317
cs_real_t meteo_angle
Definition: cs_atmo.h:307