source: codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/caldyn.f90 @ 221

Last change on this file since 221 was 221, checked in by ymipsl, 10 years ago

Creating temporary dynamico/lmdz/saturn branche

YM

File size: 1.9 KB
Line 
1MODULE caldyn_mod
2  USE icosa
3  USE caldyn_gcm_mod, ONLY : caldyn_BC
4  PRIVATE
5  CHARACTER(LEN=255),SAVE :: caldyn_type
6!$OMP THREADPRIVATE(caldyn_type)
7 
8  PUBLIC init_caldyn, caldyn, caldyn_BC
9 
10CONTAINS
11
12  SUBROUTINE init_caldyn
13  USE icosa
14  USE caldyn_gcm_mod, ONLY : init_caldyn_gcm=>init_caldyn
15  USE caldyn_adv_mod, ONLY : init_caldyn_adv=>init_caldyn
16  IMPLICIT NONE
17 
18    caldyn_type="gcm"
19    CALL getin('caldyn',caldyn_type)
20   
21    SELECT CASE (TRIM(caldyn_type))
22      CASE('gcm')
23        CALL init_caldyn_gcm
24      CASE('adv')
25        CALL init_caldyn_adv
26      CASE DEFAULT
27        PRINT*,'Bad selector for variable caldyn : <', TRIM(caldyn_type),'> options are <gcm>, <adv>'
28        STOP
29    END SELECT
30       
31     
32  END SUBROUTINE init_caldyn
33 
34  SUBROUTINE caldyn(write_out,f_phis, f_ps, f_mass, f_theta_rhodz, f_u, f_q, &
35       f_hflux, f_wflux, f_dps, f_dmass, f_dtheta_rhodz, f_du)
36  USE icosa
37  USE caldyn_gcm_mod, ONLY : caldyn_gcm=>caldyn
38  USE caldyn_adv_mod, ONLY : caldyn_adv=>caldyn
39  IMPLICIT NONE
40  LOGICAL,INTENT(IN)    :: write_out
41  TYPE(t_field),POINTER :: f_phis(:)
42  TYPE(t_field),POINTER :: f_ps(:)
43  TYPE(t_field),POINTER :: f_mass(:)
44  TYPE(t_field),POINTER :: f_theta_rhodz(:)
45  TYPE(t_field),POINTER :: f_u(:)
46  TYPE(t_field),POINTER :: f_q(:)
47  TYPE(t_field),POINTER :: f_hflux(:)
48  TYPE(t_field),POINTER :: f_wflux(:)
49  TYPE(t_field),POINTER :: f_dps(:)
50  TYPE(t_field),POINTER :: f_dmass(:)
51  TYPE(t_field),POINTER :: f_dtheta_rhodz(:)
52  TYPE(t_field),POINTER :: f_du(:)
53
54    SELECT CASE (TRIM(caldyn_type))
55      CASE('gcm')
56        CALL caldyn_gcm(write_out,f_phis, f_ps, f_mass, f_theta_rhodz, f_u, f_q, &
57             f_hflux, f_wflux, f_dps, f_dmass, f_dtheta_rhodz, f_du)
58      CASE('adv')
59        CALL caldyn_adv(write_out,f_phis, f_ps, f_theta_rhodz, f_u, f_q, &
60             f_hflux, f_wflux, f_dps, f_dtheta_rhodz, f_du)
61    END SELECT
62 
63  END SUBROUTINE caldyn 
64
65END MODULE caldyn_mod
Note: See TracBrowser for help on using the repository browser.