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

Last change on this file since 104 was 98, checked in by ymipsl, 12 years ago

Put time variable : dt, itaumax, write_period, itau_out in the time 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
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 
16    caldyn_type="gcm"
17    CALL getin('caldyn',caldyn_type)
18   
19    SELECT CASE (TRIM(caldyn_type))
20      CASE('gcm')
21        CALL init_caldyn_gcm
22      CASE('adv')
23        CALL init_caldyn_adv
24      CASE DEFAULT
25        PRINT*,'Bad selector for variable caldyn : <', TRIM(caldyn_type),'> options are <gcm>, <adv>'
26        STOP
27    END SELECT
28       
29     
30  END SUBROUTINE init_caldyn
31 
32  SUBROUTINE caldyn(it,f_phis, f_ps, f_theta_rhodz, f_u, f_dps, f_dtheta_rhodz, f_du)
33  USE icosa
34  USE caldyn_gcm_mod, ONLY : caldyn_gcm=>caldyn
35  USE caldyn_adv_mod, ONLY : caldyn_adv=>caldyn
36  IMPLICIT NONE
37  INTEGER,INTENT(IN)    :: it
38  TYPE(t_field),POINTER :: f_phis(:)
39  TYPE(t_field),POINTER :: f_ps(:)
40  TYPE(t_field),POINTER :: f_theta_rhodz(:)
41  TYPE(t_field),POINTER :: f_u(:)
42  TYPE(t_field),POINTER :: f_dps(:)
43  TYPE(t_field),POINTER :: f_dtheta_rhodz(:)
44  TYPE(t_field),POINTER :: f_du(:)
45
46    SELECT CASE (TRIM(caldyn_type))
47      CASE('gcm')
48        CALL caldyn_gcm(it,f_phis, f_ps, f_theta_rhodz, f_u, f_dps, f_dtheta_rhodz, f_du)
49      CASE('adv')
50        CALL caldyn_adv(it,f_phis, f_ps, f_theta_rhodz, f_u, f_dps, f_dtheta_rhodz, f_du)
51    END SELECT
52 
53  END SUBROUTINE caldyn 
54
55END MODULE caldyn_mod
Note: See TracBrowser for help on using the repository browser.