Changeset 4325 for LMDZ6/trunk/libf/phylmdiso/isotopes_mod.F90
- Timestamp:
- Nov 7, 2022, 3:09:43 AM (20 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phylmdiso/isotopes_mod.F90
r4319 r4325 133 133 134 134 SUBROUTINE iso_init() 135 USE ioipsl_getin_p_mod, ONLY: getin_p136 135 USE infotrac_phy, ONLY: ntiso, niso, getKey 137 136 USE strings_mod, ONLY: maxlen … … 181 180 iso_HTO = strIdx(isoName, 'H[3]HO'); CALL msg('iso_HTO='//int2str(iso_HTO), modname) 182 181 183 ! initialisation 184 ! lecture des parametres isotopiques: 185 ! pour que ca marche en openMP, il faut utiliser getin_p. Car le getin ne peut 186 ! etre appele que par un thread a la fois, et ca pose tout un tas de problemes, 187 ! d'ou tout un tas de magouilles comme dans conf_phys_m. A terme, tout le monde 188 ! lira par getin_p. 182 !--- Initialiaation: reading the isotopic parameters. 189 183 CALL get_in('lambda', lambda_sursat, 0.004) 190 184 CALL get_in('thumxt1', thumxt1, 0.75*1.2) … … 339 333 USE mod_phys_lmdz_omp_data, ONLY : is_omp_root 340 334 USE mod_phys_lmdz_transfert_para, ONLY : bcast 341 CHARACTER(LEN=*), INTENT(IN) :: nam342 CHARACTER(LEN=*), INTENT(INOUT) :: val343 CHARACTER(LEN=*), INTENT(IN) :: def344 LOGICAL, OPTIONAL, INTENT(IN) :: lDisp335 CHARACTER(LEN=*), INTENT(IN) :: nam 336 CHARACTER(LEN=*), INTENT(INOUT) :: val 337 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: def 338 LOGICAL, OPTIONAL, INTENT(IN) :: lDisp 345 339 LOGICAL :: lD 346 340 !$OMP BARRIER 347 341 IF(is_mpi_root.AND.is_omp_root) THEN 348 val=def; CALL getin(nam,val)342 IF(PRESENT(def)) val=def; CALL getin(nam,val) 349 343 lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp 350 344 IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(val)) 351 352 345 END IF 346 CALL bcast(val) 353 347 END SUBROUTINE getinp_s 354 348 … … 360 354 CHARACTER(LEN=*), INTENT(IN) :: nam 361 355 INTEGER, INTENT(INOUT) :: val 362 INTEGER, 356 INTEGER, OPTIONAL, INTENT(IN) :: def 363 357 LOGICAL, OPTIONAL, INTENT(IN) :: lDisp 364 358 LOGICAL :: lD 365 359 !$OMP BARRIER 366 360 IF(is_mpi_root.AND.is_omp_root) THEN 367 val=def; CALL getin(nam,val)361 IF(PRESENT(def)) val=def; CALL getin(nam,val) 368 362 lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp 369 363 IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(int2str(val))) 370 371 364 END IF 365 CALL bcast(val) 372 366 END SUBROUTINE getinp_i 373 367 … … 379 373 CHARACTER(LEN=*), INTENT(IN) :: nam 380 374 REAL, INTENT(INOUT) :: val 381 REAL, 375 REAL, OPTIONAL, INTENT(IN) :: def 382 376 LOGICAL, OPTIONAL, INTENT(IN) :: lDisp 383 377 LOGICAL :: lD 384 378 !$OMP BARRIER 385 379 IF(is_mpi_root.AND.is_omp_root) THEN 386 Val=def; CALL getin(nam,val)380 IF(PRESENT(def)) val=def; CALL getin(nam,val) 387 381 lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp 388 382 IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(real2str(val))) 389 ENDIF390 383 END IF 384 CALL bcast(val) 391 385 END SUBROUTINE getinp_r 392 386 … … 398 392 CHARACTER(LEN=*), INTENT(IN) :: nam 399 393 LOGICAL, INTENT(INOUT) :: val 400 LOGICAL, 394 LOGICAL, OPTIONAL, INTENT(IN) :: def 401 395 LOGICAL, OPTIONAL, INTENT(IN) :: lDisp 402 396 LOGICAL :: lD 403 397 !$OMP BARRIER 404 398 IF(is_mpi_root.AND.is_omp_root) THEN 405 val=def; CALL getin(nam,val)399 IF(PRESENT(def)) val=def; CALL getin(nam,val) 406 400 lD=.TRUE.; IF(PRESENT(lDisp)) lD=lDisp 407 401 IF(lD) CALL msg(TRIM(nam)//' = '//TRIM(bool2str(val))) 408 409 402 END IF 403 CALL bcast(val) 410 404 END SUBROUTINE getinp_l 411 405
Note: See TracChangeset
for help on using the changeset viewer.