Changeset 3556


Ignore:
Timestamp:
2012-11-14T18:03:01+01:00 (8 years ago)
Author:
cetlod
Message:

branch:2012/dev_r3438_LOCEAN15_PISLOB add the Tropical Cyclones module

Location:
branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/OPA_SRC/SBC
Files:
1 added
2 edited

Legend:

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

    r3294 r3556  
    627627      INTEGER  , INTENT(in), OPTIONAL, DIMENSION(:) :: map ! global-to-local mapping indices 
    628628      !! 
     629      INTEGER                  ::   ipi    ! number of i-point sdjf%fdta 
    629630      INTEGER                  ::   ipk    ! number of vertical levels of sdjf%fdta ( 2D: ipk=1 ; 3D: ipk=jpk ) 
    630631      INTEGER                  ::   iw     ! index into wgts array 
    631632      !!--------------------------------------------------------------------- 
    632633             
     634      ipi = SIZE( sdjf%fnow, 1 ) 
    633635      ipk = SIZE( sdjf%fnow, 3 ) 
    634636 
     
    645647         SELECT CASE( ipk ) 
    646648         CASE(1)    
    647             IF( sdjf%ln_tint ) THEN   ;   CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_a(1) ) 
    648             ELSE                      ;   CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fnow(:,:,1  ), sdjf%nrec_a(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 
    649657            ENDIF 
    650658         CASE DEFAULT 
  • branches/2012/dev_r3438_LOCEAN15_PISLOB/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90

    r3294 r3556  
    2929   USE fldread         ! read input fields 
    3030   USE sbc_oce         ! Surface boundary condition: ocean fields 
     31   USE cyclone         ! Cyclone 10m wind form trac of cyclone centres 
    3132   USE sbcdcy          ! surface boundary condition: diurnal cycle 
    3233   USE iom             ! I/O manager library 
     
    186187 
    187188      !                                                        ! surface ocean fluxes computed with CLIO bulk formulea 
    188       IF( MOD( kt - 1, nn_fsbc ) == 0 )   CALL blk_oce_core( sf, sst_m, ssu_m, ssv_m ) 
     189      IF( MOD( kt - 1, nn_fsbc ) == 0 )   CALL blk_oce_core( kt, sf, sst_m, ssu_m, ssv_m ) 
    189190 
    190191#if defined key_cice 
     
    204205    
    205206    
    206    SUBROUTINE blk_oce_core( sf, pst, pu, pv ) 
     207   SUBROUTINE blk_oce_core( kt, sf, pst, pu, pv ) 
    207208      !!--------------------------------------------------------------------- 
    208209      !!                     ***  ROUTINE blk_core  *** 
     
    225226      !!  ** Nota  :   sf has to be a dummy argument for AGRIF on NEC 
    226227      !!--------------------------------------------------------------------- 
    227       TYPE(fld), INTENT(in), DIMENSION(:)   ::   sf    ! input data 
    228       REAL(wp) , INTENT(in), DIMENSION(:,:) ::   pst   ! surface temperature                      [Celcius] 
    229       REAL(wp) , INTENT(in), DIMENSION(:,:) ::   pu    ! surface current at U-point (i-component) [m/s] 
    230       REAL(wp) , INTENT(in), DIMENSION(:,:) ::   pv    ! surface current at V-point (j-component) [m/s] 
     228      INTEGER  , INTENT(in   )                 ::   kt    ! time step index 
     229      TYPE(fld), INTENT(inout), DIMENSION(:)   ::   sf    ! input data 
     230      REAL(wp) , INTENT(in)   , DIMENSION(:,:) ::   pst   ! surface temperature                      [Celcius] 
     231      REAL(wp) , INTENT(in)   , DIMENSION(:,:) ::   pu    ! surface current at U-point (i-component) [m/s] 
     232      REAL(wp) , INTENT(in)   , DIMENSION(:,:) ::   pv    ! surface current at V-point (j-component) [m/s] 
    231233      ! 
    232234      INTEGER  ::   ji, jj               ! dummy loop indices 
    233235      REAL(wp) ::   zcoef_qsatw, zztmp   ! local variable 
    234236      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 
    235242      REAL(wp), DIMENSION(:,:), POINTER ::   zqsatw            ! specific humidity at pst 
    236243      REAL(wp), DIMENSION(:,:), POINTER ::   zqlw, zqsb        ! long wave and sensible heat fluxes 
     
    261268      zwnd_i(:,:) = 0.e0   
    262269      zwnd_j(:,:) = 0.e0 
     270 
     271#if defined key_cyclone 
     272     CALL wrk_alloc( jpi, jpj, ztmask_tc, ztcmask_qns, ztcmask_qnsneg ) 
     273# if defined key_vectopt_loop 
     274!CDIR COLLAPSE 
     275# endif 
     276      CALL wnd_cyc( kt, zwnd_i, zwnd_j, ztmask_tc )    ! add Manu ! 
     277      DO jj = 2, jpjm1 
     278         DO ji = fs_2, fs_jpim1   ! vect. opt. 
     279            sf(jp_wndi)%fnow(ji,jj,1) = sf(jp_wndi)%fnow(ji,jj,1) + zwnd_i(ji,jj) 
     280            sf(jp_wndj)%fnow(ji,jj,1) = sf(jp_wndj)%fnow(ji,jj,1) + zwnd_j(ji,jj) 
     281         END DO 
     282      END DO 
     283#endif 
     284 
    263285#if defined key_vectopt_loop 
    264286!CDIR COLLAPSE 
     
    389411      CALL iom_put( "qns_oce",   qns  )                 ! output downward non solar heat over the ocean 
    390412      ! 
     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 
    391420      IF(ln_ctl) THEN 
    392421         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.