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 3938 for branches/2013/dev_r3406_CNRS_LIM3/NEMOGCM/NEMO/OPA_SRC/BDY – NEMO

Ignore:
Timestamp:
2013-06-26T09:54:16+02:00 (11 years ago)
Author:
flavoni
Message:

dev_r3406_CNRS_LIM3: update LIM3, see ticket #1116

Location:
branches/2013/dev_r3406_CNRS_LIM3/NEMOGCM/NEMO/OPA_SRC/BDY
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3406_CNRS_LIM3/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90

    r3294 r3938  
    88   !!            3.3  !  2010-09  (D. Storkey) add ice boundary conditions 
    99   !!            3.4  !  2011     (D. Storkey) rewrite in preparation for OBC-BDY merge 
     10   !!             -   !  2012-01  (C. Rousset) add ice boundary conditions for lim3 
    1011   !!---------------------------------------------------------------------- 
    1112#if defined key_bdy  
     
    4445      REAL, POINTER, DIMENSION(:)     ::  hicif 
    4546      REAL, POINTER, DIMENSION(:)     ::  hsnif 
     47#elif defined key_lim3 
     48      REAL, POINTER, DIMENSION(:,:)   ::  a_i   !: now ice leads fraction climatology 
     49      REAL, POINTER, DIMENSION(:,:)   ::  ht_i  !: Now ice  thickness climatology 
     50      REAL, POINTER, DIMENSION(:,:)   ::  ht_s  !: now snow thickness 
    4651#endif 
    4752   END TYPE OBC_DATA 
     
    7378   INTEGER, DIMENSION(jp_bdy) ::   nn_tra_dta             !: = 0 use the initial state as bdy dta ;  
    7479                                                            !: = 1 read it in a NetCDF file 
    75 #if defined key_lim2 
    76    INTEGER, DIMENSION(jp_bdy) ::   nn_ice_lim2              ! Choice of boundary condition for sea ice variables  
    77    INTEGER, DIMENSION(jp_bdy) ::   nn_ice_lim2_dta          !: = 0 use the initial state as bdy dta ;  
     80#if ( defined key_lim2 || defined key_lim3 ) 
     81   INTEGER, DIMENSION(jp_bdy) ::   nn_ice_lim               ! Choice of boundary condition for sea ice variables  
     82   INTEGER, DIMENSION(jp_bdy) ::   nn_ice_lim_dta           !: = 0 use the initial state as bdy dta ;  
    7883                                                            !: = 1 read it in a NetCDF file 
    7984#endif 
  • branches/2013/dev_r3406_CNRS_LIM3/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90

    r3294 r3938  
    1111   !!            3.3  !  2010-09  (D.Storkey) add ice boundary conditions 
    1212   !!            3.4  !  2011     (D. Storkey) rewrite in preparation for OBC-BDY merge 
     13   !!             -   !  2012-01  (C. Rousset) add ice boundary conditions for lim3 
    1314   !!---------------------------------------------------------------------- 
    1415#if defined key_bdy 
     
    3132#if defined key_lim2 
    3233   USE ice_2 
     34#elif defined key_lim3 
     35   USE par_ice 
     36   USE ice 
     37   USE limcat_1D          ! redistribute ice input into categories 
    3338#endif 
    3439 
     
    4853 
    4954   TYPE(MAP_POINTER), ALLOCATABLE, DIMENSION(:) :: nbmap_ptr   ! array of pointers to nbmap 
     55 
     56#if defined key_lim3 
     57   LOGICAL :: ll_bdylim3                  ! determine whether ice input is lim2 (F) or lim3 (T) type 
     58   INTEGER :: jfld_hti, jfld_hts, jfld_ai ! indices of ice thickness, snow thickness and concentration in bf structure 
     59#endif 
    5060 
    5161#  include "domzgr_substitute.h90" 
     
    7686                                                        ! etc. 
    7787      !! 
    78       INTEGER     ::  ib_bdy, jfld, jstart, jend, ib, ii, ij, ik, igrd  ! local indices 
     88      INTEGER     ::  ib_bdy, jfld, jstart, jend, ib, ii, ij, ik, igrd, jl  ! local indices 
    7989      INTEGER,          DIMENSION(jpbgrd) ::   ilen1  
    8090      INTEGER, POINTER, DIMENSION(:)      ::   nblen, nblenrim  ! short cuts 
     
    175185 
    176186#if defined key_lim2 
    177             IF( nn_ice_lim2(ib_bdy) .gt. 0 .and. nn_ice_lim2_dta(ib_bdy) .eq. 0 ) THEN  
    178                IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 
     187            IF( nn_ice_lim(ib_bdy) .gt. 0 .and. nn_ice_lim_dta(ib_bdy) .eq. 0 ) THEN  
     188               IF( nn_ice_lim(ib_bdy) .eq. jp_frs ) THEN 
    179189                  ilen1(:) = nblen(:) 
    180190               ELSE 
     
    185195                  ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    186196                  ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    187                   dta_bdy(ib_bdy)%frld(ib) = frld(ii,ij) * tmask(ii,ij,1)          
     197                  dta_bdy(ib_bdy)%frld (ib) = frld(ii,ij) * tmask(ii,ij,1)          
    188198                  dta_bdy(ib_bdy)%hicif(ib) = hicif(ii,ij) * tmask(ii,ij,1)          
    189199                  dta_bdy(ib_bdy)%hsnif(ib) = hsnif(ii,ij) * tmask(ii,ij,1)          
    190200               END DO  
     201            ENDIF 
     202#elif defined key_lim3 
     203            IF( nn_ice_lim(ib_bdy) .gt. 0 .and. nn_ice_lim_dta(ib_bdy) .eq. 0 ) THEN  
     204               IF( nn_ice_lim(ib_bdy) .eq. jp_frs ) THEN 
     205                  ilen1(:) = nblen(:) 
     206               ELSE 
     207                  ilen1(:) = nblenrim(:) 
     208               ENDIF 
     209               igrd = 1                       ! Everything is at T-points here 
     210               DO jl = 1, jpl 
     211                  DO ib = 1, ilen1(igrd) 
     212                     ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
     213                     ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
     214                     dta_bdy(ib_bdy)%a_i (ib,jl) =  a_i(ii,ij,jl) * tmask(ii,ij,1)  
     215                     dta_bdy(ib_bdy)%ht_i(ib,jl) = ht_i(ii,ij,jl) * tmask(ii,ij,1)  
     216                     dta_bdy(ib_bdy)%ht_s(ib,jl) = ht_s(ii,ij,jl) * tmask(ii,ij,1)  
     217                  END DO 
     218               END DO 
    191219            ENDIF 
    192220#endif 
     
    237265                  CALL tide_update( kt=kt, idx=idx_bdy(ib_bdy), dta=dta_bdy(ib_bdy), td=tides(ib_bdy), time_offset=time_offset ) 
    238266               ENDIF 
     267 
     268#if defined key_lim3 
     269               IF( nn_ice_lim(ib_bdy) .gt. 0 .and. nn_ice_lim_dta(ib_bdy) .eq. 1 ) THEN ! bdy ice input 
     270                IF ( .NOT. ll_bdylim3 ) THEN ! case input is lim2 type 
     271                   CALL lim_cat_1D ( bf(jfld_hti)%fnow(:,1,1), bf(jfld_hts)%fnow(:,1,1), bf(jfld_ai)%fnow(:,1,1), & 
     272                                     & dta_bdy(ib_bdy)%ht_i,     dta_bdy(ib_bdy)%ht_s,     dta_bdy(ib_bdy)%a_i     ) 
     273                ENDIF 
     274               ENDIF 
     275#endif 
     276 
    239277            ENDIF 
    240278            jstart = jend+1 
     
    311349      INTEGER, ALLOCATABLE, DIMENSION(:)     ::   igrid         ! index for grid type (1,2,3 = T,U,V) 
    312350      INTEGER, POINTER, DIMENSION(:)         ::   nblen, nblenrim  ! short cuts 
     351#if defined key_lim3 
     352      INTEGER, DIMENSION(3) ::   zdimsz   ! number of elements in each of the 4 dimensions (i.e. i,j,t,ice-cat) for an array 
     353      INTEGER               ::   zndims   ! number of dimensions in an array (i.e. 3 = wo ice cat; 4 = w ice cat) 
     354      INTEGER               ::   inum,id1 ! local integer 
     355#endif 
    313356      TYPE(FLD_N), ALLOCATABLE, DIMENSION(:) ::   blf_i         !  array of namelist information structures 
    314357      TYPE(FLD_N) ::   bn_tem, bn_sal, bn_u3d, bn_v3d   !  
    315358      TYPE(FLD_N) ::   bn_ssh, bn_u2d, bn_v2d           ! informations about the fields to be read 
    316359#if defined key_lim2 
    317       TYPE(FLD_N) ::   bn_frld, bn_hicif, bn_hsnif      ! 
     360      TYPE(FLD_N) ::   bn_frld, bn_hicif, bn_hsnif       
     361#elif defined key_lim3 
     362      TYPE(FLD_N) ::   bn_a_i, bn_ht_i, bn_ht_s       
    318363#endif 
    319364      NAMELIST/nambdy_dta/ cn_dir, bn_tem, bn_sal, bn_u3d, bn_v3d, bn_ssh, bn_u2d, bn_v2d  
    320365#if defined key_lim2 
    321366      NAMELIST/nambdy_dta/ bn_frld, bn_hicif, bn_hsnif 
     367#elif defined key_lim3 
     368      NAMELIST/nambdy_dta/ bn_a_i, bn_ht_i, bn_ht_s 
    322369#endif 
    323370      NAMELIST/nambdy_dta/ ln_full_vel 
     
    326373      IF( nn_timing == 1 ) CALL timing_start('bdy_dta_init') 
    327374 
    328       ! Set nn_dta 
     375      ! Set nn_dta to 0 or 1 
    329376      DO ib_bdy = 1, nb_bdy 
    330          nn_dta(ib_bdy) = MAX(  nn_dyn2d_dta(ib_bdy)       & 
    331                                ,nn_dyn3d_dta(ib_bdy)       & 
    332                                ,nn_tra_dta(ib_bdy)         & 
    333 #if defined key_lim2 
    334                                ,nn_ice_lim2_dta(ib_bdy)    & 
     377         nn_dta(ib_bdy) = MAX( nn_dyn2d_dta(ib_bdy)       & 
     378                              ,nn_dyn3d_dta(ib_bdy)       & 
     379                              ,nn_tra_dta(ib_bdy)         & 
     380#if ( defined key_lim2 || defined key_lim3 ) 
     381                              ,nn_ice_lim_dta(ib_bdy)    & 
    335382#endif 
    336383                              ) 
     
    352399            nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 2 
    353400         ENDIF 
    354 #if defined key_lim2 
    355          IF( nn_ice_lim2(ib_bdy) .gt. 0 .and. nn_ice_lim2_dta(ib_bdy) .eq. 1  ) THEN 
     401#if ( defined key_lim2 || defined key_lim3 ) 
     402         IF( nn_ice_lim(ib_bdy) .gt. 0 .and. nn_ice_lim_dta(ib_bdy) .eq. 1  ) THEN 
    356403            nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 3 
    357404         ENDIF 
     
    377424      ALLOCATE( igrid(nb_bdy_fld_sum) )  
    378425 
    379       ! Read namelists 
     426     ! Read namelists 
    380427      ! -------------- 
    381428      REWIND(numnam) 
     
    387434            ln_full_vel = .false. 
    388435            ! ... default values (NB: frequency positive => hours, negative => months) 
    389             !                    !  file       ! frequency !  variable   ! time intep !  clim   ! 'yearly' or ! weights  ! rotation  ! 
    390             !                    !  name       ! hours !   name     !  (T/F)  !  (T/F)  !  'monthly'  ! filename ! pairs     ! 
    391             bn_ssh     = FLD_N(  'bdy_ssh'     ,  24   , 'sossheig' , .false. , .false. ,   'yearly'  , ''       , ''        ) 
    392             bn_u2d     = FLD_N(  'bdy_vel2d_u' ,  24   , 'vobtcrtx' , .false. , .false. ,   'yearly'  , ''       , ''        ) 
    393             bn_v2d     = FLD_N(  'bdy_vel2d_v' ,  24   , 'vobtcrty' , .false. , .false. ,   'yearly'  , ''       , ''        ) 
    394             bn_u3d     = FLD_N(  'bdy_vel3d_u' ,  24   , 'vozocrtx' , .false. , .false. ,   'yearly'  , ''       , ''        ) 
    395             bn_v3d     = FLD_N(  'bdy_vel3d_v' ,  24   , 'vomecrty' , .false. , .false. ,   'yearly'  , ''       , ''        ) 
    396             bn_tem     = FLD_N(  'bdy_tem'     ,  24   , 'votemper' , .false. , .false. ,   'yearly'  , ''       , ''        ) 
    397             bn_sal     = FLD_N(  'bdy_sal'     ,  24   , 'vosaline' , .false. , .false. ,   'yearly'  , ''       , ''        ) 
     436            !                 !  file       ! frequency !  variable  ! time intep !  clim   ! 'yearly' or ! weights  ! rotation  ! 
     437            !                 !  name       ! hours     !   name     !  (T/F)     !  (T/F)  !  'monthly'  ! filename ! pairs     ! 
     438            bn_ssh   = FLD_N(  'bdy_ssh'     ,  24      , 'sossheig' , .false.    , .false. ,   'yearly'  , ''       , ''        ) 
     439            bn_u2d   = FLD_N(  'bdy_vel2d_u' ,  24      , 'vobtcrtx' , .false.    , .false. ,   'yearly'  , ''       , ''        ) 
     440            bn_v2d   = FLD_N(  'bdy_vel2d_v' ,  24      , 'vobtcrty' , .false.    , .false. ,   'yearly'  , ''       , ''        ) 
     441            bn_u3d   = FLD_N(  'bdy_vel3d_u' ,  24      , 'vozocrtx' , .false.    , .false. ,   'yearly'  , ''       , ''        ) 
     442            bn_v3d   = FLD_N(  'bdy_vel3d_v' ,  24      , 'vomecrty' , .false.    , .false. ,   'yearly'  , ''       , ''        ) 
     443            bn_tem   = FLD_N(  'bdy_tem'     ,  24      , 'votemper' , .false.    , .false. ,   'yearly'  , ''       , ''        ) 
     444            bn_sal   = FLD_N(  'bdy_sal'     ,  24      , 'vosaline' , .false.    , .false. ,   'yearly'  , ''       , ''        ) 
    398445#if defined key_lim2 
    399             bn_frld    = FLD_N(  'bdy_frld'    ,  24   , 'ildsconc' , .false. , .false. ,   'yearly'  , ''       , ''        ) 
    400             bn_hicif   = FLD_N(  'bdy_hicif'   ,  24   , 'iicethic' , .false. , .false. ,   'yearly'  , ''       , ''        ) 
    401             bn_hsnif   = FLD_N(  'bdy_hsnif'   ,  24   , 'isnothic' , .false. , .false. ,   'yearly'  , ''       , ''        ) 
     446            bn_frld  = FLD_N(  'bdy_frld'    ,  24      , 'ildsconc' , .false.    , .false. ,   'yearly'  , ''       , ''        ) 
     447            bn_hicif = FLD_N(  'bdy_hicif'   ,  24      , 'iicethic' , .false.    , .false. ,   'yearly'  , ''       , ''        ) 
     448            bn_hsnif = FLD_N(  'bdy_hsnif'   ,  24      , 'isnothic' , .false.    , .false. ,   'yearly'  , ''       , ''        ) 
     449#elif defined key_lim3 
     450            bn_a_i  = FLD_N(  'bdy_a_i'     ,  24   , 'ileadfra' , .false. , .false. ,   'yearly'  , ''       , ''        ) 
     451            bn_ht_i = FLD_N(  'bdy_ht_i'    ,  24   , 'iicethic' , .false. , .false. ,   'yearly'  , ''       , ''        ) 
     452            bn_ht_s = FLD_N(  'bdy_ht_s'    ,  24   , 'isnowthi' , .false. , .false. ,   'yearly'  , ''       , ''        ) 
    402453#endif 
    403454 
     
    515566#if defined key_lim2 
    516567            ! sea ice 
    517             IF( nn_ice_lim2(ib_bdy) .gt. 0 .and. nn_ice_lim2_dta(ib_bdy) .eq. 1 ) THEN 
     568            IF( nn_ice_lim(ib_bdy) .gt. 0 .and. nn_ice_lim_dta(ib_bdy) .eq. 1 ) THEN 
    518569 
    519570               jfld = jfld + 1 
     
    521572               ibdy(jfld) = ib_bdy 
    522573               igrid(jfld) = 1 
    523                IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 
     574               IF( nn_ice_lim(ib_bdy) .eq. jp_frs ) THEN 
    524575                  ilen1(jfld) = nblen(igrid(jfld)) 
    525576               ELSE 
     
    532583               ibdy(jfld) = ib_bdy 
    533584               igrid(jfld) = 1 
    534                IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 
     585               IF( nn_ice_lim(ib_bdy) .eq. jp_frs ) THEN 
    535586                  ilen1(jfld) = nblen(igrid(jfld)) 
    536587               ELSE 
     
    543594               ibdy(jfld) = ib_bdy 
    544595               igrid(jfld) = 1 
    545                IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 
     596               IF( nn_ice_lim(ib_bdy) .eq. jp_frs ) THEN 
    546597                  ilen1(jfld) = nblen(igrid(jfld)) 
    547598               ELSE 
     
    549600               ENDIF 
    550601               ilen3(jfld) = 1 
     602 
     603            ENDIF 
     604#elif defined key_lim3 
     605            ! sea ice 
     606            IF( nn_ice_lim(ib_bdy) .gt. 0 .and. nn_ice_lim_dta(ib_bdy) .eq. 1 ) THEN 
     607 
     608               ! Test for types of ice input (lim2 or lim3)  
     609               CALL iom_open ( bn_a_i%clname, inum ) 
     610               id1 = iom_varid ( inum, bn_a_i%clvar, kdimsz=zdimsz, kndims=zndims, ldstop = .FALSE. ) 
     611               CALL iom_close ( inum ) 
     612               !CALL fld_clopn ( bn_a_i, nyear, nmonth, nday, ldstop=.TRUE. ) 
     613               !CALL iom_open ( bn_a_i%clname, inum ) 
     614               !id1 = iom_varid ( bn_a_i%num, bn_a_i%clvar, kdimsz=zdimsz, kndims=zndims, ldstop = .FALSE. ) 
     615                IF ( zndims == 4 ) THEN 
     616                 ll_bdylim3 = .TRUE. 
     617               ELSE 
     618                 ll_bdylim3 = .FALSE.         
     619               ENDIF 
     620               ! End test 
     621 
     622               jfld = jfld + 1 
     623               blf_i(jfld) = bn_a_i 
     624               ibdy(jfld) = ib_bdy 
     625               igrid(jfld) = 1 
     626               IF( nn_ice_lim(ib_bdy) .eq. jp_frs ) THEN 
     627                  ilen1(jfld) = nblen(igrid(jfld)) 
     628               ELSE 
     629                  ilen1(jfld) = nblenrim(igrid(jfld)) 
     630               ENDIF 
     631               IF ( ll_bdylim3 ) THEN ; ilen3(jfld)=jpl ; ELSE ; ilen3(jfld)=1 ; ENDIF 
     632 
     633               jfld = jfld + 1 
     634               blf_i(jfld) = bn_ht_i 
     635               ibdy(jfld) = ib_bdy 
     636               igrid(jfld) = 1 
     637               IF( nn_ice_lim(ib_bdy) .eq. jp_frs ) THEN 
     638                  ilen1(jfld) = nblen(igrid(jfld)) 
     639               ELSE 
     640                  ilen1(jfld) = nblenrim(igrid(jfld)) 
     641               ENDIF 
     642               IF ( ll_bdylim3 ) THEN ; ilen3(jfld)=jpl ; ELSE ; ilen3(jfld)=1 ; ENDIF 
     643 
     644               jfld = jfld + 1 
     645               blf_i(jfld) = bn_ht_s 
     646               ibdy(jfld) = ib_bdy 
     647               igrid(jfld) = 1 
     648               IF( nn_ice_lim(ib_bdy) .eq. jp_frs ) THEN 
     649                  ilen1(jfld) = nblen(igrid(jfld)) 
     650               ELSE 
     651                  ilen1(jfld) = nblenrim(igrid(jfld)) 
     652               ENDIF 
     653               IF ( ll_bdylim3 ) THEN ; ilen3(jfld)=jpl ; ELSE ; ilen3(jfld)=1 ; ENDIF 
    551654 
    552655            ENDIF 
     
    652755 
    653756#if defined key_lim2 
    654          IF (nn_ice_lim2(ib_bdy) .gt. 0) THEN 
    655             IF( nn_ice_lim2_dta(ib_bdy) .eq. 0 ) THEN 
    656                IF( nn_ice_lim2(ib_bdy) .eq. jp_frs ) THEN 
     757         IF (nn_ice_lim(ib_bdy) .gt. 0) THEN 
     758            IF( nn_ice_lim_dta(ib_bdy) .eq. 0 ) THEN 
     759               IF( nn_ice_lim(ib_bdy) .eq. jp_frs ) THEN 
    657760                  ilen0(1:3) = nblen(1:3) 
    658761               ELSE 
     
    669772               jfld = jfld + 1 
    670773               dta_bdy(ib_bdy)%hsnif => bf(jfld)%fnow(:,1,1) 
     774            ENDIF 
     775         ENDIF 
     776#elif defined key_lim3 
     777         IF (nn_ice_lim(ib_bdy) .gt. 0) THEN 
     778            IF( nn_ice_lim(ib_bdy) .eq. jp_frs ) THEN 
     779               ilen0(1:3) = nblen(1:3) 
     780            ELSE 
     781               ilen0(1:3) = nblenrim(1:3) 
     782            ENDIF 
     783            IF( nn_ice_lim_dta(ib_bdy) .eq. 0 ) THEN 
     784               ALLOCATE( dta_bdy(ib_bdy)%a_i (ilen0(1),jpl) ) 
     785               ALLOCATE( dta_bdy(ib_bdy)%ht_i(ilen0(1),jpl) ) 
     786               ALLOCATE( dta_bdy(ib_bdy)%ht_s(ilen0(1),jpl) ) 
     787            ELSE 
     788               IF ( ll_bdylim3 ) THEN 
     789                  jfld = jfld + 1 
     790                  dta_bdy(ib_bdy)%a_i  => bf(jfld)%fnow(:,1,:) 
     791                  jfld = jfld + 1 
     792                  dta_bdy(ib_bdy)%ht_i => bf(jfld)%fnow(:,1,:) 
     793                  jfld = jfld + 1 
     794                  dta_bdy(ib_bdy)%ht_s => bf(jfld)%fnow(:,1,:) 
     795               ELSE 
     796                  jfld    = jfld + 1                   
     797                  jfld_ai = jfld 
     798                  ALLOCATE( dta_bdy(ib_bdy)%a_i (ilen0(1),jpl) ) 
     799                  dta_bdy(ib_bdy)%a_i(:,:) = 0.0 
     800                  jfld     = jfld + 1                   
     801                  jfld_hti = jfld 
     802                  ALLOCATE( dta_bdy(ib_bdy)%ht_i(ilen0(1),jpl) ) 
     803                  dta_bdy(ib_bdy)%ht_i(:,:) = 0.0 
     804                  jfld     = jfld + 1                   
     805                  jfld_hts = jfld 
     806                  ALLOCATE( dta_bdy(ib_bdy)%ht_s(ilen0(1),jpl) ) 
     807                  dta_bdy(ib_bdy)%ht_s(:,:) = 0.0 
     808               ENDIF 
     809 
    671810            ENDIF 
    672811         ENDIF 
  • branches/2013/dev_r3406_CNRS_LIM3/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90

    r3298 r3938  
    6969      REAL   , POINTER  ::  flagu, flagv                   !    -   - 
    7070      REAL(wp) ::   zefl, zwfl, znfl, zsfl                 ! local scalars 
    71       INTEGER, DIMENSION (2)                ::   kdimsz 
     71      INTEGER, DIMENSION (1)                ::   kdimsz 
    7272      INTEGER, DIMENSION(jpbgrd,jp_bdy)       ::   nblendta         ! Length of index arrays  
    7373      INTEGER, ALLOCATABLE, DIMENSION(:,:,:)  ::   nbidta, nbjdta   ! Index arrays: i and j indices of bdy dta 
    7474      INTEGER, ALLOCATABLE, DIMENSION(:,:,:)  ::   nbrdta           ! Discrete distance from rim points 
     75      REAL, ALLOCATABLE, DIMENSION(:)         ::   znblendta            
    7576      REAL(wp), DIMENSION(jpidta,jpjdta)    ::   zmask            ! global domain mask 
    7677      CHARACTER(LEN=80),DIMENSION(jpbgrd)  ::   clfile 
     
    8081         &             ln_mask_file, cn_mask_file, nn_dyn2d, nn_dyn2d_dta, & 
    8182         &             nn_dyn3d, nn_dyn3d_dta, nn_tra, nn_tra_dta,         &   
    82 #if defined key_lim2 
    83          &             nn_ice_lim2, nn_ice_lim2_dta,                       & 
     83#if ( defined key_lim2 || defined key_lim3 ) 
     84         &             nn_ice_lim, nn_ice_lim_dta,                       & 
    8485#endif 
    8586         &             ln_vol, nn_volctl, nn_rimwidth 
     
    121122      nn_tra(:)         = 0 
    122123      nn_tra_dta(:)     = -1  ! uninitialised flag 
    123 #if defined key_lim2 
    124       nn_ice_lim2(:)    = 0 
    125       nn_ice_lim2_dta(:)= -1  ! uninitialised flag 
     124#if ( defined key_lim2 || defined key_lim3 ) 
     125      nn_ice_lim(:)    = 0 
     126      nn_ice_lim_dta(:)= -1  ! uninitialised flag 
    126127#endif 
    127128      ln_vol            = .false. 
     
    204205        IF(lwp) WRITE(numout,*) 
    205206 
    206 #if defined key_lim2 
     207#if ( defined key_lim2 || defined key_lim3 ) 
    207208        IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice:  ' 
    208         SELECT CASE( nn_ice_lim2(ib_bdy) )                   
     209        SELECT CASE( nn_ice_lim(ib_bdy) )                   
    209210          CASE( 0 )      ;   IF(lwp) WRITE(numout,*) '      no open boundary condition'         
    210211          CASE( 1 )      ;   IF(lwp) WRITE(numout,*) '      Flow Relaxation Scheme' 
    211212          CASE DEFAULT   ;   CALL ctl_stop( 'unrecognised value for nn_tra' ) 
    212213        END SELECT 
    213         IF( nn_ice_lim2(ib_bdy) .gt. 0 ) THEN  
    214            SELECT CASE( nn_ice_lim2_dta(ib_bdy) )                   !  
     214        IF( nn_ice_lim(ib_bdy) .gt. 0 ) THEN  
     215           SELECT CASE( nn_ice_lim_dta(ib_bdy) )                   !  
    215216              CASE( 0 )      ;   IF(lwp) WRITE(numout,*) '      initial state used for bdy data'         
    216217              CASE( 1 )      ;   IF(lwp) WRITE(numout,*) '      boundary data taken from file' 
    217               CASE DEFAULT   ;   CALL ctl_stop( 'nn_ice_lim2_dta must be 0 or 1' ) 
     218              CASE DEFAULT   ;   CALL ctl_stop( 'nn_ice_lim_dta must be 0 or 1' ) 
    218219           END SELECT 
    219220        ENDIF 
     
    327328            DO igrd = 1, jpbgrd 
    328329               id_dummy = iom_varid( inum, 'nbi'//cgrid(igrd), kdimsz=kdimsz )   
    329                nblendta(igrd,ib_bdy) = kdimsz(1) 
    330                jpbdta = MAX(jpbdta, kdimsz(1)) 
    331             ENDDO 
     330               !clem nblendta(igrd,ib_bdy) = kdimsz(1) 
     331               !clem jpbdta = MAX(jpbdta, kdimsz(1)) 
     332               nblendta(igrd,ib_bdy) = MAXVAL(kdimsz) 
     333               jpbdta = MAX(jpbdta, MAXVAL(kdimsz)) 
     334            ENDDO 
     335            CALL iom_close( inum ) 
    332336 
    333337         ENDIF  
     
    505509            ENDDO 
    506510 
    507          ELSE            ! Read global index arrays from boundary coordinates file. 
    508  
    509             DO igrd = 1, jpbgrd 
    510                CALL iom_get( inum, jpdom_unknown, 'nbi'//cgrid(igrd), dta_global(1:nblendta(igrd,ib_bdy),:,1) ) 
     511         ELSE            ! Read global index arrays from boundary coordinates file 
     512 
     513          CALL iom_open( cn_coords_file(ib_bdy), inum ) 
     514          DO igrd = 1, jpbgrd 
     515               ALLOCATE(znblendta(nblendta(igrd,ib_bdy))) 
     516 
     517               CALL iom_get( inum, jpdom_unknown, 'nbi'//cgrid(igrd), znblendta(1:nblendta(igrd,ib_bdy)) ) 
    511518               DO ii = 1,nblendta(igrd,ib_bdy) 
    512                   nbidta(ii,igrd,ib_bdy) = INT( dta_global(ii,1,1) ) 
     519                  nbidta(ii,igrd,ib_bdy) = INT( znblendta(ii) ) 
    513520               END DO 
    514                CALL iom_get( inum, jpdom_unknown, 'nbj'//cgrid(igrd), dta_global(1:nblendta(igrd,ib_bdy),:,1) ) 
     521               CALL iom_get( inum, jpdom_unknown, 'nbj'//cgrid(igrd), znblendta(1:nblendta(igrd,ib_bdy)) ) 
    515522               DO ii = 1,nblendta(igrd,ib_bdy) 
    516                   nbjdta(ii,igrd,ib_bdy) = INT( dta_global(ii,1,1) ) 
     523                  nbjdta(ii,igrd,ib_bdy) = INT( znblendta(ii) ) 
    517524               END DO 
    518                CALL iom_get( inum, jpdom_unknown, 'nbr'//cgrid(igrd), dta_global(1:nblendta(igrd,ib_bdy),:,1) ) 
     525               CALL iom_get( inum, jpdom_unknown, 'nbr'//cgrid(igrd), znblendta(1:nblendta(igrd,ib_bdy)) ) 
    519526               DO ii = 1,nblendta(igrd,ib_bdy) 
    520                   nbrdta(ii,igrd,ib_bdy) = INT( dta_global(ii,1,1) ) 
     527                  nbrdta(ii,igrd,ib_bdy) = INT( znblendta(ii) ) 
    521528               END DO 
    522529 
    523                ibr_max = MAXVAL( nbrdta(:,igrd,ib_bdy) ) 
     530               ibr_max = MAXVAL( nbrdta(1:nblendta(igrd,ib_bdy),igrd,ib_bdy) ) 
     531               !WRITE(numout,*) nbrdta(1:nblendta(igrd,ib_bdy),igrd,ib_bdy) 
    524532               IF(lwp) WRITE(numout,*) 
    525533               IF(lwp) WRITE(numout,*) ' Maximum rimwidth in file is ', ibr_max 
     
    527535               IF (ibr_max < nn_rimwidth(ib_bdy))   & 
    528536                     CALL ctl_stop( 'nn_rimwidth is larger than maximum rimwidth in file',cn_coords_file(ib_bdy) ) 
    529  
     537               DEALLOCATE(znblendta) 
    530538            END DO 
    531539            CALL iom_close( inum ) 
     
    680688      tmask_i (:,:) = tmask(:,:,1) * tmask_i(:,:)              
    681689      bdytmask(:,:) = tmask(:,:,1) 
     690      bdyumask(:,:) = umask(:,:,1) 
     691      bdyvmask(:,:) = vmask(:,:,1) 
    682692 
    683693      ! bdy masks and bmask are now set to zero on boundary points: 
     
    803813 
    804814      IF( nn_timing == 1 ) CALL timing_stop('bdy_init') 
    805  
    806815   END SUBROUTINE bdy_init 
    807816 
  • branches/2013/dev_r3406_CNRS_LIM3/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90

    r3294 r3938  
    99   !!            3.3  !  2010-09  (D.Storkey and E.O'Dea)  bug fixes 
    1010   !!            3.4  !  2011     (D. Storkey) rewrite in preparation for OBC-BDY merge 
     11   !!             -   !  2012-02  (C. Rousset) tides reordered  
    1112   !!---------------------------------------------------------------------- 
    1213#if defined key_bdy 
     
    8990      NAMELIST/nambdy_tide/ln_tide_date, filtide, tide_cpt, tide_speed 
    9091      !!---------------------------------------------------------------------- 
    91  
    92       IF( nn_timing == 1 ) CALL timing_start('tide_init') 
     92      IF( nn_timing == 1 ) CALL timing_start('bdy-tide_init') 
    9393 
    9494      IF(lwp) WRITE(numout,*) 
     
    125125            DO itide = 1, td%ncpt 
    126126               nindx(itide) = 0 
    127                IF( TRIM( tide_cpt(itide) ) == 'Q1'  )   nindx(itide) =  1 
    128                IF( TRIM( tide_cpt(itide) ) == 'O1'  )   nindx(itide) =  2 
    129                IF( TRIM( tide_cpt(itide) ) == 'P1'  )   nindx(itide) =  3 
    130                IF( TRIM( tide_cpt(itide) ) == 'S1'  )   nindx(itide) =  4 
     127               IF( TRIM( tide_cpt(itide) ) == 'M2'  )   nindx(itide) =  1 
     128               IF( TRIM( tide_cpt(itide) ) == 'S2'  )   nindx(itide) =  2 
     129               IF( TRIM( tide_cpt(itide) ) == 'N2'  )   nindx(itide) =  3 
     130               IF( TRIM( tide_cpt(itide) ) == 'K2'  )   nindx(itide) =  4 
    131131               IF( TRIM( tide_cpt(itide) ) == 'K1'  )   nindx(itide) =  5 
    132                IF( TRIM( tide_cpt(itide) ) == '2N2' )   nindx(itide) =  6 
    133                IF( TRIM( tide_cpt(itide) ) == 'MU2' )   nindx(itide) =  7 
    134                IF( TRIM( tide_cpt(itide) ) == 'N2'  )   nindx(itide) =  8 
    135                IF( TRIM( tide_cpt(itide) ) == 'NU2' )   nindx(itide) =  9 
    136                IF( TRIM( tide_cpt(itide) ) == 'M2'  )   nindx(itide) = 10 
    137                IF( TRIM( tide_cpt(itide) ) == 'L2'  )   nindx(itide) = 11 
    138                IF( TRIM( tide_cpt(itide) ) == 'T2'  )   nindx(itide) = 12 
    139                IF( TRIM( tide_cpt(itide) ) == 'S2'  )   nindx(itide) = 13 
    140                IF( TRIM( tide_cpt(itide) ) == 'K2'  )   nindx(itide) = 14 
     132               IF( TRIM( tide_cpt(itide) ) == 'O1' )   nindx(itide) =  6 
     133               IF( TRIM( tide_cpt(itide) ) == 'P1' )   nindx(itide) =  7 
     134               IF( TRIM( tide_cpt(itide) ) == 'Q1'  )   nindx(itide) =  8 
     135               IF( TRIM( tide_cpt(itide) ) == 'S1' )   nindx(itide) =  9 
     136               IF( TRIM( tide_cpt(itide) ) == '2N2' )   nindx(itide) = 10  
     137               IF( TRIM( tide_cpt(itide) ) == 'MU2' )   nindx(itide) = 11  
     138               IF( TRIM( tide_cpt(itide) ) == 'NU2' )   nindx(itide) = 12  
     139               IF( TRIM( tide_cpt(itide) ) == 'L2'  )   nindx(itide) = 13 
     140               IF( TRIM( tide_cpt(itide) ) == 'T2'  )   nindx(itide) = 14 
    141141               IF( TRIM( tide_cpt(itide) ) == 'M4'  )   nindx(itide) = 15 
    142142               IF( nindx(itide) == 0  .AND. lwp ) THEN 
     
    225225                  ! 
    226226                  IF( nindx(itide) /= 0 ) THEN 
    227 !!gm use rpi  and rad global variable   
    228                      z_arg = 3.14159265d0 * z_vplu(nindx(itide)) / 180.0d0 
     227                     z_arg = rad * z_vplu(nindx(itide)) 
    229228                     z_atde=z_ftc(nindx(itide))*cos(z_arg) 
    230229                     z_btde=z_ftc(nindx(itide))*sin(z_arg) 
     
    268267      END DO ! loop on ib_bdy 
    269268 
    270       IF( nn_timing == 1 ) CALL timing_stop('tide_init') 
     269      IF( nn_timing == 1 ) CALL timing_stop('bdy-tide_init') 
    271270 
    272271   END SUBROUTINE tide_init 
     
    299298      !!---------------------------------------------------------------------- 
    300299 
    301       IF( nn_timing == 1 ) CALL timing_start('tide_update') 
     300      IF( nn_timing == 1 ) CALL timing_start('bdy-tide_update') 
    302301 
    303302      time_add = 0 
     
    338337      END DO 
    339338      ! 
    340       IF( nn_timing == 1 ) CALL timing_stop('tide_update') 
     339      IF( nn_timing == 1 ) CALL timing_stop('bdy-tide_update') 
    341340      ! 
    342341   END SUBROUTINE tide_update 
     
    361360      CHARACTER(len=8), DIMENSION(nc) :: cname 
    362361      INTEGER                 ::   year, vd, ivdy, ndc, i, k 
    363       REAL(wp)                ::   ss, h, p, en, p1, rtd 
     362      REAL(wp)                ::   ss, h, p, en, p1 
    364363      REAL(wp), DIMENSION(nc) ::   f                          ! nodal correction 
    365364      REAL(wp), DIMENSION(nc) ::   z_vplu                     ! phase correction 
    366365      REAL(wp), DIMENSION(nc) ::   u, v, zig 
    367366      !! 
    368       DATA cname/  'q1'    ,    'o1'    ,     'p1'   ,    's1'    ,     'k1'    ,   & 
    369          &         '2n2'   ,    'mu2'   ,     'n2'   ,    'nu2'   ,     'm2'    ,   & 
    370          &         'l2'    ,    't2'    ,     's2'   ,    'k2'    ,     'm4'      / 
    371       DATA zig/ .2338507481, .2433518789, .2610826055, .2617993878,  .2625161701,  & 
    372          &      .4868657873, .4881373225, .4963669182, .4976384533,  .5058680490,  & 
    373          &      .5153691799, .5228820265, .5235987756, .5250323419, 1.011736098  / 
     367      DATA cname/  'm2'   ,    's2'   ,     'n2'   ,    'k2'   ,     'k1'    ,   & 
     368         &         'o1'   ,    'p1'   ,     'q1'   ,    's1'   ,     '2n2'   ,   & 
     369         &         'mu2'  ,    'nu2'  ,     'l2'   ,    't2'   ,     'm4'      / 
     370      DATA zig/ .5058680490, .5235987756, .4963669182, .5250323419, .2625161701, & 
     371                .2433518789, .2610826055, .2338507481, .2617993878, .4868657873, & 
     372                .4881373225, .4976384533, .5153691799, .5228820265, 1.011736098 / 
    374373      !!---------------------------------------------------------------------- 
    375374! 
     
    389388      ndc = nc 
    390389!.....ndc   =  number of constituents allowed 
    391 !!gm use rpi ? 
    392       rtd = 360.0 / 6.2831852 
    393390      DO i = 1, ndc 
    394          zig(i) = zig(i)*rtd 
     391         zig(i) = zig(i) / rad 
    395392         ! sigo(i)= zig(i) 
    396393      END DO 
     
    535532! 
    536533!!gm   precision of the computation   :  example for s it should be replace by: 
    537 !!gm  s   = 218.3165 + (481267.8813 - 0.0016*t)*t + 152.0*deltat   ==>  more precise  modify the last digits results 
    538       s   = 218.3165 + 481267.8813*t - 0.0016*t*t + 152.0*deltat 
    539       h   = 280.4661 + 36000.7698 *t + 0.0003*t*t +  11.0*deltat 
    540       p   =  83.3535 + 4069.0139  *t - 0.0103*t*t +       deltat 
    541       en  = 234.9555 + 1934.1363  *t - 0.0021*t*t +       deltat 
    542       p1  = 282.9384 + 1.7195     *t + 0.0005*t*t 
     534      s   = 218.3165 + (481267.8813 - 0.0016*t)*t + 152.0*deltat 
     535      h   = 280.4661 + (36000.7698  + 0.0003*t)*t +  11.0*deltat 
     536      p   =  83.3535 + (4069.0139   - 0.0103*t)*t +       deltat 
     537      en  = 234.9555 + (1934.1363   - 0.0021*t)*t +       deltat 
     538      p1  = 282.9384 + (1.7195      + 0.0005*t)*t 
    543539      ! 
    544540      nn = s / cycle 
     
    579575      !! 
    580576       
    581 !!gm  rad is already a public variable defined in phycst.F90 ....   ==> doctor norme  local real start with "z" 
    582       REAL(wp) ::   w1, w2, w3, w4, w5, w6, w7, w8, nw, pw, rad 
     577      REAL(wp) ::   w1, w2, w3, w4, w5, w6, w7, w8, nw, pw 
    583578      REAL(wp) ::   a(nc), b(nc) 
    584579      INTEGER  ::   ndc, k 
     
    589584!    a=f       ,  b =u 
    590585!    t is  zero as compared to tifa. 
    591 !! use rad defined in phycst   (i.e.  add a USE phycst at the begining of the module 
    592       rad = 6.2831852d0/360.0 
    593586      pw = p  * rad 
    594587      nw = cn * rad 
     
    604597         &    - 0.0156 * SIN( 2*pw-2*nw ) - 0.037  * SIN(     nw ) 
    605598      ! 
    606       a(1) = 1.0089 + 0.1871 * w1 - 0.0147 * w2 + 0.0014 * w3 
    607       b(1) =          0.1885 * w4 - 0.0234 * w5 + 0.0033 * w6 
    608       !   q1 
    609       a(2) = a(1) 
    610       b(2) = b(1) 
    611       !   o1 
    612       a(3) = 1.0 
    613       b(3) = 0.0 
    614       !   p1 
    615       a(4) = 1.0 
    616       b(4) = 0.0 
    617       !   s1 
     599      a(1) = 1.0004 -0.0373*w1+ 0.0002*w2 
     600      b(1) = -0.0374*w4 
     601      !   m2 
     602      a(2)=  1.0 
     603      b(2)=  0.0 
     604      !   s2 
     605      a(3) = 1.0004 -0.0373*w1+ 0.0002*w2 
     606      b(3) = -0.0374*w4 
     607      !   n2 
     608      a(4) = 1.0241+0.2863*w1+0.0083*w2 -0.0015*w3 
     609      b(4) = -0.3096*w4 + 0.0119*w5 - 0.0007*w6 
     610      !   k2 
    618611      a(5) = 1.0060+0.1150*w1- 0.0088*w2 +0.0006*w3 
    619612      b(5) = -0.1546*w4 + 0.0119*w5 -0.0012*w6 
    620613      !   k1 
    621       a(6) =1.0004 -0.0373*w1+ 0.0002*w2 
    622       b(6) = -0.0374*w4 
     614      a(6) = 1.0089 + 0.1871 * w1 - 0.0147 * w2 + 0.0014 * w3 
     615      b(6) =          0.1885 * w4 - 0.0234 * w5 + 0.0033 * w6 
     616      !   o1 
     617      a(7) = 1.0 
     618      b(7) = 0.0 
     619      !   p1 
     620      a(8) = 1.0089 + 0.1871 * w1 - 0.0147 * w2 + 0.0014 * w3 
     621      b(8) =          0.1885 * w4 - 0.0234 * w5 + 0.0033 * w6 
     622      !   q1 
     623      a(9) = 1.0 
     624      b(9) = 0.0 
     625      !   s1 
     626      a(10) =  1.0004 -0.0373*w1+ 0.0002*w2 
     627      b(10) = -0.0374*w4 
    623628      !  2n2 
    624       a(7) = a(6) 
    625       b(7) = b(6) 
     629      a(11) =  1.0004 -0.0373*w1+ 0.0002*w2 
     630      b(11) = -0.0374*w4 
    626631      !  mu2 
    627       a(8) = a(6) 
    628       b(8) = b(6) 
    629       !   n2 
    630       a(9) = a(6) 
    631       b(9) = b(6) 
     632      a(12) =  1.0004 -0.0373*w1+ 0.0002*w2 
     633      b(12) = -0.0374*w4 
    632634      !  nu2 
    633       a(10) = a(6) 
    634       b(10) = b(6) 
    635       !   m2 
    636       a(11) = SQRT( w7 * w7 + w8 * w8 ) 
    637       b(11) = ATAN( w8 / w7 ) 
     635      a(13) = SQRT( w7 * w7 + w8 * w8 ) 
     636      b(13) = ATAN( w8 / w7 ) 
    638637!!gmuse rpi  instead of 3.141992 ???   true pi is rpi=3.141592653589793_wp  .....   ???? 
    639       IF( w7 < 0.e0 )   b(11) = b(11) + 3.141992 
     638      IF( w7 < 0.e0 )   b(13) = b(13) + 3.141992 
    640639      !   l2 
    641       a(12) = 1.0 
    642       b(12) = 0.0 
     640      a(14) = 1.0 
     641      b(14) = 0.0 
    643642      !   t2 
    644       a(13)= a(12) 
    645       b(13)= b(12) 
    646       !   s2 
    647       a(14) = 1.0241+0.2863*w1+0.0083*w2 -0.0015*w3 
    648       b(14) = -0.3096*w4 + 0.0119*w5 - 0.0007*w6 
    649       !   k2 
    650       a(15) = a(6)*a(6) 
    651       b(15) = 2*b(6) 
     643      a(15) = a(10)*a(10) 
     644      b(15) = 2*b(10) 
    652645      !   m4 
    653646!!gm  old coding,  remove GOTO and label of lines 
     
    686679      ndc = nc 
    687680      !   v s  are computed here. 
    688       v(1) =-3*s +h +p +270      ! Q1 
    689       v(2) =-2*s +h +270.0       ! O1 
    690       v(3) =-h +270              ! P1 
    691       v(4) =180                  ! S1 
    692       v(5) =h +90.0              ! K1 
    693       v(6) =-4*s +2*h +2*p       ! 2N2 
    694       v(7) =-4*(s-h)             ! MU2 
    695       v(8) =-3*s +2*h +p         ! N2 
    696       v(9) =-3*s +4*h -p         ! MU2 
    697       v(10) =-2*s +2*h           ! M2 
    698       v(11) =-s +2*h -p +180     ! L2  
    699       v(12) =-h +p1              ! T2 
    700       v(13) =0                   ! S2 
    701       v(14) =h+h                 ! K2 
    702       v(15) =2*v(10)             ! M4 
     681      v(1)  =-2*s +2*h           ! M2 
     682      v(2)  =0                   ! S2 
     683      v(3)  =-3*s +2*h +p        ! N2 
     684      v(4)  =h+h                 ! K2 
     685      v(5)  =h +90.0             ! K1 
     686      v(6)  =-2*s +h +270.0      ! O1 
     687      v(7)  =-h +270             ! P1 
     688      v(8)  =-3*s +h +p +270     ! Q1 
     689      v(9)  =180                 ! S1 
     690      v(10) =-4*s +2*h +2*p      ! 2N2 
     691      v(11) =-4*(s-h)            ! MU2 
     692      v(12) =-3*s +4*h -p        ! NU2 
     693      v(13) =-s +2*h -p +180     ! L2  
     694      v(14) =-h +p1              ! T2 
     695      v(15) =2*v(1)              ! M4 
    703696! 
    704697!!gm  old coding,  remove GOTO and label of lines 
  • branches/2013/dev_r3406_CNRS_LIM3/NEMOGCM/NEMO/OPA_SRC/BDY/bdytra.F90

    r3294 r3938  
    8585            ij = idx%nbj(ib,igrd) 
    8686            zwgt = idx%nbw(ib,igrd) 
    87             tsa(ii,ij,ik,jp_tem) = ( tsa(ii,ij,ik,jp_tem) + zwgt * ( dta%tem(ib,ik) - tsa(ii,ij,ik,jp_tem) ) ) * tmask(ii,ij,ik)          
     87            tsa(ii,ij,ik,jp_tem) = ( tsa(ii,ij,ik,jp_tem) + zwgt * ( dta%tem(ib,ik) - tsa(ii,ij,ik,jp_tem) ) ) * tmask(ii,ij,ik) 
    8888            tsa(ii,ij,ik,jp_sal) = ( tsa(ii,ij,ik,jp_sal) + zwgt * ( dta%sal(ib,ik) - tsa(ii,ij,ik,jp_sal) ) ) * tmask(ii,ij,ik) 
    8989         END DO 
  • branches/2013/dev_r3406_CNRS_LIM3/NEMOGCM/NEMO/OPA_SRC/BDY/bdyvol.F90

    r3294 r3938  
    7777      TYPE(OBC_INDEX), POINTER :: idx 
    7878      !!----------------------------------------------------------------------------- 
    79  
    8079      IF( nn_timing == 1 ) CALL timing_start('bdy_vol') 
    8180 
Note: See TracChangeset for help on using the changeset viewer.