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

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

Synchronize trunk and Saturn branch.
Merge modification from trunk branch to Saturn branch.

YM

File size: 2.2 KB
Line 
1MODULE caldyn_mod
2  USE icosa
3  PRIVATE
4  CHARACTER(LEN=255),SAVE :: caldyn_type
5!$OMP THREADPRIVATE(caldyn_type)
6 
7  PUBLIC init_caldyn, caldyn, caldyn_BC
8 
9CONTAINS
10
11  SUBROUTINE init_caldyn
12  USE icosa
13  USE caldyn_gcm_mod, ONLY : init_caldyn_gcm=>init_caldyn
14  USE caldyn_adv_mod, ONLY : init_caldyn_adv=>init_caldyn
15  IMPLICIT NONE
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
23      CASE('adv')
24        CALL init_caldyn_adv
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_BC(f_phis, f_wflux)
34    USE caldyn_gcm_mod, ONLY : caldyn_gcm_BC=>caldyn_BC
35    IMPLICIT NONE
36    TYPE(t_field), POINTER :: f_phis(:), f_wflux(:)
37    SELECT CASE (TRIM(caldyn_type))
38    CASE('gcm')
39       CALL caldyn_gcm_BC(f_phis, f_wflux)
40    END SELECT
41  END SUBROUTINE caldyn_BC
42 
43  SUBROUTINE caldyn(write_out,f_phis, f_ps, f_mass, f_theta_rhodz, f_u, f_q, &
44       f_hflux, f_wflux, f_dps, f_dmass, f_dtheta_rhodz, f_du)
45  USE icosa
46  USE caldyn_gcm_mod, ONLY : caldyn_gcm=>caldyn
47  USE caldyn_adv_mod, ONLY : caldyn_adv=>caldyn
48  IMPLICIT NONE
49  LOGICAL,INTENT(IN)    :: write_out
50  TYPE(t_field),POINTER :: f_phis(:)
51  TYPE(t_field),POINTER :: f_ps(:)
52  TYPE(t_field),POINTER :: f_mass(:)
53  TYPE(t_field),POINTER :: f_theta_rhodz(:)
54  TYPE(t_field),POINTER :: f_u(:)
55  TYPE(t_field),POINTER :: f_q(:)
56  TYPE(t_field),POINTER :: f_hflux(:)
57  TYPE(t_field),POINTER :: f_wflux(:)
58  TYPE(t_field),POINTER :: f_dps(:)
59  TYPE(t_field),POINTER :: f_dmass(:)
60  TYPE(t_field),POINTER :: f_dtheta_rhodz(:)
61  TYPE(t_field),POINTER :: f_du(:)
62
63    SELECT CASE (TRIM(caldyn_type))
64      CASE('gcm')
65        CALL caldyn_gcm(write_out,f_phis, f_ps, f_mass, f_theta_rhodz, f_u, f_q, &
66             f_hflux, f_wflux, f_dps, f_dmass, f_dtheta_rhodz, f_du)
67      CASE('adv')
68        CALL caldyn_adv(write_out,f_phis, f_ps, f_theta_rhodz, f_u, f_q, &
69             f_hflux, f_wflux, f_dps, f_dtheta_rhodz, f_du)
70    END SELECT
71 
72  END SUBROUTINE caldyn 
73
74END MODULE caldyn_mod
Note: See TracBrowser for help on using the repository browser.