Changeset 5756 for LMDZ6/trunk/libf/phylmdiso/isotopes_mod.F90
- Timestamp:
- Jul 3, 2025, 3:25:59 PM (3 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmdiso/isotopes_mod.F90
r5754 r5756 4 4 MODULE isotopes_mod 5 5 USE strings_mod, ONLY: msg, num2str, maxlen, strIdx, strStack 6 USE infotrac_phy, ONLY: isoName, niso, ntiso 6 USE infotrac_phy, ONLY: isoName, niso, ntiso, nbIso, isoFamilies, isoSelect, isoCheck 7 7 USE iso_params_mod 8 8 USE ioipsl_getin_p_mod, ONLY : getin_p … … 150 150 151 151 !=== Local variables: 152 INTEGER :: ixt, is 152 INTEGER :: ixt, is, ii 153 153 LOGICAL :: ltnat1 154 154 CHARACTER(LEN=maxlen) :: modname, sxt … … 175 175 CALL msg('64: niso = '//TRIM(num2str(niso)), modname) 176 176 177 DO ii = 1, nbIso 178 CALL msg('Can''t select isotopes class "'//TRIM(isoFamilies(ii))//'"', modname, isoSelect(ii, lVerbose=.TRUE.)) 179 180 !============================================================================================================================== 181 IF(isoFamilies(ii) == 'H2O') THEN 182 !============================================================================================================================== 177 183 !--- Init de ntracisoOR: on ecrasera en cas de traceurs de tagging isotopiques 178 184 ! (nzone>0) si complications avec ORCHIDEE … … 203 209 CALL getin_p( 'sstlatcrit', sstlatcrit, 30.0) !--- For modif_sst>=3 204 210 CALL getin_p('dsstlatcrit', dsstlatcrit, 0.0) !--- For modif_sst>=3 205 #ifdef ISOVERIF 211 IF(isoCheck) THEN 206 212 CALL msg('iso_init 270: sstlatcrit='//num2str( sstlatcrit), modname, sstlatcrit < 0.0) !--- For modif_sst>=2 207 213 CALL msg('iso_init 279: dsstlatcrit='//num2str(dsstlatcrit), modname, sstlatcrit < 0.0) !--- For modif_sst>=3 208 214 IF(modif_sst >= 2 .AND. sstlatcrit < 0.0) STOP 209 #endif 210 215 END IF 211 216 CALL getin_p('modif_sic', modif_sic, 0) 212 217 IF(modif_sic >= 1) & … … 238 243 CALL getin_p('A_satlim', A_satlim, 1.0) 239 244 CALL getin_p('ok_restrict_A_satlim', ok_restrict_A_satlim, 0) 240 #ifdef ISOVERIF 245 IF(isoCheck) THEN 241 246 CALL msg(' 315: A_satlim='//TRIM(num2str(A_satlim)), modname, A_satlim > 1.0) 242 247 IF(A_satlim > 1.0) STOP 243 #endif 248 END IF 244 249 ! CALL getin_p('slope_limiterxy', slope_limiterxy, 2.0) 245 250 ! CALL getin_p('slope_limiterz', slope_limiterz, 2.0) … … 374 379 CALL msg('69: h_land_ice = '//TRIM(num2str(h_land_ice)), modname) 375 380 CALL msg('69: P_veg = '//TRIM(num2str(P_veg)), modname) 381 !============================================================================================================================== 382 ELSE 383 !============================================================================================================================== 384 CALL abort_physic('"isotopes_mod" is not set up yet for isotopes family "'//TRIM(isoFamilies(ii))//'"', modname, 1) 385 !============================================================================================================================== 386 END IF 387 !============================================================================================================================== 388 END DO 376 389 377 390 END SUBROUTINE iso_init 378 379 380 SUBROUTINE getinp_s(nam, val, def, lDisp)381 USE ioipsl, ONLY: getin382 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root383 USE mod_phys_lmdz_omp_data, ONLY : is_omp_root384 USE mod_phys_lmdz_transfert_para, ONLY : bcast385 CHARACTER(LEN=*), INTENT(IN) :: nam386 CHARACTER(LEN=*), INTENT(INOUT) :: val387 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: def388 LOGICAL, OPTIONAL, INTENT(IN) :: lDisp389 LOGICAL :: lD390 !$OMP BARRIER391 IF(is_mpi_root.AND.is_omp_root) THEN392 IF(PRESENT(def)) val=def; CALL getin(nam,val)393 lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp394 IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(val))395 END IF396 CALL bcast(val)397 END SUBROUTINE getinp_s398 399 SUBROUTINE getinp_i(nam, val, def, lDisp)400 USE ioipsl, ONLY: getin401 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root402 USE mod_phys_lmdz_omp_data, ONLY : is_omp_root403 USE mod_phys_lmdz_transfert_para, ONLY : bcast404 CHARACTER(LEN=*), INTENT(IN) :: nam405 INTEGER, INTENT(INOUT) :: val406 INTEGER, OPTIONAL, INTENT(IN) :: def407 LOGICAL, OPTIONAL, INTENT(IN) :: lDisp408 LOGICAL :: lD409 !$OMP BARRIER410 IF(is_mpi_root.AND.is_omp_root) THEN411 IF(PRESENT(def)) val=def; CALL getin(nam,val)412 lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp413 IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(num2str(val)))414 END IF415 CALL bcast(val)416 END SUBROUTINE getinp_i417 418 SUBROUTINE getinp_r(nam, val, def, lDisp)419 USE ioipsl, ONLY: getin420 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root421 USE mod_phys_lmdz_omp_data, ONLY : is_omp_root422 USE mod_phys_lmdz_transfert_para, ONLY : bcast423 CHARACTER(LEN=*), INTENT(IN) :: nam424 REAL, INTENT(INOUT) :: val425 REAL, OPTIONAL, INTENT(IN) :: def426 LOGICAL, OPTIONAL, INTENT(IN) :: lDisp427 LOGICAL :: lD428 !$OMP BARRIER429 IF(is_mpi_root.AND.is_omp_root) THEN430 IF(PRESENT(def)) val=def; CALL getin(nam,val)431 lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp432 IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(num2str(val)))433 END IF434 CALL bcast(val)435 END SUBROUTINE getinp_r436 437 SUBROUTINE getinp_l(nam, val, def, lDisp)438 USE ioipsl, ONLY: getin439 USE mod_phys_lmdz_mpi_data, ONLY : is_mpi_root440 USE mod_phys_lmdz_omp_data, ONLY : is_omp_root441 USE mod_phys_lmdz_transfert_para, ONLY : bcast442 CHARACTER(LEN=*), INTENT(IN) :: nam443 LOGICAL, INTENT(INOUT) :: val444 LOGICAL, OPTIONAL, INTENT(IN) :: def445 LOGICAL, OPTIONAL, INTENT(IN) :: lDisp446 LOGICAL :: lD447 !$OMP BARRIER448 IF(is_mpi_root.AND.is_omp_root) THEN449 IF(PRESENT(def)) val=def; CALL getin(nam,val)450 lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp451 IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(num2str(val)))452 END IF453 CALL bcast(val)454 END SUBROUTINE getinp_l455 391 456 392 END MODULE isotopes_mod
Note: See TracChangeset
for help on using the changeset viewer.