Changeset 164


Ignore:
Timestamp:
06/29/13 02:30:24 (11 years ago)
Author:
dubos
Message:

Williamson (1991) test case

Location:
codes/icosagcm/trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/etat0.f90

    r159 r164  
    77    USE icosa 
    88    USE disvert_mod 
     9    USE etat0_williamson_mod, ONLY : etat0_williamson_new 
    910    USE etat0_jablonowsky06_mod, ONLY : etat0_jablonowsky06=>etat0 
    1011    USE etat0_academic_mod, ONLY : etat0_academic=>etat0   
     
    4142     
    4243    SELECT CASE (TRIM(etat0_type)) 
     44    CASE ('williamson91.5') 
     45       CALL etat0_williamson_new(f_phis,f_mass,f_theta_rhodz,f_u, f_q) 
     46       init_mass=.FALSE. 
    4347    CASE ('jablonowsky06') 
    4448       CALL etat0_jablonowsky06(f_ps,f_phis,f_theta_rhodz,f_u, f_q) 
  • codes/icosagcm/trunk/src/etat0_williamson.f90

    r19 r164  
    77    REAL(rstd), PARAMETER :: omega0=K0 
    88     
    9   PUBLIC  etat0_williamson, compute_etat0_williamson 
     9    PUBLIC  etat0_williamson, etat0_williamson_new 
     10     
    1011CONTAINS 
    1112   
     
    3031 
    3132  END SUBROUTINE etat0_williamson  
     33   
     34  SUBROUTINE etat0_williamson_new(f_phis,f_mass,f_theta_rhodz,f_u, f_q) 
     35  USE icosa 
     36  USE mpipara, ONLY : is_mpi_root 
     37  USE disvert_mod, ONLY : caldyn_eta, eta_lag 
     38 
     39  IMPLICIT NONE 
     40    TYPE(t_field),POINTER :: f_phis(:) 
     41    TYPE(t_field),POINTER :: f_mass(:) 
     42    TYPE(t_field),POINTER :: f_theta_rhodz(:) 
     43    TYPE(t_field),POINTER :: f_u(:) 
     44    TYPE(t_field),POINTER :: f_q(:) 
     45   
     46    REAL(rstd),POINTER :: phis(:) 
     47    REAL(rstd),POINTER :: h(:,:) 
     48    REAL(rstd),POINTER :: theta_rhodz(:,:) 
     49    REAL(rstd),POINTER :: u(:,:) 
     50    INTEGER :: ind 
     51 
     52    IF(caldyn_eta /= eta_lag) THEN 
     53       IF(is_mpi_root) PRINT *, 'etat0_type=williamson91.5 (Williamson,1991) must be used with caldyn_eta=eta_lag' 
     54       STOP 
     55    END IF 
     56 
     57    IF(llm>1) THEN 
     58       IF(is_mpi_root) PRINT *, 'etat0_type=williamson91.5 (Williamson,1991) must be used with llm=1 but llm =',llm 
     59       STOP 
     60    END IF 
     61 
     62    DO ind=1,ndomain 
     63      CALL swap_dimensions(ind) 
     64      CALL swap_geometry(ind) 
     65      h=f_mass(ind) 
     66      u=f_u(ind) 
     67      theta_rhodz=f_theta_rhodz(ind) 
     68      phis=f_phis(ind) 
     69      CALL compute_etat0_williamson(h(:,1), u(:,1)) 
     70      phis(:)=0. 
     71      theta_rhodz(:,:) = h(:,:) 
     72    ENDDO 
     73 
     74  END SUBROUTINE etat0_williamson_new 
    3275   
    3376  SUBROUTINE compute_etat0_williamson(hi, ue) 
     
    97140    ENDDO 
    98141 
    99     de_min=1e10 
    100     DO j=jj_begin,jj_end 
    101       DO i=ii_begin,ii_end 
    102         n=(j-1)*iim+i 
    103         de_min=MIN(de_min,de(n+u_right),de(n+u_rup),de(n+u_lup),de(n+u_left),de(n+u_ldown),de(n+u_rdown)) 
    104       ENDDO 
    105      ENDDO 
    106     PRINT *,"-----> de min :",de_min  
    107    
    108142  CONTAINS 
    109143     
Note: See TracChangeset for help on using the changeset viewer.