source: codes/icosagcm/trunk/src/caldyn.f90 @ 78

Last change on this file since 78 was 19, checked in by ymipsl, 12 years ago

Simplify the management of the module.

YM

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