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

Last change on this file since 251 was 251, checked in by dubos, 10 years ago

Fix for caldyn=adv

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.