Changeset 906 for codes/icosagcm/devel/src
- Timestamp:
- 06/14/19 01:17:50 (5 years ago)
- 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 1 1 MODULE 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 2 9 IMPLICIT NONE 10 PRIVATE 11 SAVE 12 13 PUBLIC :: init_grid_param 3 14 4 15 CONTAINS … … 20 31 jjm_glo=iim_glo 21 32 IF(is_mpi_root) PRINT *, 'GETIN nbp = ',iim_glo 33 CALL select_compute_hex 22 34 CASE('unstructured') 23 35 grid_type = grid_unst … … 26 38 CALL open_local_mesh_file 27 39 IF (is_mpi_root) PRINT *,'DYNAMICO mesh is unstructured/LAM.' 40 CALL select_compute_unst 28 41 CASE DEFAULT 29 42 PRINT *, 'Invalid value of grid_type :',TRIM(grid_type_var) … … 41 54 42 55 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 43 68 44 69 END MODULE init_grid_param_mod 45 -
codes/icosagcm/devel/src/diagnostics/observable.f90
r868 r906 58 58 ! IF (is_master) PRINT *,'CALL write_output_fields_basic' 59 59 60 IF(grid_type==grid_unst) RETURN ! FIXME61 62 60 CALL transfert_request(f_ps,req_i1) 63 61 … … 102 100 103 101 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 104 108 CALL output_field("temp_init",f_buf_i) 105 109 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 106 116 CALL output_field("temp",f_buf_i) 107 117 CALL vertical_interp(f_pmid,f_buf_i,f_buf_s,85000.) … … 113 123 END IF 114 124 125 IF(grid_type == grid_unst) RETURN 126 115 127 CALL progonostic_vel_to_horiz(f_geopot, f_ps, f_mass, f_u, f_W, f_buf_uh, f_buf_i) 116 128 CALL transfert_request(f_buf_uh,req_e1_vect) … … 120 132 CALL output_field("ulon_init",f_buf_ulon) 121 133 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)127 134 IF(is_master) PRINT *, 'Done writing initial condition ...' 128 135 ELSE … … 130 137 CALL output_field("ulon",f_buf_ulon) 131 138 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)137 139 138 140 ! CALL output_field("exner",f_pk) … … 211 213 212 214 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 214 217 TYPE(t_field), POINTER :: f_geopot(:), f_ps(:), f_rhodz(:), & 215 218 f_u(:), f_W(:), f_uz(:), & ! IN … … 294 297 USE pression_mod 295 298 IMPLICIT NONE 296 TYPE(t_field), POINTER :: f_pmid(:) 299 TYPE(t_field), POINTER :: f_pmid(:) ! IN 297 300 TYPE(t_field), POINTER :: f_q(:) ! IN 298 301 TYPE(t_field), POINTER :: f_temp(:) ! INOUT … … 329 332 p_ik = pmid(ij,l) 330 333 theta_ik = temp(ij,l) 331 qv = q(ij,l,1) ! water vap er mixing ratio = mv/md334 qv = q(ij,l,1) ! water vapor mixing ratio = mv/md 332 335 SELECT CASE(caldyn_thermo) 333 336 CASE(thermo_theta) -
codes/icosagcm/devel/src/dynamics/caldyn_gcm.F90
r885 r906 16 16 17 17 SUBROUTINE init_caldyn 18 USE compute_caldyn_mod, ONLY : compute_pvort_only19 USE compute_pvort_only_mod, ONLY : compute_pvort_only_hex, compute_pvort_only_unst20 18 21 19 CHARACTER(len=255) :: def … … 160 158 CALL compute_planetvel(planetvel) 161 159 END DO 162 compute_pvort_only => compute_pvort_only_hex163 160 CASE(grid_unst) 164 compute_pvort_only => compute_pvort_only_unst165 161 END SELECT 166 162 -
codes/icosagcm/devel/src/initial/etat0.f90
r847 r906 63 63 USE omp_para, ONLY : is_omp_level_master 64 64 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 66 67 ! Generic interface 67 68 USE etat0_isothermal_mod, ONLY : getin_etat0_isothermal=>getin_etat0 -
codes/icosagcm/devel/src/time/timeloop_gcm.f90
r820 r906 5 5 USE trace 6 6 USE omp_para 7 USE compute_diagnostics_mod, ONLY : compute_rhodz 7 8 USE euler_scheme_mod 8 9 USE explicit_scheme_mod … … 247 248 !$OMP END MASTER 248 249 250 IF(grid_type == grid_unst) RETURN 251 249 252 DO it=itau0+1,itau0+itaumax 250 253 IF (is_master) CALL print_iteration(it, itau0, itaumax, start_clock, rate_clock) -
codes/icosagcm/devel/src/vertical/disvert.f90
r609 r906 148 148 END SUBROUTINE init_disvert 149 149 150 SUBROUTINE compute_rhodz(comp, ps, rhodz)151 USE icosa152 USE omp_para153 LOGICAL, INTENT(IN) :: comp ! .TRUE. to compute, .FALSE. to check154 REAL(rstd), INTENT(IN) :: ps(iim*jjm)155 REAL(rstd), INTENT(INOUT) :: rhodz(iim*jjm,llm)156 REAL(rstd) :: m, err157 INTEGER :: l,i,j,ij,dd158 err=0.159 160 IF(comp) THEN161 dd=1162 ELSE163 dd=0164 END IF165 166 DO l = ll_begin, ll_end167 DO j=jj_begin-dd,jj_end+dd168 DO i=ii_begin-dd,ii_end+dd169 ij=(j-1)*iim+i170 m = ( ap(l) - ap(l+1) + (bp(l)-bp(l+1))*ps(ij) )/g171 IF(comp) THEN172 rhodz(ij,l) = m173 ELSE174 err = MAX(err,abs(m-rhodz(ij,l)))175 END IF176 ENDDO177 ENDDO178 ENDDO179 180 IF(.NOT. comp) THEN181 IF(err>1e-10) THEN182 PRINT *, 'Discrepancy between ps and rhodz detected', err183 STOP184 ELSE185 ! PRINT *, 'No discrepancy between ps and rhodz detected'186 END IF187 END IF188 189 END SUBROUTINE compute_rhodz190 191 192 150 SUBROUTINE write_apbp 193 151 USE icosa
Note: See TracChangeset
for help on using the changeset viewer.