Changeset 15115
- Timestamp:
- 2021-07-12T17:00:27+02:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/OFF/nemogcm.F90
r15075 r15115 159 159 CALL dta_dyn_sed( istp, Nnn ) ! Interpolation of the dynamical fields 160 160 CALL trc_stp ( istp, Nbb, Nnn, Nrhs, Naa ) ! time-stepping 161 ! Swap time levels 162 Nrhs = Nbb 163 Nbb = Nnn 164 Nnn = Naa 165 Naa = Nrhs 161 ! Swap time levels 162 Nnn = Nbb 163 Naa = Nbb 166 164 #endif 167 165 CALL stp_ctl ( istp ) ! Time loop: control and print -
NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/SED/sedmat.F90
r15075 r15115 71 71 jn = nvar 72 72 ! first sediment level 73 aplus = ( ( volw3d(ji,1) / ( dz3d(ji,1) ) ) + & 74 ( volw3d(ji,2) / ( dz3d(ji,2) ) ) ) / 2. 73 aplus = ( por(1) + por(2) ) * 0.5 75 74 dxplus = ( dz3d(ji,1) + dz3d(ji,2) ) / 2. 76 75 rplus = ( dtsed_in / ( volw3d(ji,1) ) ) * diff(ji,1,jn) * aplus / dxplus … … 81 80 82 81 DO jk = 2, jpksed - 1 83 aminus = ( ( volw3d(ji,jk-1) / ( dz3d(ji,jk-1) ) ) + & 84 & ( volw3d(ji,jk ) / ( dz3d(ji,jk ) ) ) ) / 2. 82 aminus = ( por(jk-1) + por(jk) ) * 0.5 85 83 dxminus = ( dz3d(ji,jk-1) + dz3d(ji,jk) ) / 2. 86 84 87 aplus = ( ( volw3d(ji,jk ) / ( dz3d(ji,jk ) ) ) + & 88 & ( volw3d(ji,jk+1) / ( dz3d(ji,jk+1) ) ) ) / 2. 85 aplus = ( por(jk+1) + por(jk) ) * 0.5 89 86 dxplus = ( dz3d(ji,jk) + dz3d(ji,jk+1) ) / 2 90 87 ! … … 97 94 END DO 98 95 99 aminus = ( ( volw3d(ji,jpksed-1) / dz3d(ji,jpksed-1) ) + & 100 & ( volw3d(ji,jpksed) / dz3d(ji,jpksed) ) ) / 2. 96 aminus = ( por(jpksed-1) + por(jpksed) ) * 0.5 101 97 dxminus = ( dz3d(ji,jpksed-1) + dz3d(ji,jpksed) ) / 2. 102 98 rminus = ( dtsed_in / volw3d(ji,jpksed) ) * diff(ji,jpksed-1,jn) * aminus / dxminus … … 167 163 jn = nvar 168 164 ! first sediment level 169 aplus = ( ( volw3d(ji,1) / ( dz3d(ji,1) ) ) + & 170 ( volw3d(ji,2) / ( dz3d(ji,2) ) ) ) / 2. 165 aplus = ( por(1) + por(2) ) *0.5 171 166 dxplus = ( dz3d(ji,1) + dz3d(ji,2) ) / 2. 172 167 rplus = ( dtsed_in / ( volw3d(ji,1) ) ) * diff(ji,1,jn) * aplus / dxplus … … 177 172 178 173 DO jk = 2, jpksed - 1 179 aminus = ( ( volw3d(ji,jk-1) / ( dz3d(ji,jk-1) ) ) + & 180 & ( volw3d(ji,jk ) / ( dz3d(ji,jk ) ) ) ) / 2. 174 aminus = ( por(jk-1) + por(jk) ) * 0.5 181 175 dxminus = ( dz3d(ji,jk-1) + dz3d(ji,jk) ) / 2. 182 176 183 aplus = ( ( volw3d(ji,jk ) / ( dz3d(ji,jk ) ) ) + & 184 & ( volw3d(ji,jk+1) / ( dz3d(ji,jk+1) ) ) ) / 2. 177 aplus = ( por(jk+1) + por(jk) ) * 0.5 185 178 dxplus = ( dz3d(ji,jk) + dz3d(ji,jk+1) ) / 2 186 179 ! … … 193 186 END DO 194 187 195 aminus = ( ( volw3d(ji,jpksed-1) / dz3d(ji,jpksed-1) ) + & 196 & ( volw3d(ji,jpksed) / dz3d(ji,jpksed) ) ) / 2. 188 aminus = ( por(jpksed-1) + por(jpksed) ) * 0.5 197 189 dxminus = ( dz3d(ji,jpksed-1) + dz3d(ji,jpksed) ) / 2. 198 190 rminus = ( dtsed_in / volw3d(ji,jpksed) ) * diff(ji,jpksed-1,jn) * aminus / dxminus … … 274 266 ! first sediment level 275 267 DO ji = 1, jpoce 276 aplus = ( ( vols(2) / dz(2) ) + ( vols(3) / dz(3) ) ) / 2.268 aplus = ( por1(2) + por1(3) ) / 2.0 277 269 dxplus = ( dz(2) + dz(3) ) / 2. 278 270 rplus = ( dtsed_in / vols(2) ) * db(ji,2) * aplus / dxplus … … 283 275 284 276 DO jk = 2, nlev - 1 277 aminus = ( por1(jk) + por1(jk+1) ) * 0.5 285 278 aminus = ( ( vols(jk) / dz(jk) ) + ( vols(jk+1) / dz(jk+1) ) ) / 2. 286 279 dxminus = ( dz(jk) + dz(jk+1) ) / 2. 287 280 rminus = ( dtsed_in / vols(jk+1) ) * db(ji,jk) * aminus / dxminus 288 281 ! 289 aplus = ( ( vols(jk+1) / dz(jk+1 ) ) + ( vols(jk+2) / dz(jk+2) ) ) / 2.282 aplus = ( por1(jk+1) + por1(jk+2) ) * 0.5 290 283 dxplus = ( dz(jk+1) + dz(jk+2) ) / 2. 291 284 rplus = ( dtsed_in / vols(jk+1) ) * db(ji,jk+1) * aplus / dxplus … … 297 290 ENDDO 298 291 299 aminus = ( ( vols(nlev) / dz(nlev) ) + ( vols(nlev+1) / dz(nlev+1) ) ) / 2.292 aminus = ( por1(nlev) + por1(nlev+1) ) * 0.5 300 293 dxminus = ( dz(nlev) + dz(nlev+1) ) / 2. 301 294 rminus = ( dtsed_in / vols(nlev+1) ) * db(ji,nlev) * aminus / dxminus … … 383 376 ! first sediment level 384 377 DO ji = 1, jpoce 385 aplus = ( ( volw3d(ji,1) / ( dz3d(ji,1) ) ) + & 386 ( volw3d(ji,2) / ( dz3d(ji,2) ) ) ) / 2. 378 aplus = ( por(1) + por(2) ) * 0.5 387 379 dxplus = ( dz3d(ji,1) + dz3d(ji,2) ) / 2. 388 380 rplus = ( dtsed_in / ( volw3d(ji,1) ) ) * diff(ji,1,jn) * aplus / dxplus … … 395 387 DO jk = 2, jpksed - 1 396 388 DO ji = 1, jpoce 397 aminus = ( ( volw3d(ji,jk-1) / ( dz3d(ji,jk-1) ) ) + & 398 & ( volw3d(ji,jk ) / ( dz3d(ji,jk ) ) ) ) / 2. 389 aminus = ( por(jk-1) + por(jk) ) * 0.5 399 390 dxminus = ( dz3d(ji,jk-1) + dz3d(ji,jk) ) / 2. 400 391 401 aplus = ( ( volw3d(ji,jk ) / ( dz3d(ji,jk ) ) ) + & 402 & ( volw3d(ji,jk+1) / ( dz3d(ji,jk+1) ) ) ) / 2. 392 aplus = ( por(jk+1) + por(jk) ) * 0.5 403 393 dxplus = ( dz3d(ji,jk) + dz3d(ji,jk+1) ) / 2 404 394 ! … … 413 403 414 404 DO ji = 1, jpoce 415 aminus = ( ( volw3d(ji,jpksed-1) / dz3d(ji,jpksed-1) ) + & 416 & ( volw3d(ji,jpksed) / dz3d(ji,jpksed) ) ) / 2. 405 aminus = ( por(jpksed-1) + por(jpksed) ) *0.5 417 406 dxminus = ( dz3d(ji,jpksed-1) + dz3d(ji,jpksed) ) / 2. 418 407 rminus = ( dtsed_in / volw3d(ji,jpksed) ) * diff(ji,jpksed-1,jn) * aminus/ dxminus -
NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/SED/sedsol.F90
r15075 r15115 16 16 USE sedco3 17 17 USE sedmat 18 USE TROS_F9018 USE tros 19 19 USE lib_mpp ! distribued memory computing library 20 20 USE lib_fortran -
NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/SED/trosk.F90
r15075 r15115 1 MODULE TROS _F901 MODULE TROS 2 2 !**************************************************************** 3 3 !* NUMERICAL SOLUTION OF A STIFF SYSTEM OF FIRST 0RDER ORDINARY * … … 44 44 !* (www.jpmoreau.fr) * 45 45 !**************************************************************** 46 USE sed 46 47 USE sedfunc 47 48 48 INTEGER, PARAMETER, PRIVATE :: WP = KIND(1.0D0)49 49 INTEGER, PRIVATE :: JINDIC 50 50 … … 275 275 NMAX=IWORK(1) 276 276 IF(NMAX.LE.0)THEN 277 WRITE( 6,*)' WRONG INPUT IWORK(1)=',IWORK(1)277 WRITE(NUMSED,*)' WRONG INPUT IWORK(1)=',IWORK(1) 278 278 ARRET=.TRUE. 279 279 END IF … … 285 285 METH=IWORK(2) 286 286 IF(METH.LE.0.OR.METH.GE.7)THEN 287 WRITE( 6,*)' CURIOUS INPUT IWORK(2)=',IWORK(2)287 WRITE(NUMSED,*)' CURIOUS INPUT IWORK(2)=',IWORK(2) 288 288 ARRET=.TRUE. 289 289 END IF … … 295 295 UROUND=WORK(1) 296 296 IF(UROUND.LE.1.D-14.OR.UROUND.GE.1.D0)THEN 297 WRITE( 6,*)' COEFFICIENTS HAVE 16 DIGITS, UROUND=',WORK(1)297 WRITE(NUMSED,*)' COEFFICIENTS HAVE 16 DIGITS, UROUND=',WORK(1) 298 298 ARRET=.TRUE. 299 299 END IF … … 325 325 IF (ITOL.EQ.0) THEN 326 326 IF (ATOL(1).LE.0.D0.OR.RTOL(1).LE.10.D0*UROUND) THEN 327 WRITE ( 6,*) ' TOLERANCES ARE TOO SMALL'327 WRITE (NUMSED,*) ' TOLERANCES ARE TOO SMALL' 328 328 ARRET=.TRUE. 329 329 END IF … … 331 331 DO 15 I=1,N 332 332 IF (ATOL(I).LE.0.D0.OR.RTOL(I).LE.10.D0*UROUND) THEN 333 WRITE ( 6,*) ' TOLERANCES(',I,') ARE TOO SMALL'333 WRITE (NUMSED,*) ' TOLERANCES(',I,') ARE TOO SMALL' 334 334 ARRET=.TRUE. 335 335 END IF … … 370 370 ISTORE=IEE+N*LDE-1 371 371 IF(ISTORE.GT.LWORK)THEN 372 WRITE( 6,*)' INSUFFICIENT STORAGE FOR WORK, MIN. LWORK=',ISTORE372 WRITE(NUMSED,*)' INSUFFICIENT STORAGE FOR WORK, MIN. LWORK=',ISTORE 373 373 ARRET=.TRUE. 374 374 END IF … … 378 378 ISTORE=IEIP+N-1 379 379 IF(ISTORE.GT.LIWORK)THEN 380 WRITE( 6,*)' INSUFF. STORAGE FOR IWORK, MIN. LIWORK=',ISTORE380 WRITE(NUMSED,*)' INSUFF. STORAGE FOR IWORK, MIN. LIWORK=',ISTORE 381 381 ARRET=.TRUE. 382 382 END IF … … 661 661 END IF 662 662 ! --- EXIT 663 80 WRITE ( 6,*) ' MATRIX E IS SINGULAR, INFO = ',INFO663 80 WRITE (NUMSED,*) ' MATRIX E IS SINGULAR, INFO = ',INFO 664 664 NSING=NSING+1 665 665 IF (NSING.GE.5) GOTO 79 666 666 H=H*0.5D0 667 667 GOTO 2 668 79 WRITE( 6,979)X,H668 79 WRITE(NUMSED,979)X,H 669 669 979 FORMAT(' EXIT OF ROS4 AT X=',D16.7,' H=',D16.7) 670 670 IDID=-1 … … 862 862 ! --- COMPUTATION OF HNEW 863 863 ! --- WE REQUIRE .2<=HNEW/H<=6. 864 FAC=DMAX1(FAC2,DMIN1(FAC1,(ERR)**.33D0/ .9D0))864 FAC=DMAX1(FAC2,DMIN1(FAC1,(ERR)**.33D0/0.9D0)) 865 865 HNEW=H/FAC 866 866 ! *** *** *** *** *** *** *** … … 894 894 END IF 895 895 ! --- EXIT 896 80 WRITE ( 6,*) ' MATRIX E IS SINGULAR, INFO = ',INFO896 80 WRITE (NUMSED,*) ' MATRIX E IS SINGULAR, INFO = ',INFO 897 897 NSING=NSING+1 898 898 IF (NSING.GE.5) GOTO 79 899 899 H=H*0.5D0 900 900 GOTO 2 901 79 WRITE( 6,979)X,H901 79 WRITE(NUMSED,979)X,H 902 902 979 FORMAT(' EXIT OF ROS4 AT X=',D16.7,' H=',D16.7) 903 903 IDID=-1 … … 1112 1112 END IF 1113 1113 ! --- EXIT 1114 80 WRITE ( 6,*) ' MATRIX E IS SINGULAR, INFO = ',INFO1114 80 WRITE (NUMSED,*) ' MATRIX E IS SINGULAR, INFO = ',INFO 1115 1115 NSING=NSING+1 1116 1116 IF (NSING.GE.5) GOTO 79 1117 1117 H=H*0.5D0 1118 1118 GOTO 2 1119 79 WRITE( 6,979)X,H1119 79 WRITE(NUMSED,979)X,H 1120 1120 979 FORMAT(' EXIT OF ROS2 AT X=',D16.7,' H=',D16.7) 1121 1121 IDID=-1 … … 1551 1551 END SUBROUTINE SOLB 1552 1552 1553 END MODULE TROS _F901553 END MODULE TROS
Note: See TracChangeset
for help on using the changeset viewer.