Changeset 906 for codes/icosagcm/devel


Ignore:
Timestamp:
06/14/19 01:17:50 (5 years ago)
Author:
dubos
Message:

devel : compute_rhodz for unstructured mesh

Location:
codes/icosagcm/devel/src
Files:
4 added
6 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/base/init_grid_param.f90

    r863 r906  
    11MODULE init_grid_param_mod 
     2 
     3  USE compute_diagnostics_mod 
     4  USE compute_rhodz_mod 
     5 
     6  USE compute_caldyn_mod 
     7  USE compute_pvort_only_mod 
     8 
    29  IMPLICIT NONE 
     10  PRIVATE 
     11  SAVE 
     12   
     13  PUBLIC :: init_grid_param 
    314 
    415CONTAINS 
     
    2031       jjm_glo=iim_glo 
    2132       IF(is_mpi_root) PRINT *, 'GETIN nbp = ',iim_glo 
     33       CALL select_compute_hex 
    2234    CASE('unstructured') 
    2335       grid_type = grid_unst 
     
    2638       CALL open_local_mesh_file 
    2739       IF (is_mpi_root) PRINT *,'DYNAMICO mesh is unstructured/LAM.' 
     40       CALL select_compute_unst 
    2841    CASE DEFAULT 
    2942       PRINT *, 'Invalid value of grid_type :',TRIM(grid_type_var) 
     
    4154     
    4255  END SUBROUTINE  init_grid_param 
     56 
     57 
     58  SUBROUTINE select_compute_hex 
     59    compute_rhodz      => compute_rhodz_hex 
     60    compute_pvort_only => compute_pvort_only_hex 
     61  END SUBROUTINE select_compute_hex 
     62 
     63  SUBROUTINE select_compute_unst 
     64    compute_rhodz      => compute_rhodz_unst 
     65    compute_pvort_only => compute_pvort_only_unst 
     66  END SUBROUTINE select_compute_unst 
     67 
    4368   
    4469END MODULE init_grid_param_mod 
    45      
  • codes/icosagcm/devel/src/diagnostics/observable.f90

    r868 r906  
    5858!    IF (is_master) PRINT *,'CALL write_output_fields_basic' 
    5959 
    60     IF(grid_type==grid_unst) RETURN ! FIXME 
    61  
    6260    CALL transfert_request(f_ps,req_i1) 
    6361     
     
    102100 
    103101    IF(init) THEN 
     102       CALL output_field("p_init",f_pmid) 
     103       CALL output_field("ps_init",f_ps) 
     104       CALL output_field("mass_init",f_mass) 
     105       CALL output_field("geopot_init",f_geopot) 
     106       CALL output_field("q_init",f_q) 
     107 
    104108       CALL output_field("temp_init",f_buf_i) 
    105109    ELSE 
     110       CALL output_field("p",f_pmid) 
     111       CALL output_field("ps",f_ps) 
     112       CALL output_field("mass",f_mass) 
     113       CALL output_field("geopot",f_geopot) 
     114       CALL output_field("q",f_q) 
     115 
    106116       CALL output_field("temp",f_buf_i) 
    107117       CALL vertical_interp(f_pmid,f_buf_i,f_buf_s,85000.) 
     
    113123    END IF 
    114124     
     125    IF(grid_type == grid_unst) RETURN 
     126 
    115127    CALL progonostic_vel_to_horiz(f_geopot, f_ps, f_mass, f_u, f_W, f_buf_uh, f_buf_i) 
    116128    CALL transfert_request(f_buf_uh,req_e1_vect)  
     
    120132       CALL output_field("ulon_init",f_buf_ulon) 
    121133       CALL output_field("ulat_init",f_buf_ulat) 
    122        CALL output_field("p_init",f_pmid) 
    123        CALL output_field("ps_init",f_ps) 
    124        CALL output_field("mass_init",f_mass) 
    125        CALL output_field("geopot_init",f_geopot) 
    126        CALL output_field("q_init",f_q) 
    127134       IF(is_master) PRINT *, 'Done writing initial condition ...' 
    128135    ELSE 
     
    130137       CALL output_field("ulon",f_buf_ulon) 
    131138       CALL output_field("ulat",f_buf_ulat) 
    132        CALL output_field("p",f_pmid) 
    133        CALL output_field("ps",f_ps) 
    134        CALL output_field("mass",f_mass) 
    135        CALL output_field("geopot",f_geopot) 
    136        CALL output_field("q",f_q) 
    137139 
    138140       !       CALL output_field("exner",f_pk) 
     
    211213 
    212214  SUBROUTINE progonostic_vel_to_horiz(f_geopot, f_ps, f_rhodz, f_u, f_W, f_uh, f_uz) 
    213     USE disvert_mod 
     215    USE disvert_mod, ONLY : caldyn_eta, eta_mass 
     216    USE compute_diagnostics_mod, ONLY : compute_rhodz 
    214217    TYPE(t_field), POINTER :: f_geopot(:), f_ps(:), f_rhodz(:), & 
    215218         f_u(:), f_W(:), f_uz(:), &  ! IN 
     
    294297    USE pression_mod 
    295298    IMPLICIT NONE 
    296     TYPE(t_field), POINTER :: f_pmid(:)           ! IN 
     299    TYPE(t_field), POINTER :: f_pmid(:)         ! IN 
    297300    TYPE(t_field), POINTER :: f_q(:)            ! IN 
    298301    TYPE(t_field), POINTER :: f_temp(:)         ! INOUT 
     
    329332          p_ik = pmid(ij,l) 
    330333          theta_ik = temp(ij,l) 
    331           qv = q(ij,l,1) ! water vaper mixing ratio = mv/md 
     334          qv = q(ij,l,1) ! water vapor mixing ratio = mv/md 
    332335          SELECT CASE(caldyn_thermo) 
    333336          CASE(thermo_theta) 
  • codes/icosagcm/devel/src/dynamics/caldyn_gcm.F90

    r885 r906  
    1616   
    1717  SUBROUTINE init_caldyn 
    18     USE compute_caldyn_mod, ONLY : compute_pvort_only 
    19     USE compute_pvort_only_mod, ONLY : compute_pvort_only_hex, compute_pvort_only_unst 
    2018 
    2119    CHARACTER(len=255) :: def 
     
    160158          CALL compute_planetvel(planetvel) 
    161159       END DO 
    162        compute_pvort_only => compute_pvort_only_hex 
    163160    CASE(grid_unst) 
    164        compute_pvort_only => compute_pvort_only_unst 
    165161    END SELECT 
    166162 
  • codes/icosagcm/devel/src/initial/etat0.f90

    r847 r906  
    6363    USE omp_para, ONLY : is_omp_level_master 
    6464    USE mpipara, ONLY : is_mpi_root 
    65     USE disvert_mod 
     65    USE disvert_mod, ONLY : caldyn_eta, eta_lag 
     66    USE compute_diagnostics_mod, ONLY : compute_rhodz 
    6667    ! Generic interface 
    6768    USE etat0_isothermal_mod, ONLY : getin_etat0_isothermal=>getin_etat0 
  • codes/icosagcm/devel/src/time/timeloop_gcm.f90

    r820 r906  
    55  USE trace 
    66  USE omp_para 
     7  USE compute_diagnostics_mod, ONLY : compute_rhodz 
    78  USE euler_scheme_mod 
    89  USE explicit_scheme_mod 
     
    247248    !$OMP END MASTER    
    248249 
     250    IF(grid_type == grid_unst) RETURN 
     251 
    249252    DO it=itau0+1,itau0+itaumax 
    250253       IF (is_master) CALL print_iteration(it, itau0, itaumax, start_clock, rate_clock) 
  • codes/icosagcm/devel/src/vertical/disvert.f90

    r609 r906  
    148148  END SUBROUTINE init_disvert   
    149149   
    150   SUBROUTINE compute_rhodz(comp, ps, rhodz) 
    151     USE icosa 
    152     USE omp_para 
    153     LOGICAL, INTENT(IN) :: comp ! .TRUE. to compute, .FALSE. to check 
    154     REAL(rstd), INTENT(IN) :: ps(iim*jjm) 
    155     REAL(rstd), INTENT(INOUT) :: rhodz(iim*jjm,llm) 
    156     REAL(rstd) :: m, err 
    157     INTEGER :: l,i,j,ij,dd 
    158     err=0. 
    159  
    160     IF(comp) THEN 
    161        dd=1 
    162     ELSE 
    163        dd=0 
    164     END IF 
    165  
    166     DO l = ll_begin, ll_end 
    167        DO j=jj_begin-dd,jj_end+dd 
    168           DO i=ii_begin-dd,ii_end+dd 
    169              ij=(j-1)*iim+i 
    170              m = ( ap(l) - ap(l+1) + (bp(l)-bp(l+1))*ps(ij) )/g  
    171              IF(comp) THEN 
    172                 rhodz(ij,l) = m 
    173              ELSE 
    174                 err = MAX(err,abs(m-rhodz(ij,l))) 
    175              END IF 
    176           ENDDO 
    177        ENDDO 
    178     ENDDO 
    179  
    180     IF(.NOT. comp) THEN 
    181        IF(err>1e-10) THEN 
    182           PRINT *, 'Discrepancy between ps and rhodz detected', err 
    183           STOP 
    184        ELSE 
    185 !          PRINT *, 'No discrepancy between ps and rhodz detected' 
    186        END IF 
    187     END IF 
    188  
    189   END SUBROUTINE compute_rhodz 
    190  
    191   
    192150  SUBROUTINE write_apbp 
    193151  USE icosa 
Note: See TracChangeset for help on using the changeset viewer.