source: codes/icosagcm/trunk/src/etat0_dcmip2016_supercell.f90 @ 431

Last change on this file since 431 was 431, checked in by ymipsl, 8 years ago

Some cleaning for supercell dcmip 2016 etat0 state

YM

File size: 1.6 KB
Line 
1MODULE etat0_dcmip2016_supercell_mod
2  USE icosa
3  IMPLICIT NONE
4  PRIVATE
5 
6  PUBLIC getin_etat0, compute_etat0
7
8CONTAINS
9
10  SUBROUTINE getin_etat0
11    USE mpipara, ONLY : is_mpi_root
12    USE tracer_mod
13    USE dcmip2016_supercell_mod, ONLY : supercell_init, supercell_test
14    IF(nqtot<5) THEN
15       IF (is_mpi_root)  THEN
16          PRINT *, "nqtot must be at least 5 for test case dcmip2016_supercell"
17       END IF
18       STOP
19    END IF
20
21    CALL supercell_init
22   
23  END SUBROUTINE getin_etat0
24
25  SUBROUTINE compute_etat0(ngrid,lon,lat, phis,ps,temp,ulon,ulat,q)
26    USE icosa
27    USE disvert_mod
28    USE omp_para
29    USE dcmip2016_supercell_mod, ONLY : supercell_init, supercell_test, supercell_z
30    INTEGER, INTENT(IN) :: ngrid
31    REAL(rstd),INTENT(IN) :: lon(ngrid)
32    REAL(rstd),INTENT(IN) :: lat(ngrid)
33    REAL(rstd),INTENT(OUT) :: phis(ngrid)
34    REAL(rstd),INTENT(OUT) :: ps(ngrid)
35    REAL(rstd),INTENT(OUT) :: temp(ngrid,llm)
36    REAL(rstd),INTENT(OUT) :: ulon(ngrid,llm)
37    REAL(rstd),INTENT(OUT) :: ulat(ngrid,llm)
38    REAL(rstd),INTENT(OUT) :: q(ngrid,llm,nqtot)
39   
40    INTEGER :: l,ij
41    INTEGER,PARAMETER :: perturbation = 1
42   
43    REAL(rstd) :: p,z, thetav,rho
44 
45    phis(:)=0
46    DO ij=1,ngrid
47       z=0.
48       CALL supercell_z(lon(ij), lat(ij), z, ps(ij), thetav, rho, q(ij,1,1), perturbation)
49       DO l=ll_begin,ll_end
50         p=0.5*(ap(l)+ap(l+1) + (bp(l)+bp(l+1)) * ps(ij))
51         CALL supercell_test(lon(ij),lat(ij),p,z,0,ulon(ij,l),ulat(ij,l),temp(ij,l),thetav, ps(ij),rho, q(ij,l,1),perturbation) 
52       END DO
53    END DO
54   
55  END SUBROUTINE compute_etat0
56 
57END MODULE etat0_dcmip2016_supercell_mod
Note: See TracBrowser for help on using the repository browser.