Changeset 12377 for NEMO/trunk/src/TOP/PISCES/SED
- Timestamp:
- 2020-02-12T15:39:06+01:00 (4 years ago)
- Location:
- NEMO/trunk
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEAD ext/AGRIF5 ^/vendors/AGRIF/dev_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL
-
- Property svn:externals
-
NEMO/trunk/src/TOP/PISCES/SED/oce_sed.F90
r10362 r12377 13 13 USE dom_oce , ONLY : glamt => glamt !: longitude of t-point (degre) 14 14 USE dom_oce , ONLY : gphit => gphit !: latitude of t-point (degre) 15 USE dom_oce , ONLY : e3t _n => e3t_n!: latitude of t-point (degre)15 USE dom_oce , ONLY : e3t => e3t !: latitude of t-point (degre) 16 16 USE dom_oce , ONLY : e3t_1d => e3t_1d !: reference depth of t-points (m) 17 17 USE dom_oce , ONLY : gdepw_0 => gdepw_0 !: reference depth of t-points (m) … … 26 26 ! !: that may have been run with different time steps. 27 27 28 USE oce , ONLY : tsn => tsn!: pot. temperature (celsius) and salinity (psu)29 USE trc , ONLY : trb => trb!: pot. temperature (celsius) and salinity (psu)28 USE oce , ONLY : ts => ts !: pot. temperature (celsius) and salinity (psu) 29 USE trc , ONLY : tr => tr !: pot. temperature (celsius) and salinity (psu) 30 30 31 31 USE sms_pisces, ONLY : wsbio4 => wsbio4 !: sinking flux for POC 32 32 USE sms_pisces, ONLY : wsbio3 => wsbio3 !: sinking flux for GOC 33 USE sms_pisces, ONLY : wsbio2 => wsbio2 33 USE sms_pisces, ONLY : wsbio2 => wsbio2 !: sinking flux for calcite 34 34 USE sms_pisces, ONLY : wsbio => wsbio !: sinking flux for calcite 35 35 USE sms_pisces, ONLY : ln_p5z => ln_p5z !: PISCES-QUOTA flag … … 49 49 USE p4zche, ONLY : sulfat => sulfat !: Chemical constants 50 50 USE p4zche, ONLY : sio3eq => sio3eq !: Chemical constants 51 USE p4z sbc, ONLY : dust => dust52 USE trc 51 USE p4zbc, ONLY : dust => dust 52 USE trc , ONLY : r2dttrc => r2dttrc 53 53 54 54 END MODULE oce_sed -
NEMO/trunk/src/TOP/PISCES/SED/sedchem.F90
r10356 r12377 23 23 REAL(wp), PARAMETER :: pp_rdel_ah_target = 1.E-4_wp 24 24 25 !! * Substitutions 26 # include "do_loop_substitute.h90" 25 27 !! * Module variables 26 28 REAL(wp) :: & … … 136 138 CALL sed_chem_cst 137 139 ELSE 138 DO jj = 1,jpj 139 DO ji = 1, jpi 140 ikt = mbkt(ji,jj) 141 IF ( tmask(ji,jj,ikt) == 1 ) THEN 142 zchem_data(ji,jj,1) = ak13 (ji,jj,ikt) 143 zchem_data(ji,jj,2) = ak23 (ji,jj,ikt) 144 zchem_data(ji,jj,3) = akb3 (ji,jj,ikt) 145 zchem_data(ji,jj,4) = akw3 (ji,jj,ikt) 146 zchem_data(ji,jj,5) = aksp (ji,jj,ikt) 147 zchem_data(ji,jj,6) = borat (ji,jj,ikt) 148 zchem_data(ji,jj,7) = ak1p3 (ji,jj,ikt) 149 zchem_data(ji,jj,8) = ak2p3 (ji,jj,ikt) 150 zchem_data(ji,jj,9) = ak3p3 (ji,jj,ikt) 151 zchem_data(ji,jj,10)= aksi3 (ji,jj,ikt) 152 zchem_data(ji,jj,11)= sio3eq(ji,jj,ikt) 153 zchem_data(ji,jj,12)= aks3 (ji,jj,ikt) 154 zchem_data(ji,jj,13)= akf3 (ji,jj,ikt) 155 zchem_data(ji,jj,14)= sulfat(ji,jj,ikt) 156 zchem_data(ji,jj,15)= fluorid(ji,jj,ikt) 157 ENDIF 158 ENDDO 159 ENDDO 140 DO_2D_11_11 141 ikt = mbkt(ji,jj) 142 IF ( tmask(ji,jj,ikt) == 1 ) THEN 143 zchem_data(ji,jj,1) = ak13 (ji,jj,ikt) 144 zchem_data(ji,jj,2) = ak23 (ji,jj,ikt) 145 zchem_data(ji,jj,3) = akb3 (ji,jj,ikt) 146 zchem_data(ji,jj,4) = akw3 (ji,jj,ikt) 147 zchem_data(ji,jj,5) = aksp (ji,jj,ikt) 148 zchem_data(ji,jj,6) = borat (ji,jj,ikt) 149 zchem_data(ji,jj,7) = ak1p3 (ji,jj,ikt) 150 zchem_data(ji,jj,8) = ak2p3 (ji,jj,ikt) 151 zchem_data(ji,jj,9) = ak3p3 (ji,jj,ikt) 152 zchem_data(ji,jj,10)= aksi3 (ji,jj,ikt) 153 zchem_data(ji,jj,11)= sio3eq(ji,jj,ikt) 154 zchem_data(ji,jj,12)= aks3 (ji,jj,ikt) 155 zchem_data(ji,jj,13)= akf3 (ji,jj,ikt) 156 zchem_data(ji,jj,14)= sulfat(ji,jj,ikt) 157 zchem_data(ji,jj,15)= fluorid(ji,jj,ikt) 158 ENDIF 159 END_2D 160 160 161 161 CALL pack_arr ( jpoce, ak1s (1:jpoce), zchem_data(1:jpi,1:jpj,1) , iarroce(1:jpoce) ) -
NEMO/trunk/src/TOP/PISCES/SED/seddta.F90
r10362 r12377 22 22 REAL(wp) :: conv2 ! [kg/m2/month]-->[g/cm2/s] ( 1 month has 30 days ) 23 23 24 !! * Substitutions 25 # include "do_loop_substitute.h90" 24 26 !! $Id$ 25 27 CONTAINS … … 29 31 !!--------------------------------------------------------------------------- 30 32 31 SUBROUTINE sed_dta( kt )33 SUBROUTINE sed_dta( kt, Kbb, Kmm ) 32 34 !!---------------------------------------------------------------------- 33 35 !! *** ROUTINE sed_dta *** … … 43 45 44 46 !! Arguments 45 INTEGER, INTENT(in) :: kt ! time-step 47 INTEGER, INTENT(in) :: kt ! time-step 48 INTEGER, INTENT(in) :: Kbb, Kmm ! time level indices 46 49 47 50 !! * Local declarations … … 92 95 ! ----------------------------------------------------------- 93 96 IF (ln_sediment_offline) THEN 94 DO jj = 1, jpj 95 DO ji = 1, jpi 96 ikt = mbkt(ji,jj) 97 zwsbio4(ji,jj) = wsbio2 / rday 98 zwsbio3(ji,jj) = wsbio / rday 99 END DO 100 END DO 97 DO_2D_11_11 98 ikt = mbkt(ji,jj) 99 zwsbio4(ji,jj) = wsbio2 / rday 100 zwsbio3(ji,jj) = wsbio / rday 101 END_2D 101 102 ELSE 102 DO jj = 1, jpj 103 DO ji = 1, jpi 104 ikt = mbkt(ji,jj) 105 zdep = e3t_n(ji,jj,ikt) / r2dttrc 106 zwsbio4(ji,jj) = MIN( 0.99 * zdep, wsbio4(ji,jj,ikt) / rday ) 107 zwsbio3(ji,jj) = MIN( 0.99 * zdep, wsbio3(ji,jj,ikt) / rday ) 108 END DO 109 END DO 103 DO_2D_11_11 104 ikt = mbkt(ji,jj) 105 zdep = e3t(ji,jj,ikt,Kmm) / r2dttrc 106 zwsbio4(ji,jj) = MIN( 0.99 * zdep, wsbio4(ji,jj,ikt) / rday ) 107 zwsbio3(ji,jj) = MIN( 0.99 * zdep, wsbio3(ji,jj,ikt) / rday ) 108 END_2D 110 109 ENDIF 111 110 112 111 trc_data(:,:,:) = 0. 113 DO jj = 1,jpj 114 DO ji = 1, jpi 115 ikt = mbkt(ji,jj) 116 IF ( tmask(ji,jj,ikt) == 1 ) THEN 117 trc_data(ji,jj,1) = trb(ji,jj,ikt,jpsil) 118 trc_data(ji,jj,2) = trb(ji,jj,ikt,jpoxy) 119 trc_data(ji,jj,3) = trb(ji,jj,ikt,jpdic) 120 trc_data(ji,jj,4) = trb(ji,jj,ikt,jpno3) / 7.625 121 trc_data(ji,jj,5) = trb(ji,jj,ikt,jppo4) / 122. 122 trc_data(ji,jj,6) = trb(ji,jj,ikt,jptal) 123 trc_data(ji,jj,7) = trb(ji,jj,ikt,jpnh4) / 7.625 124 trc_data(ji,jj,8) = 0.0 125 trc_data(ji,jj,9) = 28.0E-3 126 trc_data(ji,jj,10) = trb(ji,jj,ikt,jpfer) 127 trc_data(ji,jj,11 ) = MIN(trb(ji,jj,ikt,jpgsi), 1E-4) * zwsbio4(ji,jj) * 1E3 128 trc_data(ji,jj,12 ) = MIN(trb(ji,jj,ikt,jppoc), 1E-4) * zwsbio3(ji,jj) * 1E3 129 trc_data(ji,jj,13 ) = MIN(trb(ji,jj,ikt,jpgoc), 1E-4) * zwsbio4(ji,jj) * 1E3 130 trc_data(ji,jj,14) = MIN(trb(ji,jj,ikt,jpcal), 1E-4) * zwsbio4(ji,jj) * 1E3 131 trc_data(ji,jj,15) = tsn(ji,jj,ikt,jp_tem) 132 trc_data(ji,jj,16) = tsn(ji,jj,ikt,jp_sal) 133 trc_data(ji,jj,17 ) = ( trb(ji,jj,ikt,jpsfe) * zwsbio3(ji,jj) + trb(ji,jj,ikt,jpbfe) & 134 & * zwsbio4(ji,jj) ) * 1E3 / ( trc_data(ji,jj,12 ) + trc_data(ji,jj,13 ) + rtrn ) 135 trc_data(ji,jj,17 ) = MIN(1E-3, trc_data(ji,jj,17 ) ) 136 ENDIF 137 ENDDO 138 ENDDO 112 DO_2D_11_11 113 ikt = mbkt(ji,jj) 114 IF ( tmask(ji,jj,ikt) == 1 ) THEN 115 trc_data(ji,jj,1) = tr(ji,jj,ikt,jpsil,Kbb) 116 trc_data(ji,jj,2) = tr(ji,jj,ikt,jpoxy,Kbb) 117 trc_data(ji,jj,3) = tr(ji,jj,ikt,jpdic,Kbb) 118 trc_data(ji,jj,4) = tr(ji,jj,ikt,jpno3,Kbb) / 7.625 119 trc_data(ji,jj,5) = tr(ji,jj,ikt,jppo4,Kbb) / 122. 120 trc_data(ji,jj,6) = tr(ji,jj,ikt,jptal,Kbb) 121 trc_data(ji,jj,7) = tr(ji,jj,ikt,jpnh4,Kbb) / 7.625 122 trc_data(ji,jj,8) = 0.0 123 trc_data(ji,jj,9) = 28.0E-3 124 trc_data(ji,jj,10) = tr(ji,jj,ikt,jpfer,Kbb) 125 trc_data(ji,jj,11 ) = MIN(tr(ji,jj,ikt,jpgsi,Kbb), 1E-4) * zwsbio4(ji,jj) * 1E3 126 trc_data(ji,jj,12 ) = MIN(tr(ji,jj,ikt,jppoc,Kbb), 1E-4) * zwsbio3(ji,jj) * 1E3 127 trc_data(ji,jj,13 ) = MIN(tr(ji,jj,ikt,jpgoc,Kbb), 1E-4) * zwsbio4(ji,jj) * 1E3 128 trc_data(ji,jj,14) = MIN(tr(ji,jj,ikt,jpcal,Kbb), 1E-4) * zwsbio4(ji,jj) * 1E3 129 trc_data(ji,jj,15) = ts(ji,jj,ikt,jp_tem,Kmm) 130 trc_data(ji,jj,16) = ts(ji,jj,ikt,jp_sal,Kmm) 131 trc_data(ji,jj,17 ) = ( tr(ji,jj,ikt,jpsfe,Kbb) * zwsbio3(ji,jj) + tr(ji,jj,ikt,jpbfe,Kbb) & 132 & * zwsbio4(ji,jj) ) * 1E3 / ( trc_data(ji,jj,12 ) + trc_data(ji,jj,13 ) + rtrn ) 133 trc_data(ji,jj,17 ) = MIN(1E-3, trc_data(ji,jj,17 ) ) 134 ENDIF 135 END_2D 139 136 140 137 ! Pore water initial concentration [mol/l] in k=1 -
NEMO/trunk/src/TOP/PISCES/SED/sedini.F90
r11536 r12377 13 13 USE sedarr 14 14 USE sedadv 15 USE trc_oce, ONLY : nn_dttrc16 15 USE trcdmp_sed 17 16 USE trcdta … … 23 22 PRIVATE 24 23 24 !! * Substitutions 25 # include "do_loop_substitute.h90" 25 26 !! Module variables 26 27 REAL(wp) :: & … … 134 135 ! Determination of sediments number of points and allocate global variables 135 136 epkbot(:,:) = 0. 136 DO jj = 1, jpj 137 DO ji = 1, jpi 138 ikt = mbkt(ji,jj) 139 IF( tmask(ji,jj,ikt) == 1 ) epkbot(ji,jj) = e3t_1d(ikt) 140 gdepbot(ji,jj) = gdepw_0(ji,jj,ikt) 141 ENDDO 142 ENDDO 137 DO_2D_11_11 138 ikt = mbkt(ji,jj) 139 IF( tmask(ji,jj,ikt) == 1 ) epkbot(ji,jj) = e3t_1d(ikt) 140 gdepbot(ji,jj) = gdepw_0(ji,jj,ikt) 141 END_2D 143 142 144 143 ! computation of total number of ocean points … … 248 247 ! Computation of 1D array of sediments points 249 248 indoce = 0 250 DO jj = 1, jpj 251 DO ji = 1, jpi 252 IF ( epkbot(ji,jj) > 0. ) THEN 253 indoce = indoce + 1 254 iarroce(indoce) = (jj - 1) * jpi + ji 255 ENDIF 256 END DO 257 END DO 249 DO_2D_11_11 250 IF ( epkbot(ji,jj) > 0. ) THEN 251 indoce = indoce + 1 252 iarroce(indoce) = (jj - 1) * jpi + ji 253 ENDIF 254 END_2D 258 255 259 256 IF ( indoce .EQ. 0 ) THEN … … 406 403 !!---------------------------------------------------------------------- 407 404 408 INTEGER :: numnamsed_ref = -1 !! Logical units fornamelist sediment409 INTEGER :: numnamsed_cfg = -1 !! Logical units fornamelist sediment405 CHARACTER(:), ALLOCATABLE :: numnamsed_ref !! Character buffer for reference namelist sediment 406 CHARACTER(:), ALLOCATABLE :: numnamsed_cfg !! Character buffer for configuration namelist sediment 410 407 INTEGER :: ios ! Local integer output status for namelist read 411 408 CHARACTER(LEN=20) :: clname … … 452 449 IF(lwp) WRITE(numsed,*) ' sed_init_nam : read SEDIMENT namelist' 453 450 IF(lwp) WRITE(numsed,*) ' ~~~~~~~~~~~~~~' 454 CALL ctl_opn( numnamsed_ref, TRIM( clname )//'_ref', 'OLD' , 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE.)455 CALL ctl_opn( numnamsed_cfg, TRIM( clname )//'_cfg', 'OLD' , 'FORMATTED', 'SEQUENTIAL', -1, numout, .FALSE.)451 CALL load_nml( numnamsed_ref, TRIM( clname )//'_ref', numout, lwm ) 452 CALL load_nml( numnamsed_cfg, TRIM( clname )//'_cfg', numout, lwm ) 456 453 457 454 nitsed000 = nittrc000 458 455 nitsedend = nitend 459 456 ! Namelist nam_run 460 REWIND( numnamsed_ref ) ! Namelist nam_run in reference namelist : Pisces variables461 457 READ ( numnamsed_ref, nam_run, IOSTAT = ios, ERR = 901) 462 458 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_run in reference namelist' ) 463 459 464 REWIND( numnamsed_cfg ) ! Namelist nam_run in reference namelist : Pisces variables465 460 READ ( numnamsed_cfg, nam_run, IOSTAT = ios, ERR = 902) 466 461 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_run in configuration namelist' ) … … 474 469 IF ( ln_p5z .AND. ln_sed_2way ) CALL ctl_stop( '2 ways coupling with sediment cannot be activated with PISCES-QUOTA' ) 475 470 476 REWIND( numnamsed_ref ) ! Namelist nam_geom in reference namelist : Pisces variables477 471 READ ( numnamsed_ref, nam_geom, IOSTAT = ios, ERR = 903) 478 472 903 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_geom in reference namelist' ) 479 473 480 REWIND( numnamsed_cfg ) ! Namelist nam_geom in reference namelist : Pisces variables481 474 READ ( numnamsed_cfg, nam_geom, IOSTAT = ios, ERR = 904) 482 475 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_geom in configuration namelist' ) … … 497 490 dtsed = r2dttrc 498 491 499 REWIND( numnamsed_ref ) ! Namelist nam_trased in reference namelist : Pisces variables500 492 READ ( numnamsed_ref, nam_trased, IOSTAT = ios, ERR = 905) 501 493 905 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_trased in reference namelist' ) 502 494 503 REWIND( numnamsed_cfg ) ! Namelist nam_trased in reference namelist : Pisces variables504 495 READ ( numnamsed_cfg, nam_trased, IOSTAT = ios, ERR = 906) 505 496 906 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_trased in configuration namelist' ) … … 530 521 ENDIF 531 522 532 REWIND( numnamsed_ref ) ! Namelist nam_diased in reference namelist : Pisces variables533 523 READ ( numnamsed_ref, nam_diased, IOSTAT = ios, ERR = 907) 534 524 907 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diased in reference namelist' ) 535 525 536 REWIND( numnamsed_cfg ) ! Namelist nam_diased in reference namelist : Pisces variables537 526 READ ( numnamsed_cfg, nam_diased, IOSTAT = ios, ERR = 908) 538 527 908 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_diased in configuration namelist' ) … … 572 561 ! Inorganic chemistry parameters 573 562 !---------------------------------- 574 REWIND( numnamsed_ref ) ! Namelist nam_inorg in reference namelist : Pisces variables575 563 READ ( numnamsed_ref, nam_inorg, IOSTAT = ios, ERR = 909) 576 564 909 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_inorg in reference namelist' ) 577 565 578 REWIND( numnamsed_cfg ) ! Namelist nam_inorg in reference namelist : Pisces variables579 566 READ ( numnamsed_cfg, nam_inorg, IOSTAT = ios, ERR = 910) 580 567 910 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_inorg in configuration namelist' ) … … 598 585 ! Additional parameter linked to POC/O2/No3/Po4 599 586 !---------------------------------------------- 600 REWIND( numnamsed_ref ) ! Namelist nam_poc in reference namelist : Pisces variables601 587 READ ( numnamsed_ref, nam_poc, IOSTAT = ios, ERR = 911) 602 588 911 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_poc in reference namelist' ) 603 589 604 REWIND( numnamsed_cfg ) ! Namelist nam_poc in reference namelist : Pisces variables605 590 READ ( numnamsed_cfg, nam_poc, IOSTAT = ios, ERR = 912) 606 591 912 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_poc in configuration namelist' ) … … 650 635 ! Bioturbation parameter 651 636 !------------------------ 652 REWIND( numnamsed_ref ) ! Namelist nam_btb in reference namelist : Pisces variables653 637 READ ( numnamsed_ref, nam_btb, IOSTAT = ios, ERR = 913) 654 638 913 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_btb in reference namelist' ) 655 639 656 REWIND( numnamsed_cfg ) ! Namelist nam_btb in reference namelist : Pisces variables657 640 READ ( numnamsed_cfg, nam_btb, IOSTAT = ios, ERR = 914) 658 641 914 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_btb in configuration namelist' ) … … 671 654 ! Initial value (t=0) for sediment pore water and solid components 672 655 !---------------------------------------------------------------- 673 REWIND( numnamsed_ref ) ! Namelist nam_rst in reference namelist : Pisces variables674 656 READ ( numnamsed_ref, nam_rst, IOSTAT = ios, ERR = 915) 675 657 915 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_rst in reference namelist' ) 676 658 677 REWIND( numnamsed_cfg ) ! Namelist nam_rst in reference namelist : Pisces variables678 659 READ ( numnamsed_cfg, nam_rst, IOSTAT = ios, ERR = 916) 679 660 916 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nam_rst in configuration namelist' ) … … 684 665 WRITE(numsed,*) ' ' 685 666 ENDIF 686 nn_dtsed = nn_dttrc 687 688 CLOSE( numnamsed_cfg ) 689 CLOSE( numnamsed_ref ) 667 nn_dtsed = 1 668 690 669 691 670 END SUBROUTINE sed_init_nam -
NEMO/trunk/src/TOP/PISCES/SED/sedinitrc.F90
r10225 r12377 33 33 34 34 35 SUBROUTINE sed_initrc 35 SUBROUTINE sed_initrc( Kbb, Kmm ) 36 36 !!---------------------------------------------------------------------- 37 37 !! *** ROUTINE sed_init *** … … 50 50 !! ! 06-07 (C. Ethe) Re-organization 51 51 !!---------------------------------------------------------------------- 52 INTEGER, INTENT(in) :: Kbb, Kmm ! time level indices 52 53 INTEGER :: ji, jj, ikt 53 54 !!---------------------------------------------------------------------- … … 65 66 ! ( only clay or reading restart file ) 66 67 !--------------------------------------- 67 CALL sed_init_data 68 CALL sed_init_data( Kbb, Kmm ) 68 69 69 70 … … 74 75 75 76 76 SUBROUTINE sed_init_data 77 SUBROUTINE sed_init_data( Kbb, Kmm ) 77 78 !!---------------------------------------------------------------------- 78 79 !! *** ROUTINE sed_init_data *** … … 85 86 !! ! 06-07 (C. Ethe) original 86 87 !!---------------------------------------------------------------------- 88 INTEGER, INTENT(in) :: Kbb, Kmm ! time level indices 87 89 88 90 ! local variables … … 128 130 129 131 ! Load initial Pisces Data for bot. wat. Chem and fluxes 130 CALL sed_dta ( nitsed000 )132 CALL sed_dta ( nitsed000, Kbb, Kmm ) 131 133 132 134 ! Initialization of chemical constants -
NEMO/trunk/src/TOP/PISCES/SED/sedmodel.F90
r10222 r12377 16 16 CONTAINS 17 17 18 SUBROUTINE sed_model ( kt )18 SUBROUTINE sed_model ( kt, Kbb, Kmm, Krhs ) 19 19 !!--------------------------------------------------------------------- 20 20 !! *** ROUTINE sed_model *** … … 29 29 !! ! 07-02 (C. Ethe) Original 30 30 !!---------------------------------------------------------------------- 31 INTEGER, INTENT(in) :: kt ! number of iteration 31 INTEGER, INTENT(in) :: kt ! number of iteration 32 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! time level indices 32 33 33 34 34 35 IF( ln_timing ) CALL timing_start('sed_model') 35 36 36 IF( kt == nittrc000 ) CALL sed_initrc ! Initialization of sediment model37 CALL sed_stp( kt ) ! Time stepping of Sediment model37 IF( kt == nittrc000 ) CALL sed_initrc( Kbb, Kmm ) ! Initialization of sediment model 38 CALL sed_stp( kt, Kbb, Kmm, Krhs ) ! Time stepping of Sediment model 38 39 39 40 IF( ln_timing ) CALL timing_stop('sed_model') -
NEMO/trunk/src/TOP/PISCES/SED/sedrst.F90
r11536 r12377 10 10 USE sed 11 11 USE sedarr 12 USE trc_oce, ONLY : l_offline , nn_dttrc12 USE trc_oce, ONLY : l_offline 13 13 USE phycst , ONLY : rday 14 14 USE iom … … 66 66 67 67 ! to get better performances with NetCDF format: 68 ! we open and define the tracer restart file one tracer time step before writing the data (-> at nitrst - 2*nn_dttrc +1)69 ! except if we write tracer restart files every tracer time step or if a tracer restart file was writen at nitend - 2*nn_dttrc +168 ! we open and define the tracer restart file one tracer time step before writing the data (-> at nitrst - 1) 69 ! except if we write tracer restart files every tracer time step or if a tracer restart file was writen at nitend - 1 70 70 IF( kt == nitrst - 2*nn_dtsed .OR. nn_stock == nn_dtsed .OR. ( kt == nitend - nn_dtsed .AND. .NOT. lrst_sed ) ) THEN 71 71 ! beware of the format used to write kt (default is i8.8, that should be large enough) -
NEMO/trunk/src/TOP/PISCES/SED/sedsfc.F90
r10222 r12377 11 11 PUBLIC sed_sfc 12 12 13 !! * Substitutions 14 # include "do_loop_substitute.h90" 13 15 !! $Id$ 14 16 CONTAINS 15 17 16 SUBROUTINE sed_sfc( kt )18 SUBROUTINE sed_sfc( kt, Kbb ) 17 19 !!--------------------------------------------------------------------- 18 20 !! *** ROUTINE sed_sfc *** … … 26 28 !!* Arguments 27 29 INTEGER, INTENT(in) :: kt ! time step 30 INTEGER, INTENT(in) :: Kbb ! time index 28 31 29 32 ! * local variables … … 45 48 46 49 47 DO jj = 1,jpj 48 DO ji = 1, jpi 49 ikt = mbkt(ji,jj) 50 IF ( tmask(ji,jj,ikt) == 1 ) THEN 51 trb(ji,jj,ikt,jptal) = trc_data(ji,jj,1) 52 trb(ji,jj,ikt,jpdic) = trc_data(ji,jj,2) 53 trb(ji,jj,ikt,jpno3) = trc_data(ji,jj,3) * 7.625 54 trb(ji,jj,ikt,jppo4) = trc_data(ji,jj,4) * 122. 55 trb(ji,jj,ikt,jpoxy) = trc_data(ji,jj,5) 56 trb(ji,jj,ikt,jpsil) = trc_data(ji,jj,6) 57 trb(ji,jj,ikt,jpnh4) = trc_data(ji,jj,7) * 7.625 58 trb(ji,jj,ikt,jpfer) = trc_data(ji,jj,8) 59 ENDIF 60 ENDDO 61 ENDDO 50 DO_2D_11_11 51 ikt = mbkt(ji,jj) 52 IF ( tmask(ji,jj,ikt) == 1 ) THEN 53 tr(ji,jj,ikt,jptal,Kbb) = trc_data(ji,jj,1) 54 tr(ji,jj,ikt,jpdic,Kbb) = trc_data(ji,jj,2) 55 tr(ji,jj,ikt,jpno3,Kbb) = trc_data(ji,jj,3) * 7.625 56 tr(ji,jj,ikt,jppo4,Kbb) = trc_data(ji,jj,4) * 122. 57 tr(ji,jj,ikt,jpoxy,Kbb) = trc_data(ji,jj,5) 58 tr(ji,jj,ikt,jpsil,Kbb) = trc_data(ji,jj,6) 59 tr(ji,jj,ikt,jpnh4,Kbb) = trc_data(ji,jj,7) * 7.625 60 tr(ji,jj,ikt,jpfer,Kbb) = trc_data(ji,jj,8) 61 ENDIF 62 END_2D 62 63 63 64 IF( ln_timing ) CALL timing_stop('sed_sfc') -
NEMO/trunk/src/TOP/PISCES/SED/sedstp.F90
r10222 r12377 29 29 CONTAINS 30 30 31 SUBROUTINE sed_stp ( kt )31 SUBROUTINE sed_stp ( kt, Kbb, Kmm, Krhs ) 32 32 !!--------------------------------------------------------------------- 33 33 !! *** ROUTINE sed_stp *** … … 44 44 !! ! 06-04 (C. Ethe) Re-organization 45 45 !!---------------------------------------------------------------------- 46 INTEGER, INTENT(in) :: kt ! number of iteration 46 INTEGER, INTENT(in) :: kt ! number of iteration 47 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! time level indices 47 48 INTEGER :: ji,jk,js,jn,jw 48 49 !!---------------------------------------------------------------------- … … 52 53 IF( lrst_sed ) CALL sed_rst_cal ( kt, 'WRITE' ) ! calenda 53 54 54 IF(ln_sediment_offline) CALL trc_dmp_sed ( kt )55 IF(ln_sediment_offline) CALL trc_dmp_sed ( kt, Kbb, Kmm, Krhs ) 55 56 56 57 dtsed = r2dttrc 57 58 ! dtsed2 = dtsed 58 59 IF (kt /= nitsed000) THEN 59 CALL sed_dta( kt ) ! Load Data for bot. wat. Chem and fluxes60 CALL sed_dta( kt, Kbb, Kmm ) ! Load Data for bot. wat. Chem and fluxes 60 61 ENDIF 61 62 … … 80 81 CALL sed_mbc( kt ) ! cumulation for mass balance calculation 81 82 82 IF (ln_sed_2way) CALL sed_sfc( kt ) ! Give back new bottom wat chem to tracer model83 IF (ln_sed_2way) CALL sed_sfc( kt, Kbb ) ! Give back new bottom wat chem to tracer model 83 84 ENDIF 84 85 CALL sed_wri( kt ) ! outputs -
NEMO/trunk/src/TOP/PISCES/SED/trcdmp_sed.F90
r10225 r12377 35 35 36 36 !! * Substitutions 37 # include " vectopt_loop_substitute.h90"37 # include "do_loop_substitute.h90" 38 38 !!---------------------------------------------------------------------- 39 39 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 54 54 55 55 56 SUBROUTINE trc_dmp_sed( kt )56 SUBROUTINE trc_dmp_sed( kt, Kbb, Kmm, Krhs ) 57 57 !!---------------------------------------------------------------------- 58 58 !! *** ROUTINE trc_dmp_sed *** … … 64 64 !! ** Method : Newtonian damping towards trdta computed 65 65 !! and add to the general tracer trends: 66 !! tr n = tra + restotr * (trdta - trb)66 !! tr(Kmm) = tr(Krhs) + restotr * (trdta - tr(Kbb)) 67 67 !! The trend is computed either throughout the water column 68 68 !! (nlmdmptr=0) or in area of weak vertical mixing (nlmdmptr=1) or 69 69 !! below the well mixed layer (nlmdmptr=2) 70 70 !! 71 !! ** Action : - update the tracer trends tr awith the newtonian71 !! ** Action : - update the tracer trends tr(Krhs) with the newtonian 72 72 !! damping trends. 73 73 !! - save the trends ('key_trdmxl_trc') 74 74 !!---------------------------------------------------------------------- 75 INTEGER, INTENT(in) :: kt ! ocean time-step index 75 INTEGER, INTENT(in) :: kt ! ocean time-step index 76 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs ! time level index 76 77 ! 77 78 INTEGER :: ji, jj, jk, jn, jl, ikt ! dummy loop indices … … 90 91 ! 91 92 jl = n_trc_index(jn) 92 CALL trc_dta( kt, sf_trcdta(jl), rf_trfac(jl), ztrcdta ) ! read tracer data at nit00093 CALL trc_dta( kt, Kmm, sf_trcdta(jl), rf_trfac(jl), ztrcdta ) ! read tracer data at nit000 93 94 ! 94 DO jj = 1, jpj 95 DO ji = 1, jpi ! vector opt. 96 ikt = mbkt(ji,jj) 97 trb(ji,jj,ikt,jn) = ztrcdta(ji,jj,ikt) + ( trb(ji,jj,ikt,jn) - ztrcdta(ji,jj,ikt) ) & 98 & * exp( -restosed(ji,jj,ikt) * dtsed ) 99 END DO 100 END DO 95 DO_2D_11_11 96 ikt = mbkt(ji,jj) 97 tr(ji,jj,ikt,jn,Kbb) = ztrcdta(ji,jj,ikt) + ( tr(ji,jj,ikt,jn,Kbb) - ztrcdta(ji,jj,ikt) ) & 98 & * exp( -restosed(ji,jj,ikt) * dtsed ) 99 END_2D 101 100 ! 102 101 ENDIF … … 106 105 ! 107 106 ! ! print mean trends (used for debugging) 108 IF( ln_ctl) THEN107 IF( sn_cfctl%l_prttrc ) THEN 109 108 WRITE(charout, FMT="('dmp ')") 110 109 CALL prt_ctl_trc_info(charout) 111 CALL prt_ctl_trc( tab4d=tr a, mask=tmask, clinfo=ctrcnm, clinfo2='trd' )110 CALL prt_ctl_trc( tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm, clinfo2='trd' ) 112 111 ENDIF 113 112 ! … … 148 147 !!---------------------------------------------------------------------- 149 148 CONTAINS 150 SUBROUTINE trc_dmp_sed( kt )! Empty routine149 SUBROUTINE trc_dmp_sed( kt, Kbb, Kmm, Krhs ) ! Empty routine 151 150 INTEGER, INTENT(in) :: kt 151 INTEGER, INTENT(in) :: Kbb, Kmm, Krhs 152 152 WRITE(*,*) 'trc_dmp_sed: You should not have seen this print! error?', kt 153 153 END SUBROUTINE trc_dmp_sed
Note: See TracChangeset
for help on using the changeset viewer.