MODULE caldyn_mod USE icosa PRIVATE CHARACTER(LEN=255),SAVE :: caldyn_type PUBLIC init_caldyn, caldyn CONTAINS SUBROUTINE init_caldyn(dt) USE icosa USE caldyn_gcm_mod, ONLY : init_caldyn_gcm=>init_caldyn USE caldyn_adv_mod, ONLY : init_caldyn_adv=>init_caldyn IMPLICIT NONE REAL(rstd),INTENT(IN) :: dt caldyn_type="gcm" CALL getin('caldyn',caldyn_type) SELECT CASE (TRIM(caldyn_type)) CASE('gcm') CALL init_caldyn_gcm(dt) CASE('adv') CALL init_caldyn_adv(dt) CASE DEFAULT PRINT*,'Bad selector for variable caldyn : <', TRIM(caldyn_type),'> options are , ' STOP END SELECT END SUBROUTINE init_caldyn SUBROUTINE caldyn(it,f_phis, f_ps, f_theta_rhodz, f_u, f_dps, f_dtheta_rhodz, f_du) USE icosa USE caldyn_gcm_mod, ONLY : caldyn_gcm=>caldyn USE caldyn_adv_mod, ONLY : caldyn_adv=>caldyn IMPLICIT NONE INTEGER,INTENT(IN) :: it TYPE(t_field),POINTER :: f_phis(:) TYPE(t_field),POINTER :: f_ps(:) TYPE(t_field),POINTER :: f_theta_rhodz(:) TYPE(t_field),POINTER :: f_u(:) TYPE(t_field),POINTER :: f_dps(:) TYPE(t_field),POINTER :: f_dtheta_rhodz(:) TYPE(t_field),POINTER :: f_du(:) SELECT CASE (TRIM(caldyn_type)) CASE('gcm') CALL caldyn_gcm(it,f_phis, f_ps, f_theta_rhodz, f_u, f_dps, f_dtheta_rhodz, f_du) CASE('adv') CALL caldyn_adv(it,f_phis, f_ps, f_theta_rhodz, f_u, f_dps, f_dtheta_rhodz, f_du) END SELECT END SUBROUTINE caldyn END MODULE caldyn_mod