Changeset 3253


Ignore:
Timestamp:
2012-01-06T16:40:17+01:00 (9 years ago)
Author:
agn
Message:

dev_NEMO_MERGE_2011: output {uvw}_eiv if ln_traldf_gdia T. Do in traldf_iso_grif.F90/diawri.F90 w/w-o key_iomput

Location:
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r3186 r3253  
    2828   USE ldftra_oce      ! ocean active tracers: lateral physics 
    2929   USE ldfdyn_oce      ! ocean dynamics: lateral physics 
     30   USE traldf_iso_grif, ONLY : psix_eiv, psiy_eiv 
    3031   USE sol_oce         ! solver variables 
    3132   USE sbc_oce         ! Surface boundary condition: ocean fields 
     
    230231      CHARACTER (len=40) ::   clhstnam, clop, clmx           ! local names 
    231232      INTEGER  ::   inum = 11                                ! temporary logical unit 
     233      INTEGER  ::   ji, jj, jk                               ! dummy loop indices 
     234      INTEGER  ::   ierr                                     ! error code return from allocation 
    232235      INTEGER  ::   iimi, iima, ipk, it, itmod, ijmi, ijma   ! local integers 
    233236      REAL(wp) ::   zsto, zout, zmax, zjulian, zdt           ! local scalars 
    234237      !! 
    235238      REAL(wp), POINTER, DIMENSION(:,:)   :: zw2d       ! 2D workspace 
     239      REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d       ! 3D workspace 
    236240      !!---------------------------------------------------------------------- 
    237241      !  
     
    239243      ! 
    240244      CALL wrk_alloc( jpi , jpj      , zw2d ) 
     245      IF ( ln_traldf_gdia )  call wrk_alloc( jpi , jpj , jpk  , zw3d ) 
    241246      ! 
    242247      ! Output the initial state and forcings 
     
    445450         CALL histdef( nid_U, "vozocrtx", "Zonal Current"                      , "m/s"    ,   &  ! un 
    446451            &          jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout ) 
     452         IF( ln_traldf_gdia ) THEN 
     453            CALL histdef( nid_U, "vozoeivu", "Zonal EIV Current"                  , "m/s"    ,   &  ! u_eiv 
     454                 &          jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout ) 
     455         ELSE 
    447456#if defined key_diaeiv 
    448          CALL histdef( nid_U, "vozoeivu", "Zonal EIV Current"                  , "m/s"    ,   &  ! u_eiv 
     457            CALL histdef( nid_U, "vozoeivu", "Zonal EIV Current"                  , "m/s"    ,   &  ! u_eiv 
    449458            &          jpi, jpj, nh_U, ipk, 1, ipk, nz_U, 32, clop, zsto, zout ) 
    450459#endif 
     460         END IF 
    451461         !                                                                                      !!! nid_U : 2D 
    452462         CALL histdef( nid_U, "sozotaux", "Wind Stress along i-axis"           , "N/m2"   ,   &  ! utau 
     
    458468         CALL histdef( nid_V, "vomecrty", "Meridional Current"                 , "m/s"    ,   &  ! vn 
    459469            &          jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout ) 
     470         IF( ln_traldf_gdia ) THEN 
     471            CALL histdef( nid_V, "vomeeivv", "Meridional EIV Current"             , "m/s"    ,   &  ! v_eiv 
     472                 &          jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout ) 
     473         ELSE  
    460474#if defined key_diaeiv 
    461          CALL histdef( nid_V, "vomeeivv", "Meridional EIV Current"             , "m/s"    ,   &  ! v_eiv 
     475            CALL histdef( nid_V, "vomeeivv", "Meridional EIV Current"             , "m/s"    ,   &  ! v_eiv 
    462476            &          jpi, jpj, nh_V, ipk, 1, ipk, nz_V, 32, clop, zsto, zout ) 
    463477#endif 
     478         END IF 
    464479         !                                                                                      !!! nid_V : 2D 
    465480         CALL histdef( nid_V, "sometauy", "Wind Stress along j-axis"           , "N/m2"   ,   &  ! vtau 
     
    471486         CALL histdef( nid_W, "vovecrtz", "Vertical Velocity"                  , "m/s"    ,   &  ! wn 
    472487            &          jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 
     488         IF( ln_traldf_gdia ) THEN 
     489            CALL histdef( nid_W, "voveeivw", "Vertical EIV Velocity"              , "m/s"    ,   &  ! w_eiv 
     490                 &          jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 
     491         ELSE 
    473492#if defined key_diaeiv 
    474          CALL histdef( nid_W, "voveeivw", "Vertical EIV Velocity"              , "m/s"    ,   &  ! w_eiv 
    475             &          jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 
    476 #endif 
     493            CALL histdef( nid_W, "voveeivw", "Vertical EIV Velocity"              , "m/s"    ,   &  ! w_eiv 
     494                 &          jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 
     495#endif 
     496         END IF 
    477497         CALL histdef( nid_W, "votkeavt", "Vertical Eddy Diffusivity"          , "m2/s"   ,   &  ! avt 
    478498            &          jpi, jpj, nh_W, ipk, 1, ipk, nz_W, 32, clop, zsto, zout ) 
     
    569589         ! Write fields on U grid 
    570590      CALL histwrite( nid_U, "vozocrtx", it, un            , ndim_U , ndex_U )    ! i-current 
     591      IF( ln_traldf_gdia ) THEN 
     592         IF (.not. ALLOCATED(psix_eiv))THEN 
     593            ALLOCATE( psix_eiv(jpi,jpj,jpk) , psiy_eiv(jpi,jpj,jpk) , STAT=ierr ) 
     594            IF( lk_mpp   )   CALL mpp_sum ( ierr ) 
     595            IF( ierr > 0 )   CALL ctl_stop('STOP', 'diawri: unable to allocate psi{x,y}_eiv') 
     596            psix_eiv(:,:,:) = 0.0_wp 
     597            psiy_eiv(:,:,:) = 0.0_wp 
     598         ENDIF 
     599         DO jk=1,jpkm1 
     600            zw3d(:,:,jk) = (psix_eiv(:,:,jk+1) - psix_eiv(:,:,jk))/fse3u(:,:,jk)  ! u_eiv = -dpsix/dz 
     601         END DO 
     602         zw3d(:,:,jpk) = 0._wp 
     603         CALL histwrite( nid_U, "vozoeivu", it, zw3d, ndim_U , ndex_U )           ! i-eiv current 
     604      ELSE 
    571605#if defined key_diaeiv 
    572       CALL histwrite( nid_U, "vozoeivu", it, u_eiv         , ndim_U , ndex_U )    ! i-eiv current 
    573 #endif 
     606         CALL histwrite( nid_U, "vozoeivu", it, u_eiv, ndim_U , ndex_U )          ! i-eiv current 
     607#endif 
     608      ENDIF 
    574609      CALL histwrite( nid_U, "sozotaux", it, utau          , ndim_hU, ndex_hU )   ! i-wind stress 
    575610 
    576611         ! Write fields on V grid 
    577612      CALL histwrite( nid_V, "vomecrty", it, vn            , ndim_V , ndex_V  )   ! j-current 
     613      IF( ln_traldf_gdia ) THEN 
     614         DO jk=1,jpk-1 
     615            zw3d(:,:,jk) = (psiy_eiv(:,:,jk+1) - psiy_eiv(:,:,jk))/fse3v(:,:,jk)  ! v_eiv = -dpsiy/dz 
     616         END DO 
     617         zw3d(:,:,jpk) = 0._wp 
     618         CALL histwrite( nid_V, "vomeeivv", it, zw3d, ndim_V , ndex_V )           ! j-eiv current 
     619      ELSE 
    578620#if defined key_diaeiv 
    579       CALL histwrite( nid_V, "vomeeivv", it, v_eiv         , ndim_V , ndex_V  )   ! j-eiv current 
    580 #endif 
     621         CALL histwrite( nid_V, "vomeeivv", it, v_eiv, ndim_V , ndex_V )          ! j-eiv current 
     622#endif 
     623      ENDIF 
    581624      CALL histwrite( nid_V, "sometauy", it, vtau          , ndim_hV, ndex_hV )   ! j-wind stress 
    582625 
    583626         ! Write fields on W grid 
    584627      CALL histwrite( nid_W, "vovecrtz", it, wn             , ndim_T, ndex_T )    ! vert. current 
     628      IF( ln_traldf_gdia ) THEN 
     629         DO jk=1,jpk-1 
     630            DO jj = 2, jpjm1 
     631               DO ji = fs_2, fs_jpim1  ! vector opt. 
     632                  zw3d(ji,jj,jk) = (psiy_eiv(ji,jj,jk) - psiy_eiv(ji,jj-1,jk))/e2v(ji,jj) + & 
     633                       &    (psix_eiv(ji,jj,jk) - psix_eiv(ji-1,jj,jk))/e1u(ji,jj) ! w_eiv = dpsiy/dy + dpsiy/dx 
     634               END DO 
     635            END DO 
     636         END DO 
     637         zw3d(:,:,jpk) = 0._wp 
     638         CALL histwrite( nid_W, "voveeivw", it, zw3d          , ndim_T, ndex_T )    ! vert. eiv current 
     639      ELSE 
    585640#   if defined key_diaeiv 
    586       CALL histwrite( nid_W, "voveeivw", it, w_eiv          , ndim_T, ndex_T )    ! vert. eiv current 
     641         CALL histwrite( nid_W, "voveeivw", it, w_eiv          , ndim_T, ndex_T )    ! vert. eiv current 
    587642#   endif 
     643      ENDIF 
    588644      CALL histwrite( nid_W, "votkeavt", it, avt            , ndim_T, ndex_T )    ! T vert. eddy diff. coef. 
    589645      CALL histwrite( nid_W, "votkeavm", it, avmu           , ndim_T, ndex_T )    ! T vert. eddy visc. coef. 
     
    608664      ! 
    609665      CALL wrk_dealloc( jpi , jpj      , zw2d ) 
     666      IF ( ln_traldf_gdia )  call wrk_dealloc( jpi , jpj , jpk  , zw3d ) 
    610667      ! 
    611668      IF( nn_timing == 1 )   CALL timing_stop('dia_wri') 
  • branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90

    r3215 r3253  
    118118      REAL(wp), POINTER, DIMENSION(:,:  ) :: z2d 
    119119      REAL(wp), POINTER, DIMENSION(:,:,:) :: zdit, zdjt, ztfw  
     120      REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d       ! 3D workspace 
    120121      !!---------------------------------------------------------------------- 
    121122      ! 
     
    134135         IF( ierr > 0 )   CALL ctl_stop('STOP', 'tra_ldf_iso_grif: unable to allocate arrays') 
    135136         IF( ln_traldf_gdia ) THEN 
    136             IF (.not. ALLOCATED(psix_eiv))THEN 
     137            IF (.NOT. ALLOCATED(psix_eiv))THEN 
    137138                ALLOCATE( psix_eiv(jpi,jpj,jpk) , psiy_eiv(jpi,jpj,jpk) , STAT=ierr ) 
    138139                IF( lk_mpp   )   CALL mpp_sum ( ierr ) 
     
    206207      END DO 
    207208      ! 
     209#if defined key_iomput 
     210      IF( ln_traldf_gdia .AND. cdtype == 'TRA' ) THEN 
     211         CALL wrk_alloc( jpi , jpj , jpk  , zw3d ) 
     212         DO jk=1,jpkm1 
     213            zw3d(:,:,jk) = (psix_eiv(:,:,jk+1) - psix_eiv(:,:,jk))/fse3u(:,:,jk)  ! u_eiv = -dpsix/dz 
     214         END DO 
     215         zw3d(:,:,jpk) = 0._wp 
     216         CALL iom_put( "uoce_eiv", zw3d )    ! i-eiv current 
     217 
     218         DO jk=1,jpk-1 
     219            zw3d(:,:,jk) = (psiy_eiv(:,:,jk+1) - psiy_eiv(:,:,jk))/fse3v(:,:,jk)  ! v_eiv = -dpsiy/dz 
     220         END DO 
     221         zw3d(:,:,jpk) = 0._wp 
     222         CALL iom_put( "voce_eiv", zw3d )    ! j-eiv current 
     223 
     224         DO jk=1,jpk-1 
     225            DO jj = 2, jpjm1 
     226               DO ji = fs_2, fs_jpim1  ! vector opt. 
     227                  zw3d(ji,jj,jk) = (psiy_eiv(ji,jj,jk) - psiy_eiv(ji,jj-1,jk))/e2v(ji,jj) + & 
     228                       &    (psix_eiv(ji,jj,jk) - psix_eiv(ji-1,jj,jk))/e1u(ji,jj) ! w_eiv = dpsiy/dy + dpsiy/dx 
     229               END DO 
     230            END DO 
     231         END DO 
     232         zw3d(:,:,jpk) = 0._wp 
     233         CALL iom_put( "woce_eiv", zw3d )    ! vert. eiv current 
     234         CALL wrk_dealloc( jpi , jpj , jpk  , zw3d ) 
     235      ENDIF 
     236#endif 
    208237      !                                                          ! =========== 
    209238      DO jn = 1, kjpt                                            ! tracer loop 
Note: See TracChangeset for help on using the changeset viewer.