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 6095 – NEMO

Changeset 6095


Ignore:
Timestamp:
2015-12-17T15:43:53+01:00 (8 years ago)
Author:
cetlod
Message:

Add time varying part of vertical coordinate system in offline

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OFF_SRC/domrea.F90

    r6077 r6095  
    555555            CALL iom_get( inum4, jpdom_unknown, 'esigw', esigw ) 
    556556 
    557             CALL iom_get( inum4, jpdom_data, 'e3t_0', e3t_n(:,:,:) ) ! scale factors 
    558             CALL iom_get( inum4, jpdom_data, 'e3u_0', e3u_n(:,:,:) ) 
    559             CALL iom_get( inum4, jpdom_data, 'e3v_0', e3v_n(:,:,:) ) 
    560             CALL iom_get( inum4, jpdom_data, 'e3w_0', e3w_n(:,:,:) ) 
     557            CALL iom_get( inum4, jpdom_data, 'e3t_0', e3t_0(:,:,:) ) ! scale factors 
     558            CALL iom_get( inum4, jpdom_data, 'e3u_0', e3u_0(:,:,:) ) 
     559            CALL iom_get( inum4, jpdom_data, 'e3v_0', e3v_0(:,:,:) ) 
     560            CALL iom_get( inum4, jpdom_data, 'e3w_0', e3w_0(:,:,:) ) 
    561561 
    562562            CALL iom_get( inum4, jpdom_unknown, 'gdept_1d', gdept_1d ) ! depth 
     
    572572            ! 
    573573            IF( nmsh <= 6 ) THEN                                        ! 3D vertical scale factors 
    574                CALL iom_get( inum4, jpdom_data, 'e3t_0', e3t_n(:,:,:) ) 
    575                CALL iom_get( inum4, jpdom_data, 'e3u_0', e3u_n(:,:,:) ) 
    576                CALL iom_get( inum4, jpdom_data, 'e3v_0', e3v_n(:,:,:) ) 
    577                CALL iom_get( inum4, jpdom_data, 'e3w_0', e3w_n(:,:,:) ) 
     574               CALL iom_get( inum4, jpdom_data, 'e3t_0', e3t_0(:,:,:) ) 
     575               CALL iom_get( inum4, jpdom_data, 'e3u_0', e3u_0(:,:,:) ) 
     576               CALL iom_get( inum4, jpdom_data, 'e3v_0', e3v_0(:,:,:) ) 
     577               CALL iom_get( inum4, jpdom_data, 'e3w_0', e3w_0(:,:,:) ) 
    578578            ELSE                                                        ! 2D bottom scale factors 
    579579               CALL iom_get( inum4, jpdom_data, 'e3t_ps', e3tp ) 
     
    581581               !                                                        ! deduces the 3D scale factors 
    582582               DO jk = 1, jpk 
    583                   e3t_n(:,:,jk) = e3t_1d(jk)                                    ! set to the ref. factors 
    584                   e3u_n(:,:,jk) = e3t_1d(jk) 
    585                   e3v_n(:,:,jk) = e3t_1d(jk) 
    586                   e3w_n(:,:,jk) = e3w_1d(jk) 
     583                  e3t_0(:,:,jk) = e3t_1d(jk)                                    ! set to the ref. factors 
     584                  e3u_0(:,:,jk) = e3t_1d(jk) 
     585                  e3v_0(:,:,jk) = e3t_1d(jk) 
     586                  e3w_0(:,:,jk) = e3w_1d(jk) 
    587587               END DO 
    588588               DO jj = 1,jpj                                                  ! adjust the deepest values 
    589589                  DO ji = 1,jpi 
    590590                     ik = mbkt(ji,jj) 
    591                      e3t_n(ji,jj,ik) = e3tp(ji,jj) * tmask(ji,jj,1) + e3t_1d(1) * ( 1._wp - tmask(ji,jj,1) ) 
    592                      e3w_n(ji,jj,ik) = e3wp(ji,jj) * tmask(ji,jj,1) + e3w_1d(1) * ( 1._wp - tmask(ji,jj,1) ) 
     591                     e3t_0(ji,jj,ik) = e3tp(ji,jj) * tmask(ji,jj,1) + e3t_1d(1) * ( 1._wp - tmask(ji,jj,1) ) 
     592                     e3w_0(ji,jj,ik) = e3wp(ji,jj) * tmask(ji,jj,1) + e3w_1d(1) * ( 1._wp - tmask(ji,jj,1) ) 
    593593                  END DO 
    594594               END DO 
     
    596596                  DO jj = 1, jpjm1 
    597597                     DO ji = 1, jpim1 
    598                         e3u_n(ji,jj,jk) = MIN( e3t_n(ji,jj,jk), e3t_n(ji+1,jj,jk) ) 
    599                         e3v_n(ji,jj,jk) = MIN( e3t_n(ji,jj,jk), e3t_n(ji,jj+1,jk) ) 
     598                        e3u_0(ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji+1,jj,jk) ) 
     599                        e3v_0(ji,jj,jk) = MIN( e3t_0(ji,jj,jk), e3t_0(ji,jj+1,jk) ) 
    600600                     END DO 
    601601                  END DO 
    602602               END DO 
    603                CALL lbc_lnk( e3u_n(:,:,:) , 'U', 1._wp )   ;   CALL lbc_lnk( e3uw_n(:,:,:), 'U', 1._wp )   ! lateral boundary conditions 
    604                CALL lbc_lnk( e3v_n(:,:,:) , 'V', 1._wp )   ;   CALL lbc_lnk( e3vw_n(:,:,:), 'V', 1._wp ) 
     603               CALL lbc_lnk( e3u_0(:,:,:) , 'U', 1._wp )   ;   CALL lbc_lnk( e3uw_0(:,:,:), 'U', 1._wp )   ! lateral boundary conditions 
     604               CALL lbc_lnk( e3v_0(:,:,:) , 'V', 1._wp )   ;   CALL lbc_lnk( e3vw_0(:,:,:), 'V', 1._wp ) 
    605605               ! 
    606606               DO jk = 1, jpk                        ! set to z-scale factor if zero (i.e. along closed boundaries) 
    607                   WHERE( e3u_n(:,:,jk) == 0._wp )   e3u_n(:,:,jk) = e3t_1d(jk) 
    608                   WHERE( e3v_n(:,:,jk) == 0._wp )   e3v_n(:,:,jk) = e3t_1d(jk) 
     607                  WHERE( e3u_0(:,:,jk) == 0._wp )   e3u_0(:,:,jk) = e3t_1d(jk) 
     608                  WHERE( e3v_0(:,:,jk) == 0._wp )   e3v_0(:,:,jk) = e3t_1d(jk) 
    609609               END DO 
    610610            END IF 
    611611 
    612612            IF( iom_varid( inum4, 'gdept_0', ldstop = .FALSE. ) > 0 ) THEN   ! 3D depth of t- and w-level 
    613                CALL iom_get( inum4, jpdom_data, 'gdept_0', gdept_n(:,:,:) ) 
    614                CALL iom_get( inum4, jpdom_data, 'gdepw_0', gdepw_n(:,:,:) ) 
     613               CALL iom_get( inum4, jpdom_data, 'gdept_0', gdept_0(:,:,:) ) 
     614               CALL iom_get( inum4, jpdom_data, 'gdepw_0', gdepw_0(:,:,:) ) 
    615615            ELSE                                                           ! 2D bottom depth 
    616616               CALL iom_get( inum4, jpdom_data, 'hdept', zprt ) 
     
    618618               ! 
    619619               DO jk = 1, jpk                                              ! deduces the 3D depth 
    620                   gdept_n(:,:,jk) = gdept_1d(jk) 
    621                   gdepw_n(:,:,jk) = gdepw_1d(jk) 
     620                  gdept_0(:,:,jk) = gdept_1d(jk) 
     621                  gdepw_0(:,:,jk) = gdepw_1d(jk) 
    622622               END DO 
    623623               DO jj = 1, jpj 
     
    625625                     ik = mbkt(ji,jj) 
    626626                     IF( ik > 0 ) THEN 
    627                         gdepw_n(ji,jj,ik+1) = zprw(ji,jj) 
    628                         gdept_n(ji,jj,ik  ) = zprt(ji,jj) 
    629                         gdept_n(ji,jj,ik+1) = gdept_n(ji,jj,ik) + e3t_n(ji,jj,ik) 
     627                        gdepw_0(ji,jj,ik+1) = zprw(ji,jj) 
     628                        gdept_0(ji,jj,ik  ) = zprt(ji,jj) 
     629                        gdept_0(ji,jj,ik+1) = gdept_0(ji,jj,ik) + e3t_0(ji,jj,ik) 
    630630                     ENDIF 
    631631                  END DO 
     
    641641            CALL iom_get( inum4, jpdom_unknown, 'e3w_1d'  , e3w_1d   ) 
    642642            DO jk = 1, jpk 
    643                e3t_n(:,:,jk) = e3t_1d(jk)                              ! set to the ref. factors 
    644                e3u_n(:,:,jk) = e3t_1d(jk) 
    645                e3v_n(:,:,jk) = e3t_1d(jk) 
    646                e3w_n(:,:,jk) = e3w_1d(jk) 
    647                gdept_n(:,:,jk) = gdept_1d(jk) 
    648                gdepw_n(:,:,jk) = gdepw_1d(jk) 
     643               e3t_0(:,:,jk) = e3t_1d(jk)                              ! set to the ref. factors 
     644               e3u_0(:,:,jk) = e3t_1d(jk) 
     645               e3v_0(:,:,jk) = e3t_1d(jk) 
     646               e3w_0(:,:,jk) = e3w_1d(jk) 
     647               gdept_0(:,:,jk) = gdept_1d(jk) 
     648               gdepw_0(:,:,jk) = gdepw_1d(jk) 
    649649            END DO 
    650650         ENDIF 
     651 
     652      ! 
     653      !              !==  time varying part of coordinate system  ==! 
     654      ! 
     655      !       before        !          now          !       after         ! 
     656      ;  gdept_b = gdept_0  ;   gdept_n = gdept_0   !        ---          ! depth of grid-points 
     657      ;  gdepw_b = gdepw_0  ;   gdepw_n = gdepw_0   !        ---          ! 
     658      ;                     ;   gde3w_n = gde3w_0   !        ---          ! 
     659      ! 
     660      ;    e3t_b =   e3t_0  ;     e3t_n =   e3t_0   ;   e3t_a =  e3t_0    ! scale factors 
     661      ;    e3u_b =   e3u_0  ;     e3u_n =   e3u_0   ;   e3u_a =  e3u_0    ! 
     662      ;    e3v_b =   e3v_0  ;     e3v_n =   e3v_0   ;   e3v_a =  e3v_0    ! 
     663      ;                     ;     e3f_n =   e3f_0   !        ---          ! 
     664      ;    e3w_b =   e3w_0  ;     e3w_n =   e3w_0   !        ---          ! 
     665      ;   e3uw_b =  e3uw_0  ;    e3uw_n =  e3uw_0   !        ---          ! 
     666      ;   e3vw_b =  e3vw_0  ;    e3vw_n =  e3vw_0   !        ---          ! 
     667      ! 
    651668 
    652669!!gm BUG in s-coordinate this does not work! 
Note: See TracChangeset for help on using the changeset viewer.