source: LMDZ6/trunk/libf/dyn3dmem/caladvtrac_mod.F90 @ 4093

Last change on this file since 4093 was 4050, checked in by dcugnet, 3 years ago

Second commit for new tracers.

  • include most of the keys in the tracers descriptor vector "tracers(:)".
  • fix in phylmdiso/cv3_routines: fq_* variables were used where their fxt_* counterparts were expected.
  • multiple IF(nqdesc(iq)>0) and IF(nqfils(iq)>0) tests suppressed, because they are not needed: "do ... enddo" loops with 0 upper bound are not executed.
  • remove French accents from comments (encoding problem) in phylmdiso/cv3_routines and phylmdiso/cv30_routines.
  • modifications in "isotopes_verif_mod", where the call to function "iso_verif_tag17_q_deltad_chn" in "iso_verif_tag17_q_deltad_chn" was not detected at linking stage, although defined in the same module (?).
  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 2.7 KB
Line 
1MODULE caladvtrac_mod
2
3  REAL,POINTER,SAVE :: q_adv(:,:,:)
4  REAL,POINTER,SAVE :: massem_adv(:,:)
5  REAL,POINTER,SAVE :: wg_adv(:,:)
6  REAL,POINTER,SAVE :: teta_adv(:,:)
7  REAL,POINTER,SAVE :: p_adv(:,:)
8  REAL,POINTER,SAVE :: pk_adv(:,:)
9  REAL,POINTER,SAVE :: pbarug_adv(:,:)
10  REAL,POINTER,SAVE :: pbarvg_adv(:,:)
11  REAL,POINTER,SAVE :: pbaruc(:,:)
12  REAL,POINTER,SAVE :: pbarvc(:,:)
13  REAL,POINTER,SAVE :: pbarug(:,:)
14  REAL,POINTER,SAVE :: pbarvg(:,:)
15  REAL,POINTER,SAVE :: wg(:,:)
16
17  REAL,POINTER,SAVE :: massem(:,:)
18 
19CONTAINS
20
21  SUBROUTINE caladvtrac_allocate
22  USE bands
23  USE allocate_field_mod
24  USE parallel_lmdz
25  USE infotrac, ONLY: nqtot
26  USE advtrac_mod, ONLY : advtrac_allocate
27  USE groupe_mod
28  IMPLICIT NONE
29  INCLUDE "dimensions.h"
30  INCLUDE "paramet.h"
31  TYPE(distrib),POINTER :: d
32
33    d=>distrib_vanleer
34    CALL allocate_u(q_adv,llm,nqtot,d)
35    CALL allocate_u(massem_adv,llm,d)
36    CALL allocate_u(wg_adv,llm,d)
37    CALL allocate_u(teta_adv,llm,d)
38    CALL allocate_u(p_adv,llmp1,d)
39    CALL allocate_u(pk_adv,llm,d)
40    CALL allocate_u(pbarug_adv,llm,d)
41    CALL allocate_v(pbarvg_adv,llm,d)
42
43    d=>distrib_caldyn
44    CALL allocate_u(massem,llm,d)
45    CALL allocate_u(pbaruc,llm,d)
46    pbaruc(:,:)=0
47    CALL allocate_v(pbarvc,llm,d)
48    pbarvc(:,:)=0
49    CALL allocate_u(pbarug,llm,d)
50    CALL allocate_v(pbarvg,llm,d)
51    CALL allocate_u(wg,llm,d)
52
53    CALL groupe_allocate
54    CALL advtrac_allocate
55   
56  END SUBROUTINE caladvtrac_allocate
57 
58  SUBROUTINE caladvtrac_switch_caldyn(dist)
59  USE allocate_field_mod
60  USE bands
61  USE parallel_lmdz
62  USE groupe_mod
63  IMPLICIT NONE
64    TYPE(distrib),INTENT(IN) :: dist
65
66    CALL switch_u(massem,distrib_caldyn,dist)
67    CALL switch_u(pbaruc,distrib_caldyn,dist)
68    CALL switch_v(pbarvc,distrib_caldyn,dist,up=1)
69    CALL switch_u(pbarug,distrib_caldyn,dist)
70    CALL switch_v(pbarvg,distrib_caldyn,dist)
71    CALL switch_u(wg,distrib_caldyn,dist)
72   
73    CALL groupe_switch_caldyn(dist)
74
75  END SUBROUTINE caladvtrac_switch_caldyn
76 
77  SUBROUTINE caladvtrac_switch_vanleer(dist)
78  USE allocate_field_mod
79  USE bands
80  USE parallel_lmdz
81  USE advtrac_mod, ONLY : advtrac_switch_vanleer
82  IMPLICIT NONE
83    TYPE(distrib),INTENT(IN) :: dist
84 
85    CALL switch_u(q_adv,distrib_vanleer,dist)
86    CALL switch_u(massem_adv,distrib_vanleer,dist)
87    CALL switch_u(wg_adv,distrib_vanleer,dist)
88    CALL switch_u(teta_adv,distrib_vanleer,dist)
89    CALL switch_u(p_adv,distrib_vanleer,dist)
90    CALL switch_u(pk_adv,distrib_vanleer,dist)
91    CALL switch_u(pbarug_adv,distrib_vanleer,dist)
92    CALL switch_v(pbarvg_adv,distrib_vanleer,dist)
93
94    CALL advtrac_switch_vanleer(dist)
95   
96  END SUBROUTINE caladvtrac_switch_vanleer 
97 
98END MODULE caladvtrac_mod 
Note: See TracBrowser for help on using the repository browser.