source: CONFIG/UNIFORM/v7/ICOLMDZOR_v7/SOURCES/DYNAMICO/src/vertical/disvert_ncarl30.f90 @ 5878

Last change on this file since 5878 was 5878, checked in by aclsce, 3 years ago

Merged LMDZORv6.2.2 with ICOLMDZOR_v7 configuration te be able to launch LMDZOR experiment from ICOLMDZOR configuration.
Use of NPv6.2 physiq version in ICOLMDZOR experiments.

File size: 4.4 KB
Line 
1MODULE disvert_ncarl30_mod
2  USE icosa
3
4  REAL(rstd), SAVE, ALLOCATABLE,TARGET :: ap(:)
5!$OMP THREADPRIVATE(ap)
6  REAL(rstd), SAVE, ALLOCATABLE,TARGET :: bp(:)
7!$OMP THREADPRIVATE(bp)
8  REAL(rstd), SAVE, ALLOCATABLE,TARGET :: presnivs(:)
9!$OMP THREADPRIVATE(presnivs)
10  REAL(rstd), SAVE, ALLOCATABLE,TARGET :: presinter(:)
11!$OMP THREADPRIVATE(presinter)
12
13
14CONTAINS
15
16  SUBROUTINE init_disvert
17  USE icosa
18  USE mpipara
19  IMPLICIT NONE
20 
21    IF (llm/=30) STOP 'ERROR, the initialisation of this vertical discretisation must be done with 30 levels'
22    ALLOCATE(ap(llm+1))
23    ALLOCATE(bp(llm+1))
24    ALLOCATE(presnivs(llm))
25    ALLOCATE(presinter(llm+1))
26
27    CALL disvert(ap,bp,presnivs,presinter)   
28
29  END SUBROUTINE init_disvert 
30
31
32  SUBROUTINE disvert(ap,bp,presnivs,presinter)
33  USE icosa
34  USE mpipara
35  IMPLICIT NONE
36  REAL(rstd),INTENT(OUT) :: ap(:)
37  REAL(rstd),INTENT(OUT) :: bp(:)
38  REAL(rstd),INTENT(OUT) :: presnivs(:)
39  REAL(rstd),INTENT(OUT) :: presinter(:)
40  INTEGER :: l
41  REAL(rstd) :: a(31)=(/ 0.00225523952394724, &
42                         0.00503169186413288, &
43                         0.0101579474285245 , &
44                         0.0185553170740604 , &
45                         0.0306691229343414 , &
46                         0.0458674766123295 , &
47                         0.0633234828710556 , &
48                         0.0807014182209969 , &
49                         0.0949410423636436 , &
50                         0.11169321089983   , &
51                         0.131401270627975  , &
52                         0.154586806893349  , &
53                         0.181863352656364  , &
54                         0.17459799349308   , &
55                         0.166050657629967  , &
56                         0.155995160341263  , &
57                         0.14416541159153   , &
58                         0.130248308181763  , &
59                         0.113875567913055  , &
60                         0.0946138575673103 , &
61                         0.0753444507718086 , &
62                         0.0576589405536652 , &
63                         0.0427346378564835 , &
64                         0.0316426791250706 , &
65                         0.0252212174236774 , &
66                         0.0191967375576496 , &
67                         0.0136180268600583 , &
68                         0.00853108894079924, &
69                         0.00397881818935275, &
70                         0.                 , &
71                         0. /) 
72                         
73  REAL(rstd) :: b(31)=(/ 0.                 , &
74                         0.                 , &
75                         0.                 , &
76                         0.                 , &
77                         0.                 , &
78                         0.                 , &
79                         0.                 , &
80                         0.                 , &
81                         0.                 , &
82                         0.                 , &
83                         0.                 , &
84                         0.                 , &
85                         0.                 , &
86                         0.0393548272550106 , &
87                         0.0856537595391273 , &
88                         0.140122056007385  , &
89                         0.204201176762581  , &
90                         0.279586911201477  , &
91                         0.368274360895157  , &
92                         0.47261056303978   , &
93                         0.576988518238068  , &
94                         0.672786951065063  , &
95                         0.753628432750702  , &
96                         0.813710987567902  , &
97                         0.848494648933411  , &
98                         0.881127893924713  , &
99                         0.911346435546875  , &
100                         0.938901245594025  , &
101                         0.963559806346893  , &
102                         0.985112190246582  , &
103                         1. /)                         
104                   
105    ap(:)=a(31:1:-1)*preff
106    bp(:)=b(31:1:-1) 
107    DO l = 1, llm
108      presnivs(l) = 0.5 *( ap(l)+bp(l)*preff + ap(l+1)+bp(l+1)*preff )
109
110!$OMP MASTER 
111     IF (is_mpi_root)  PRINT*, 'PRESNIVS(',l,')=',presnivs(l),'  Z ~ ',log(preff/presnivs(l))*8.,       &
112                               ' DZ ~ ',8.*log((ap(l)+bp(l)*preff)/ max(ap(l+1)+bp(l+1)*preff,1.e-10))
113!$OMP END MASTER
114    ENDDO
115
116    DO l=1, llm+1
117      presinter(l)= ap(l)+bp(l)*preff
118    ENDDO
119
120 
121  END SUBROUTINE disvert
122 
123END MODULE disvert_ncarl30_mod
Note: See TracBrowser for help on using the repository browser.