source: codes/icosagcm/trunk/src/physics.f90 @ 176

Last change on this file since 176 was 170, checked in by dubos, 11 years ago

Activated call to physics - Held & Suarez test case seems to work now

File size: 2.0 KB
Line 
1MODULE physics_mod
2
3  CHARACTER(LEN=255) :: physics_type="automatic"
4
5
6CONTAINS
7
8  SUBROUTINE init_physics
9    USE icosa
10    USE physics_dcmip_mod,init_physics_dcmip=>init_physics
11    USE physics_dry_mod
12    IMPLICIT NONE
13
14    CALL getin("physics",physics_type)
15
16    SELECT CASE(TRIM(physics_type))
17    CASE ('automatic')
18
19    CASE ('dcmip')
20       CALL init_physics_dcmip
21
22    CASE ('dry')
23       CALL init_physics_dry
24
25    CASE DEFAULT
26       PRINT*, 'init_physics : Bad selector for variable physics <',TRIM(physics_type), &
27            '> options are <automatic>, <dcmip>, <dry>'
28       STOP
29    END SELECT
30
31  END SUBROUTINE init_physics
32
33  SUBROUTINE physics(it,jD_cur,jH_cur,f_phis, f_ps, f_theta_rhodz, f_ue, f_q)
34    USE icosa
35    USE physics_dry_mod
36    USE physics_dcmip_mod, physics_dcmip=>physics
37    USE etat0_mod
38    USE etat0_heldsz_mod
39    IMPLICIT NONE
40    INTEGER, INTENT(IN)   :: it
41    REAL(rstd),INTENT(IN)::jD_cur,jH_cur
42    TYPE(t_field),POINTER :: f_phis(:)
43    TYPE(t_field),POINTER :: f_ps(:)
44    TYPE(t_field),POINTER :: f_theta_rhodz(:)
45    TYPE(t_field),POINTER :: f_ue(:)
46    TYPE(t_field),POINTER :: f_q(:)
47    LOGICAL:: firstcall,lastcall
48
49    SELECT CASE(TRIM(physics_type))
50    CASE ('automatic')
51
52       SELECT CASE(TRIM(etat0_type))
53       CASE('held_suarez')
54          !     CALL transfert_request(f_ps,req_i1)
55          !     CALL transfert_request(f_theta_rhodz,req_i1)
56          !     CALL transfert_request(f_ue,req_e1_vect)
57          CALL held_suarez(f_ps,f_theta_rhodz,f_ue) 
58       CASE DEFAULT
59          PRINT*,"NO PHYSICAL PACAKAGE USED" ! FIXME MPI
60       END SELECT
61
62    CASE ('dcmip')
63       CALL physics_dcmip(it, f_phis, f_ps, f_theta_rhodz, f_ue, f_q)
64
65    CASE ('dry')
66       CALL physics_dry(it,jD_cur,jH_cur,f_phis, f_ps, f_theta_rhodz, f_ue, f_q)
67
68    CASE DEFAULT
69       PRINT*, 'Bad selector for variable physics <',TRIM(physics_type), &
70            '> options are <automatic>, <dcmip>, <dry>'
71       STOP
72    END SELECT
73
74  END SUBROUTINE physics
75
76END MODULE physics_mod
Note: See TracBrowser for help on using the repository browser.