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 3559 for branches/2012/dev_r3438_LOCEAN15_PISLOB – NEMO

Ignore:
Timestamp:
2012-11-15T11:18:04+01:00 (11 years ago)
Author:
cetlod
Message:

branch:2012/dev_r3438_LOCEAN15_PISLOB minor changes for Tropical Cyclones module

Location:
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/OPA_SRC/SBC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/OPA_SRC/SBC/cyclone.F90

    r3556 r3559  
    2121   USE in_out_manager  ! I/O manager 
    2222   USE geo2ocean       ! tools for projection on ORCA grid 
     23   USE wrk_nemo        ! work arrays 
    2324   USE lib_mpp        
    2425 
     
    4647CONTAINS 
    4748 
    48    SUBROUTINE wnd_cyc( kt, pwnd_i, pwnd_j, ptmask_tc ) 
     49   SUBROUTINE wnd_cyc( kt, pwnd_i, pwnd_j ) 
    4950      !!---------------------------------------------------------------------- 
    5051      !!                    ***  ROUTINE wnd_cyc  *** 
     
    5859      REAL(wp), INTENT(out), DIMENSION(jpi,jpj) ::   pwnd_i   ! wind speed i-components at T-point ORCA direction 
    5960      REAL(wp), INTENT(out), DIMENSION(jpi,jpj) ::   pwnd_j   ! wind speed j-components at T-point ORCA direction 
    60       REAL(wp), INTENT(out), DIMENSION(jpi,jpj) ::   ptmask_tc ! mask = 1 where TC are added 
    61       ! add Manu ! 
    62        
     61      !  
    6362      !! 
    6463      INTEGER  ::   ji, jj , jtc        ! loop arguments 
     
    8079      REAL(wp) ::   zrmw                ! mean radius of Max wind of a tropical cyclone (Willoughby 2004) [m] 
    8180      REAL(wp) ::   zwnd_r, zwnd_t      ! radial and tangential components of the wind 
    82       REAL(wp), DIMENSION(jpi,jpj) ::   zwnd_x, zwnd_y   ! zonal and meridional components of the wind 
    83  
     81      REAL(wp) ::   zvmax               ! timestep interpolated vmax 
     82      REAL(wp) ::   zrlon, zrlat        ! temporary  
     83      REAL(wp), DIMENSION(:,:), POINTER ::   zwnd_x, zwnd_y   ! zonal and meridional components of the wind 
    8484      REAL(wp), DIMENSION(14,5)    ::   ztct                ! tropical cyclone track data at kt 
    85       REAL(wp)                     ::   zvmax               ! timestep interpolated vmax 
    86       REAL(wp)                     ::   zrlon, zrlat        ! temporary  
    87       !! 
     85      ! 
    8886      CHARACTER(len=100) ::  cn_dir            ! Root directory for location of files 
    8987      TYPE(FLD_N), DIMENSION(1) ::   slf_i     ! array of namelist informations on the TC position 
     
    9290      !!-------------------------------------------------------------------- 
    9391 
     92      CALL wrk_alloc( jpi,jpj, zwnd_x, zwnd_y ) 
    9493 
    9594      !                                         ! ====================== ! 
     
    113112         ENDIF 
    114113         ALLOCATE( sf(1)%fnow(14,5,1) ) 
    115          ALLOCATE( sf(1)%fdta(14,5,2,1) ) 
     114         ALLOCATE( sf(1)%fdta(14,5,1,2) ) 
    116115         slf_i(1) = sn_tc 
    117116         ! 
     
    135134      zwnd_y(:,:) = 0.e0  
    136135       
    137       ptmask_tc(:,:) = 0.e0   
    138       ! add Manu ! 
    139    
    140136      DO jtc = 1, 14 
    141137         ! 
     
    202198                  zwnd_x(ji,jj) = zwnd_x(ji,jj) - zhemi * COS(ztheta)*zwnd_t + SIN(ztheta)*zwnd_r 
    203199                  zwnd_y(ji,jj) = zwnd_y(ji,jj) + zhemi * SIN(ztheta)*zwnd_t + COS(ztheta)*zwnd_r 
    204  
    205                   ptmask_tc(ji,jj) = 1. !MAX( 1., ptmask_tc(ji,jj) )  
    206                   ! add Manu ! 
    207    
    208  
    209200                 ENDIF 
    210201               END DO 
     
    273264                  zwnd_y(ji,jj) = zwnd_y(ji,jj) + zhemi * SIN(ztheta)*zwnd_t + COS(ztheta)*zwnd_r 
    274265                   
    275                   ptmask_tc(ji,jj) = 1. !MAX( 1., ptmask_tc(ji,jj) )  
    276                   ! add Manu ! 
    277    
    278266                 ENDIF 
    279267               END DO 
     
    286274      CALL rot_rep ( zwnd_x, zwnd_y, 'T', 'en->j', pwnd_j ) !rotation of components on ORCA grid 
    287275 
     276      CALL wrk_dealloc( jpi,jpj, zwnd_x, zwnd_y ) 
    288277 
    289278   END SUBROUTINE wnd_cyc 
  • branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90

    r3556 r3559  
    627627      INTEGER  , INTENT(in), OPTIONAL, DIMENSION(:) :: map ! global-to-local mapping indices 
    628628      !! 
    629       INTEGER                  ::   ipi    ! number of i-point sdjf%fdta 
    630629      INTEGER                  ::   ipk    ! number of vertical levels of sdjf%fdta ( 2D: ipk=1 ; 3D: ipk=jpk ) 
    631630      INTEGER                  ::   iw     ! index into wgts array 
    632       !!--------------------------------------------------------------------- 
    633              
    634       ipi = SIZE( sdjf%fnow, 1 ) 
     631      INTEGER                  ::   ipdom  ! index of the domain 
     632      !!--------------------------------------------------------------------- 
     633      !       
    635634      ipk = SIZE( sdjf%fnow, 3 ) 
    636  
     635      ! 
    637636      IF( PRESENT(map) ) THEN 
    638637         IF( sdjf%ln_tint ) THEN   ;   CALL fld_map( sdjf%num, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1), map ) 
     
    645644         ENDIF 
    646645      ELSE 
     646         IF( SIZE(sdjf%fdta, 1) == jpi ) THEN  ;  ipdom = jpdom_data 
     647         ELSE                                  ;  ipdom = jpdom_unknown 
     648         ENDIF 
    647649         SELECT CASE( ipk ) 
    648          CASE(1)    
    649             IF( ipi == jpi ) THEN 
    650                IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_a(1) ) 
    651                ELSE                      ;   CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fnow(:,:,1  ), sdjf%nrec_a(1) ) 
    652                ENDIF 
    653             ELSE 
    654                IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_a(1) ) 
    655                ELSE                      ;   CALL iom_get( sdjf%num, jpdom_unknown, sdjf%clvar, sdjf%fnow(:,:,1  ), sdjf%nrec_a(1) ) 
    656                ENDIF 
     650         CASE(1) 
     651            IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_a(1) ) 
     652            ELSE                      ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,1  ), sdjf%nrec_a(1) ) 
    657653            ENDIF 
    658654         CASE DEFAULT 
    659             IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1) ) 
    660             ELSE                      ;   CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fnow(:,:,:  ), sdjf%nrec_a(1) ) 
     655            IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1) ) 
     656            ELSE                      ;   CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,:  ), sdjf%nrec_a(1) ) 
    661657            ENDIF 
    662658         END SELECT 
  • branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90

    r3556 r3559  
    235235      REAL(wp) ::   zcoef_qsatw, zztmp   ! local variable 
    236236      REAL(wp), DIMENSION(:,:), POINTER ::   zwnd_i, zwnd_j    ! wind speed components at T-point 
    237 #if defined key_cyclone 
    238       REAL(wp), DIMENSION(:,:), POINTER ::   ztmask_tc          ! mask = 1 where TC are added 
    239       REAL(wp), DIMENSION(:,:), POINTER ::   ztcmask_qns        ! total            non-solar heat flux within TC footprints 
    240       REAL(wp), DIMENSION(:,:), POINTER ::   ztcmask_qnsneg     ! negative part of non-solar heat flux within TC footprints 
    241 #endif 
    242237      REAL(wp), DIMENSION(:,:), POINTER ::   zqsatw            ! specific humidity at pst 
    243238      REAL(wp), DIMENSION(:,:), POINTER ::   zqlw, zqsb        ! long wave and sensible heat fluxes 
     
    268263      zwnd_i(:,:) = 0.e0   
    269264      zwnd_j(:,:) = 0.e0 
    270  
    271265#if defined key_cyclone 
    272      CALL wrk_alloc( jpi, jpj, ztmask_tc, ztcmask_qns, ztcmask_qnsneg ) 
    273266# if defined key_vectopt_loop 
    274267!CDIR COLLAPSE 
    275268# endif 
    276       CALL wnd_cyc( kt, zwnd_i, zwnd_j, ztmask_tc )    ! add Manu ! 
     269      CALL wnd_cyc( kt, zwnd_i, zwnd_j )    ! add Manu ! 
    277270      DO jj = 2, jpjm1 
    278271         DO ji = fs_2, fs_jpim1   ! vect. opt. 
     
    282275      END DO 
    283276#endif 
    284  
    285277#if defined key_vectopt_loop 
    286278!CDIR COLLAPSE 
     
    411403      CALL iom_put( "qns_oce",   qns  )                 ! output downward non solar heat over the ocean 
    412404      ! 
    413 #if defined key_cyclone 
    414       ztcmask_qns(:,:) = qns(:,:) *  ztmask_tc(:,:) 
    415       ztcmask_qnsneg(:,:) = MIN( qns(:,:) ,  0.e0 ) *  ztmask_tc(:,:) ! MAX/MIN sur tableau 2D ?? 
    416       CALL iom_put( "qns_tcmask",   ztcmask_qns  )       ! output downward non solar heat over the ocean within TC footprints 
    417       CALL iom_put( "qns_tcneg",   ztcmask_qnsneg  )     ! output downward non solar heat over the ocean negative part only 
    418       CALL wrk_dealloc( jpi, jpj, ztmask_tc, ztcmask_qns, ztcmask_qnsneg ) 
    419 #endif 
    420405      IF(ln_ctl) THEN 
    421406         CALL prt_ctl(tab2d_1=zqsb , clinfo1=' blk_oce_core: zqsb   : ', tab2d_2=zqlw , clinfo2=' zqlw  : ') 
Note: See TracChangeset for help on using the changeset viewer.