New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 15450 for NEMO/trunk/src/TOP/PISCES/SED/sedwri.F90 – NEMO

Ignore:
Timestamp:
2021-10-27T16:32:08+02:00 (3 years ago)
Author:
cetlod
Message:

Some updates to make the PISCES/SED module usable. Totally orthogonal with no effect on other parts of the code

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/TOP/PISCES/SED/sedwri.F90

    r14086 r15450  
    44   !!         Sediment diagnostics :  write sediment output files 
    55   !!====================================================================== 
    6    USE par_sed 
    76   USE sed 
    87   USE sedarr 
    98   USE lib_mpp         ! distribued memory computing library 
    109   USE iom 
     10   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    1111 
    1212   IMPLICIT NONE 
     
    3838      CHARACTER(len = 20)  ::  cltra  
    3939      REAL(wp)  :: zrate 
    40       REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zdta, zflx 
     40      REAL(wp), DIMENSION(jpoce, jpksed)     :: zdta 
     41      REAL(wp), DIMENSION(jpoce, jptrased+1) :: zflx 
     42      REAL(wp), DIMENSION(jpi, jpj, jpksed, jptrased)   :: trcsedi 
     43      REAL(wp), DIMENSION(jpi, jpj, jpksed, jpdia3dsed) :: flxsedi3d 
     44      REAL(wp), DIMENSION(jpi, jpj, jpdia2dsed) :: flxsedi2d 
    4145 
    4246      !!------------------------------------------------------------------- 
     
    5458      IF (lwp) WRITE(numsed,*) ' ' 
    5559       
    56       ALLOCATE( zdta(jpoce,jpksed) )    ;   ALLOCATE( zflx(jpoce,jpwatp1) ) 
    57  
    5860      ! Initialize variables 
    5961      ! -------------------- 
     
    8890      CALL unpack_arr( jpoce, flxsedi3d(1:jpi,1:jpj,1:jpksed,2)  , iarroce(1:jpoce), & 
    8991         &                   co3por(1:jpoce,1:jpksed)  ) 
     92 
     93      CALL unpack_arr( jpoce, flxsedi3d(1:jpi,1:jpj,1:jpksed,3)  , iarroce(1:jpoce), & 
     94         &                   saturco3(1:jpoce,1:jpksed)  ) 
     95 
    9096       
    9197!      flxsedi3d = 0. 
     
    95101         DO ji = 1, jpoce 
    96102            zflx(ji,jw) = ( pwcp(ji,1,jw) - pwcp_dta(ji,jw) ) & 
    97                &         * 1.e3 / 1.e2 * dzkbot(ji) / rDt_trc 
     103               &         * 1.e3 * ( 1.e-2 * dzkbot(ji) ) / 1.E4 / rDt_trc 
     104         ENDDO 
     105      ENDDO 
     106 
     107      ! Calculation of fluxes g/cm2/s 
     108      DO js = 1, jpsol 
     109         zrate =  1.0 / rDt_trc 
     110         DO ji = 1, jpoce 
     111            zflx(ji,jpwat+js) = zflx(ji,jpwat+js) + ( tosed(ji,js) - fromsed(ji,js) ) * zrate 
    98112         ENDDO 
    99113      ENDDO 
     
    101115      ! Calculation of accumulation rate per dt 
    102116      DO js = 1, jpsol 
    103          zrate =  1.0 / ( denssol * por1(jpksed) ) / rDt_trc 
     117         zrate =  1.0 / rDt_trc 
    104118         DO ji = 1, jpoce 
    105             zflx(ji,jpwatp1) = zflx(ji,jpwatp1) + ( tosed(ji,js) - fromsed(ji,js) ) * zrate 
     119            zflx(ji,jptrased+1) = zflx(ji,jptrased+1) + ( tosed(ji,js) - fromsed(ji,js) ) * zrate 
    106120         ENDDO 
    107121      ENDDO 
    108122 
    109       DO jn = 1, jpdia2dsed - 1  
     123      DO jn = 1, jpdia2dsed - 2  
    110124         CALL unpack_arr( jpoce, flxsedi2d(1:jpi,1:jpj,jn), iarroce(1:jpoce), zflx(1:jpoce,jn)  ) 
    111125      END DO 
     126 
    112127      zflx(:,1) = dzdep(:) / dtsed 
    113       CALL unpack_arr( jpoce, flxsedi2d(1:jpi,1:jpj,jpdia2dsed), iarroce(1:jpoce), zflx(1:jpoce,1) ) 
     128      CALL unpack_arr( jpoce, flxsedi2d(1:jpi,1:jpj,jpdia2dsed-1), iarroce(1:jpoce), zflx(1:jpoce,1) ) 
    114129 
    115        ! Start writing data 
    116        ! --------------------- 
    117        DO jn = 1, jptrased 
    118           cltra = sedtrcd(jn) ! short title for 3D diagnostic 
    119           CALL iom_put( cltra, trcsedi(:,:,:,jn) ) 
    120        END DO 
     130      CALL unpack_arr( jpoce, flxsedi2d(1:jpi,1:jpj,jpdia2dsed), iarroce(1:jpoce), rstepros(1:jpoce) ) 
     131      ! 
     132!      CALL lbc_lnk( 'sedwri', trcsedi(:,:,:,:), 'T', 1._wp ) 
     133!      CALL lbc_lnk( 'sedwri', flxsedi3d(:,:,:,:), 'T', 1._wp ) 
     134!      CALL lbc_lnk( 'sedwri', flxsedi2d(:,:,:), 'T', 1._wp ) 
    121135 
    122        DO jn = 1, jpdia3dsed 
    123           cltra = seddia3d(jn) ! short title for 3D diagnostic 
    124           CALL iom_put( cltra, flxsedi3d(:,:,:,jn) ) 
    125        END DO 
     136      ! Start writing data 
     137      ! --------------------- 
     138      DO jn = 1, jptrased 
     139         cltra = sedtrcd(jn) ! short title for 3D diagnostic 
     140         CALL iom_put( cltra, trcsedi(:,:,:,jn) ) 
     141      END DO 
    126142 
    127        DO jn = 1, jpdia2dsed 
    128           cltra = seddia2d(jn) ! short title for 2D diagnostic 
    129           CALL iom_put( cltra, flxsedi2d(:,:,jn) ) 
    130        END DO 
     143      DO jn = 1, jpdia3dsed 
     144         cltra = seddia3d(jn) ! short title for 3D diagnostic 
     145         CALL iom_put( cltra, flxsedi3d(:,:,:,jn) ) 
     146      END DO 
    131147 
    132  
    133       DEALLOCATE( zdta )    ;   DEALLOCATE( zflx ) 
     148      DO jn = 1, jpdia2dsed 
     149         cltra = seddia2d(jn) ! short title for 2D diagnostic 
     150         CALL iom_put( cltra, flxsedi2d(:,:,jn) ) 
     151      END DO 
    134152 
    135153      IF( ln_timing )  CALL timing_stop('sed_wri') 
Note: See TracChangeset for help on using the changeset viewer.