Ignore:
Timestamp:
Jul 28, 2025, 7:23:15 PM (3 weeks ago)
Author:
aborella
Message:

Merge with trunk r5789

Location:
LMDZ6/branches/contrails
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/contrails

  • LMDZ6/branches/contrails/libf/phy_common/ioipsl_getin_p_mod.f90

    r5268 r5791  
    66!---------------------------------------------------------------------
    77USE ioipsl, ONLY: getin
    8 USE mod_phys_lmdz_mpi_data, ONLY :  is_mpi_root
    9 USE mod_phys_lmdz_omp_data, ONLY :  is_omp_root
     8USE strings_mod, ONLY: num2str, strStack, msg
     9USE mod_phys_lmdz_para, ONLY: is_master
    1010USE mod_phys_lmdz_transfert_para, ONLY : bcast
    1111!-
     
    3232!! -- Les chaines de caracteres -- !!
    3333 
    34   SUBROUTINE getincs_p(VarIn,VarOut)
    35     IMPLICIT NONE   
    36     CHARACTER(LEN=*),INTENT(IN) :: VarIn
    37     CHARACTER(LEN=*),INTENT(INOUT) :: VarOut   
    38 
    39 !$OMP BARRIER
    40     IF (is_mpi_root .AND. is_omp_root) THEN
    41         CALL getin(VarIn,VarOut)
    42     ENDIF
    43     CALL bcast(VarOut)
    44   END SUBROUTINE getincs_p
     34SUBROUTINE getincs_p(VarIn, VarOut, VarDef, lDisp)
     35  IMPLICIT NONE
     36  CHARACTER(LEN=*),           INTENT(IN)    :: VarIn
     37  CHARACTER(LEN=*),           INTENT(INOUT) :: VarOut
     38  CHARACTER(LEN=*), OPTIONAL, INTENT(IN)    :: VarDef
     39  LOGICAL,          OPTIONAL, INTENT(IN)    :: lDisp
     40  LOGICAL :: lD
     41!$OMP BARRIER
     42  IF(is_master) THEN
     43     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
     44     IF(PRESENT(VarDef)) VarOut = VarDef
     45     CALL getin(VarIn,VarOut)
     46     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(VarOut))
     47  END IF
     48  CALL bcast(VarOut)
     49END SUBROUTINE getincs_p
    4550
    4651!! -- Les entiers -- !!
    4752 
    48   SUBROUTINE getinis_p(VarIn,VarOut)
    49     IMPLICIT NONE   
    50     CHARACTER(LEN=*),INTENT(IN) :: VarIn
    51     INTEGER,INTENT(INOUT) :: VarOut   
    52 
    53 !$OMP BARRIER
    54     IF (is_mpi_root .AND. is_omp_root) THEN
    55         CALL getin(VarIn,VarOut)
    56     ENDIF
    57     CALL bcast(VarOut)
     53SUBROUTINE getinis_p(VarIn, VarOut, VarDef, lDisp)
     54  IMPLICIT NONE
     55  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
     56  INTEGER,           INTENT(INOUT) :: VarOut
     57  INTEGER, OPTIONAL, INTENT(IN)    :: VarDef
     58  LOGICAL, OPTIONAL, INTENT(IN)    :: lDisp
     59  LOGICAL :: lD
     60!$OMP BARRIER
     61  IF(is_master) THEN
     62     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
     63     IF(PRESENT(VarDef)) VarOut = VarDef
     64     CALL getin(VarIn,VarOut)
     65     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(num2str(VarOut)))
     66  END IF
     67  CALL bcast(VarOut)
    5868  END SUBROUTINE getinis_p
    5969
    60   SUBROUTINE getini1d_p(VarIn,VarOut)
    61     IMPLICIT NONE   
    62     CHARACTER(LEN=*),INTENT(IN) :: VarIn
    63     INTEGER,INTENT(INOUT) :: VarOut(:)
    64 
    65 !$OMP BARRIER
    66     IF (is_mpi_root .AND. is_omp_root) THEN
    67         CALL getin(VarIn,VarOut)
    68     ENDIF
    69     CALL bcast(VarOut)
     70  SUBROUTINE getini1d_p(VarIn, VarOut, VarDef, lDisp)
     71  IMPLICIT NONE
     72  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
     73  INTEGER,           INTENT(INOUT) :: VarOut(:)
     74  INTEGER, OPTIONAL, INTENT(IN)    :: VarDef
     75  LOGICAL, OPTIONAL, INTENT(IN)    :: lDisp
     76  LOGICAL :: lD
     77!$OMP BARRIER
     78  IF(is_master) THEN
     79     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
     80     IF(PRESENT(VarDef)) VarOut = VarDef
     81     CALL getin(VarIn,VarOut)
     82     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(strStack(num2str(VarOut))))
     83  END IF
     84  CALL bcast(VarOut)
    7085  END SUBROUTINE getini1d_p
    7186
    72   SUBROUTINE getini2d_p(VarIn,VarOut)
    73     IMPLICIT NONE   
    74     CHARACTER(LEN=*),INTENT(IN) :: VarIn
    75     INTEGER,INTENT(INOUT) :: VarOut(:,:)
    76 
    77 !$OMP BARRIER
    78     IF (is_mpi_root .AND. is_omp_root) THEN
    79         CALL getin(VarIn,VarOut)
    80     ENDIF
    81     CALL bcast(VarOut)
     87  SUBROUTINE getini2d_p(VarIn, VarOut, VarDef)
     88  IMPLICIT NONE
     89  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
     90  INTEGER,           INTENT(INOUT) :: VarOut(:,:)
     91  INTEGER, OPTIONAL, INTENT(IN)    :: VarDef
     92!$OMP BARRIER
     93  IF(is_master) THEN
     94     IF(PRESENT(VarDef)) VarOut = VarDef
     95     CALL getin(VarIn,VarOut)
     96  END IF
     97  CALL bcast(VarOut)
    8298  END SUBROUTINE getini2d_p
    8399
    84100!! -- Les flottants -- !!
    85101 
    86   SUBROUTINE getinrs_p(VarIn,VarOut)
    87     IMPLICIT NONE   
    88     CHARACTER(LEN=*),INTENT(IN) :: VarIn
    89     REAL,INTENT(INOUT) :: VarOut
    90 
    91 !$OMP BARRIER
    92     IF (is_mpi_root .AND. is_omp_root) THEN
    93         CALL getin(VarIn,VarOut)
    94     ENDIF
    95     CALL bcast(VarOut)
     102  SUBROUTINE getinrs_p(VarIn, VarOut, VarDef, lDisp)
     103  IMPLICIT NONE
     104  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
     105  REAL,              INTENT(INOUT) :: VarOut
     106  REAL,    OPTIONAL, INTENT(IN)    :: VarDef
     107  LOGICAL, OPTIONAL, INTENT(IN)    :: lDisp
     108  LOGICAL :: lD
     109!$OMP BARRIER
     110  IF(is_master) THEN
     111     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
     112     IF(PRESENT(VarDef)) VarOut = VarDef
     113     CALL getin(VarIn,VarOut)
     114     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(num2str(VarOut)))
     115  END IF
     116  CALL bcast(VarOut)
    96117  END SUBROUTINE getinrs_p
    97118
    98   SUBROUTINE getinr1d_p(VarIn,VarOut)
    99     IMPLICIT NONE   
    100     CHARACTER(LEN=*),INTENT(IN) :: VarIn
    101     REAL,INTENT(INOUT) :: VarOut(:)
    102 
    103 !$OMP BARRIER
    104     IF (is_mpi_root .AND. is_omp_root) THEN
    105         CALL getin(VarIn,VarOut)
    106     ENDIF
    107     CALL bcast(VarOut)
     119  SUBROUTINE getinr1d_p(VarIn, VarOut, VarDef, lDisp)
     120  IMPLICIT NONE
     121  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
     122  REAL,              INTENT(INOUT) :: VarOut(:)
     123  REAL,    OPTIONAL, INTENT(IN)    :: VarDef
     124  LOGICAL, OPTIONAL, INTENT(IN)    :: lDisp
     125  LOGICAL :: lD
     126!$OMP BARRIER
     127  IF(is_master) THEN
     128     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
     129     IF(PRESENT(VarDef)) VarOut = VarDef
     130     CALL getin(VarIn,VarOut)
     131     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(strStack(num2str(VarOut))))
     132  END IF
     133  CALL bcast(VarOut)
    108134  END SUBROUTINE getinr1d_p
    109135
    110   SUBROUTINE getinr2d_p(VarIn,VarOut)
    111     IMPLICIT NONE   
    112     CHARACTER(LEN=*),INTENT(IN) :: VarIn
    113     REAL,INTENT(INOUT) :: VarOut(:,:)
    114 
    115 !$OMP BARRIER
    116     IF (is_mpi_root .AND. is_omp_root) THEN
    117         CALL getin(VarIn,VarOut)
    118     ENDIF
    119     CALL bcast(VarOut)
     136  SUBROUTINE getinr2d_p(VarIn, VarOut, VarDef)
     137  IMPLICIT NONE
     138  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
     139  REAL,              INTENT(INOUT) :: VarOut(:,:)
     140  REAL,    OPTIONAL, INTENT(IN)    :: VarDef
     141!$OMP BARRIER
     142  IF(is_master) THEN
     143     IF(PRESENT(VarDef)) VarOut = VarDef
     144     CALL getin(VarIn,VarOut)
     145  END IF
     146  CALL bcast(VarOut)
    120147  END SUBROUTINE getinr2d_p
    121148
    122149!! -- Les Booleens -- !!
    123150 
    124   SUBROUTINE getinls_p(VarIn,VarOut)
    125     IMPLICIT NONE   
    126     CHARACTER(LEN=*),INTENT(IN) :: VarIn
    127     LOGICAL,INTENT(INOUT) :: VarOut
    128 
    129 !$OMP BARRIER
    130     IF (is_mpi_root .AND. is_omp_root) THEN
    131         CALL getin(VarIn,VarOut)
    132     ENDIF
    133     CALL bcast(VarOut)
     151  SUBROUTINE getinls_p(VarIn, VarOut, VarDef, lDisp)
     152  IMPLICIT NONE
     153  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
     154  LOGICAL,           INTENT(INOUT) :: VarOut
     155  LOGICAL, OPTIONAL, INTENT(IN)    :: VarDef
     156  LOGICAL, OPTIONAL, INTENT(IN)    :: lDisp
     157  LOGICAL :: lD
     158!$OMP BARRIER
     159  IF(is_master) THEN
     160     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
     161     IF(PRESENT(VarDef)) VarOut = VarDef
     162     CALL getin(VarIn,VarOut)
     163     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(num2str(VarOut)))
     164  END IF
     165  CALL bcast(VarOut)
    134166  END SUBROUTINE getinls_p
    135167
    136   SUBROUTINE getinl1d_p(VarIn,VarOut)
    137     IMPLICIT NONE   
    138     CHARACTER(LEN=*),INTENT(IN) :: VarIn
    139     LOGICAL,INTENT(INOUT) :: VarOut(:)
    140 
    141 !$OMP BARRIER
    142     IF (is_mpi_root .AND. is_omp_root) THEN
    143         CALL getin(VarIn,VarOut)
    144     ENDIF
    145     CALL bcast(VarOut)
     168  SUBROUTINE getinl1d_p(VarIn, VarOut, VarDef, lDisp)
     169  IMPLICIT NONE
     170  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
     171  LOGICAL,           INTENT(INOUT) :: VarOut(:)
     172  LOGICAL, OPTIONAL, INTENT(IN)    :: VarDef
     173  LOGICAL, OPTIONAL, INTENT(IN)    :: lDisp
     174  LOGICAL :: lD
     175!$OMP BARRIER
     176  IF(is_master) THEN
     177     lD = .TRUE.; IF(PRESENT(lDisp)) lD = lDisp
     178     IF(PRESENT(VarDef)) VarOut = VarDef
     179     CALL getin(VarIn,VarOut)
     180     IF(lD) CALL msg(TRIM(VarIn)//' = '//TRIM(strStack(num2str(VarOut))))
     181  END IF
     182  CALL bcast(VarOut)
    146183  END SUBROUTINE getinl1d_p
    147184
    148   SUBROUTINE getinl2d_p(VarIn,VarOut)
    149     IMPLICIT NONE   
    150     CHARACTER(LEN=*),INTENT(IN) :: VarIn
    151     LOGICAL,INTENT(INOUT) :: VarOut(:,:)
    152 
    153 !$OMP BARRIER
    154     IF (is_mpi_root .AND. is_omp_root) THEN
    155         CALL getin(VarIn,VarOut)
    156     ENDIF
    157     CALL bcast(VarOut)
     185  SUBROUTINE getinl2d_p(VarIn, VarOut, VarDef)
     186  IMPLICIT NONE
     187  CHARACTER(LEN=*),  INTENT(IN)    :: VarIn
     188  LOGICAL,           INTENT(INOUT) :: VarOut(:,:)
     189  LOGICAL, OPTIONAL, INTENT(IN)    :: VarDef
     190!$OMP BARRIER
     191  IF(is_master) THEN
     192     IF(PRESENT(VarDef)) VarOut = VarDef
     193     CALL getin(VarIn,VarOut)
     194  END IF
     195  CALL bcast(VarOut)
    158196  END SUBROUTINE getinl2d_p
    159197!-
Note: See TracChangeset for help on using the changeset viewer.