Changeset 6081 for LMDZ6/trunk/libf/phy_common/lmdz_checksum.f90
- Timestamp:
- Feb 19, 2026, 4:34:20 PM (5 days ago)
- File:
-
- 1 edited
-
LMDZ6/trunk/libf/phy_common/lmdz_checksum.f90 (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/trunk/libf/phy_common/lmdz_checksum.f90
r5940 r6081 1 1 MODULE lmdz_checksum 2 2 PRIVATE 3 INTERFACE checksum 3 INTERFACE checksum 4 4 MODULE PROCEDURE checksum_r0, checksum_r1, checksum_r2, checksum_r3, & 5 5 checksum_i0, checksum_i1, checksum_i2, checksum_i3, & 6 6 checksum_l0, checksum_l1, checksum_l2, checksum_l3 7 7 END INTERFACE 8 8 9 9 PUBLIC checksum 10 10 11 11 CONTAINS 12 12 … … 18 18 INTEGER :: tot_sum 19 19 INTEGER :: i 20 21 tot_sum=0 20 21 tot_sum=0 22 22 intval=transfer(field,intval,2) 23 23 tot_sum = tot_sum + intval(1) + intval(2) 24 24 25 25 CALL print_checksum(name,tot_sum) 26 26 END SUBROUTINE checksum_r0 27 27 28 28 SUBROUTINE checksum_r1(name, field) 29 29 IMPLICIT NONE … … 33 33 INTEGER :: tot_sum 34 34 INTEGER :: i 35 36 tot_sum=0 35 36 tot_sum=0 37 37 DO i=1,SIZE(field,1) 38 38 intval=transfer(field(i),intval,2) 39 39 tot_sum = tot_sum + intval(1) + intval(2) 40 ENDDO 41 40 ENDDO 41 42 42 CALL print_checksum(name,tot_sum) 43 43 END SUBROUTINE checksum_r1 44 44 45 45 SUBROUTINE checksum_r2(name, field) 46 46 IMPLICIT NONE … … 50 50 INTEGER :: tot_sum 51 51 INTEGER :: i,j 52 53 tot_sum=0 52 53 tot_sum=0 54 54 DO j=1,SIZE(field,2) 55 55 DO i=1,SIZE(field,1) … … 57 57 tot_sum = tot_sum + intval(1) + intval(2) 58 58 ENDDO 59 ENDDO 60 59 ENDDO 60 61 61 CALL print_checksum(name,tot_sum) 62 62 END SUBROUTINE checksum_r2 … … 69 69 INTEGER :: tot_sum 70 70 INTEGER :: i,j,k 71 72 tot_sum=0 71 72 tot_sum=0 73 73 DO k=1,SIZE(field,3) 74 74 DO j=1,SIZE(field,2) … … 77 77 tot_sum = tot_sum + intval(1) + intval(2) 78 78 ENDDO 79 ENDDO 80 ENDDO 79 ENDDO 80 ENDDO 81 81 82 CALL print_checksum(name,tot_sum) 82 83 END SUBROUTINE checksum_r3 83 84 85 86 SUBROUTINE checksum_i0(name, field)87 IMPLICIT NONE 88 CHARACTER(LEN=*),INTENT(IN) :: name 89 LOGICAL,INTENT(IN) :: field90 INTEGER :: intval(2) 91 INTEGER :: tot_sum 92 INTEGER :: i 93 84 85 86 87 SUBROUTINE checksum_l0(name, field) 88 IMPLICIT NONE 89 CHARACTER(LEN=*),INTENT(IN) :: name 90 LOGICAL,INTENT(IN) :: field 91 INTEGER :: intval(2) 92 INTEGER :: tot_sum 93 INTEGER :: i 94 94 95 tot_sum=0 95 96 intval(1)=0 96 IF (field) intval(1)=1 97 IF (field) intval(1)=1 97 98 intval(2)=0 98 99 tot_sum = tot_sum + intval(1) + intval(2) 99 100 CALL print_checksum(name,tot_sum) 101 END SUBROUTINE checksum_ i0102 103 SUBROUTINE checksum_ i1(name, field)104 IMPLICIT NONE 105 CHARACTER(LEN=*),INTENT(IN) :: name 106 LOGICAL,INTENT(IN) :: field(:)107 INTEGER :: intval(2) 108 INTEGER :: tot_sum 109 INTEGER :: i 110 111 tot_sum=0 100 101 CALL print_checksum(name,tot_sum) 102 END SUBROUTINE checksum_l0 103 104 SUBROUTINE checksum_l1(name, field) 105 IMPLICIT NONE 106 CHARACTER(LEN=*),INTENT(IN) :: name 107 LOGICAL,INTENT(IN) :: field(:) 108 INTEGER :: intval(2) 109 INTEGER :: tot_sum 110 INTEGER :: i 111 112 tot_sum=0 112 113 DO i=1,SIZE(field,1) 113 114 intval(1)=0 114 IF (field(i)) intval(1)=1 115 IF (field(i)) intval(1)=1 115 116 tot_sum = tot_sum + intval(1) + intval(2) 116 ENDDO 117 118 CALL print_checksum(name,tot_sum) 119 END SUBROUTINE checksum_ i1120 121 SUBROUTINE checksum_ i2(name, field)122 IMPLICIT NONE 123 CHARACTER(LEN=*),INTENT(IN) :: name 124 LOGICAL,INTENT(IN) :: field(:,:)117 ENDDO 118 119 CALL print_checksum(name,tot_sum) 120 END SUBROUTINE checksum_l1 121 122 SUBROUTINE checksum_l2(name, field) 123 IMPLICIT NONE 124 CHARACTER(LEN=*),INTENT(IN) :: name 125 LOGICAL,INTENT(IN) :: field(:,:) 125 126 INTEGER :: intval(2) 126 127 INTEGER :: tot_sum 127 128 INTEGER :: i,j 128 129 tot_sum=0 129 130 tot_sum=0 130 131 DO j=1,SIZE(field,2) 131 132 DO i=1,SIZE(field,1) 132 133 intval(1)=0 133 IF (field(i,j)) intval(1)=1 134 IF (field(i,j)) intval(1)=1 134 135 intval(2)=0 135 136 tot_sum = tot_sum + intval(1) + intval(2) 136 137 ENDDO 137 ENDDO 138 139 CALL print_checksum(name,tot_sum) 140 END SUBROUTINE checksum_ i2141 142 SUBROUTINE checksum_ i3(name, field)143 IMPLICIT NONE 144 CHARACTER(LEN=*),INTENT(IN) :: name 145 LOGICAL,INTENT(IN) :: field(:,:,:)138 ENDDO 139 140 CALL print_checksum(name,tot_sum) 141 END SUBROUTINE checksum_l2 142 143 SUBROUTINE checksum_l3(name, field) 144 IMPLICIT NONE 145 CHARACTER(LEN=*),INTENT(IN) :: name 146 LOGICAL,INTENT(IN) :: field(:,:,:) 146 147 INTEGER :: intval(2) 147 148 INTEGER :: tot_sum 148 149 INTEGER :: i,j,k 149 150 tot_sum=0 150 151 tot_sum=0 151 152 DO k=1,SIZE(field,3) 152 153 DO j=1,SIZE(field,2) 153 154 DO i=1,SIZE(field,1) 154 155 intval(1)=0 155 IF (field(i,j,k)) intval(1)=1 156 IF (field(i,j,k)) intval(1)=1 156 157 intval(2)=0 157 158 tot_sum = tot_sum + intval(1) + intval(2) 158 159 ENDDO 159 ENDDO 160 ENDDO 161 CALL print_checksum(name,tot_sum) 162 END SUBROUTINE checksum_i3 163 164 165 166 SUBROUTINE checksum_l0(name, field) 167 IMPLICIT NONE 168 CHARACTER(LEN=*),INTENT(IN) :: name 169 INTEGER,INTENT(IN) :: field 170 INTEGER :: intval(2) 171 INTEGER :: tot_sum 172 INTEGER :: i 173 174 tot_sum=0 160 ENDDO 161 ENDDO 162 163 CALL print_checksum(name,tot_sum) 164 END SUBROUTINE checksum_l3 165 166 167 168 SUBROUTINE checksum_i0(name, field) 169 IMPLICIT NONE 170 CHARACTER(LEN=*),INTENT(IN) :: name 171 INTEGER,INTENT(IN) :: field 172 INTEGER :: intval(2) 173 INTEGER :: tot_sum 174 INTEGER :: i 175 176 tot_sum=0 175 177 intval(1)=field 176 178 intval(2)=0 177 179 tot_sum = tot_sum + intval(1) + intval(2) 178 179 CALL print_checksum(name,tot_sum) 180 END SUBROUTINE checksum_ l0181 182 SUBROUTINE checksum_ l1(name, field)183 IMPLICIT NONE 184 CHARACTER(LEN=*),INTENT(IN) :: name 185 INTEGER,INTENT(IN) :: field(:)186 INTEGER :: intval(2) 187 INTEGER :: tot_sum 188 INTEGER :: i 189 190 tot_sum=0 180 181 CALL print_checksum(name,tot_sum) 182 END SUBROUTINE checksum_i0 183 184 SUBROUTINE checksum_i1(name, field) 185 IMPLICIT NONE 186 CHARACTER(LEN=*),INTENT(IN) :: name 187 INTEGER,INTENT(IN) :: field(:) 188 INTEGER :: intval(2) 189 INTEGER :: tot_sum 190 INTEGER :: i 191 192 tot_sum=0 191 193 DO i=1,SIZE(field,1) 192 194 intval(1)=field(i) 193 195 intval(2)=0 194 196 tot_sum = tot_sum + intval(1) + intval(2) 195 ENDDO 196 197 CALL print_checksum(name,tot_sum) 198 END SUBROUTINE checksum_ l1199 200 SUBROUTINE checksum_ l2(name, field)201 IMPLICIT NONE 202 CHARACTER(LEN=*),INTENT(IN) :: name 203 INTEGER,INTENT(IN) :: field(:,:)197 ENDDO 198 199 CALL print_checksum(name,tot_sum) 200 END SUBROUTINE checksum_i1 201 202 SUBROUTINE checksum_i2(name, field) 203 IMPLICIT NONE 204 CHARACTER(LEN=*),INTENT(IN) :: name 205 INTEGER,INTENT(IN) :: field(:,:) 204 206 INTEGER :: intval(2) 205 207 INTEGER :: tot_sum 206 208 INTEGER :: i,j 207 208 tot_sum=0 209 210 tot_sum=0 209 211 DO j=1,SIZE(field,2) 210 212 DO i=1,SIZE(field,1) … … 213 215 tot_sum = tot_sum + intval(1) + intval(2) 214 216 ENDDO 215 ENDDO 216 217 CALL print_checksum(name,tot_sum) 218 END SUBROUTINE checksum_ l2219 220 SUBROUTINE checksum_ l3(name, field)221 IMPLICIT NONE 222 CHARACTER(LEN=*),INTENT(IN) :: name 223 INTEGER,INTENT(IN) :: field(:,:,:)217 ENDDO 218 219 CALL print_checksum(name,tot_sum) 220 END SUBROUTINE checksum_i2 221 222 SUBROUTINE checksum_i3(name, field) 223 IMPLICIT NONE 224 CHARACTER(LEN=*),INTENT(IN) :: name 225 INTEGER,INTENT(IN) :: field(:,:,:) 224 226 INTEGER :: intval(2) 225 227 INTEGER :: tot_sum 226 228 INTEGER :: i,j,k 227 228 tot_sum=0 229 230 tot_sum=0 229 231 DO k=1,SIZE(field,3) 230 232 DO j=1,SIZE(field,2) … … 234 236 tot_sum = tot_sum + intval(1) + intval(2) 235 237 ENDDO 236 ENDDO 237 ENDDO 238 CALL print_checksum(name,tot_sum) 239 END SUBROUTINE checksum_l3 240 241 238 ENDDO 239 ENDDO 240 CALL print_checksum(name,tot_sum) 241 END SUBROUTINE checksum_i3 242 243 244 242 245 SUBROUTINE print_checksum(name, tot_sum) 243 246 USE mod_phys_lmdz_para, ONLY : reduce_sum, is_master 244 USE print_control_mod, ONLY: lunout 247 USE print_control_mod, ONLY: lunout 245 248 IMPLICIT NONE 246 249 CHARACTER(LEN=*),INTENT(IN) :: name 247 250 INTEGER, INTENT(IN) :: tot_sum 248 251 INTEGER :: tot_sum_glo 249 250 CALL reduce_sum(tot_sum, tot_sum_glo) 251 252 253 CALL reduce_sum(tot_sum, tot_sum_glo) 254 252 255 IF (is_master) WRITE(lunout,*) "CHECKSUM : ",TRIM(ADJUSTL(name)), " ==> ",tot_sum_glo 253 256 END SUBROUTINE print_checksum
Note: See TracChangeset
for help on using the changeset viewer.
