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 6060 for branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90 – NEMO

Ignore:
Timestamp:
2015-12-16T10:25:22+01:00 (8 years ago)
Author:
timgraham
Message:

Merged dev_r5836_noc2_VVL_BY_DEFAULT into branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r5836 r6060  
    1818   !!   sbc_cpl_snd     : send     fields to the atmosphere 
    1919   !!---------------------------------------------------------------------- 
    20    USE dom_oce         ! ocean space and time domain 
    21    USE sbc_oce         ! Surface boundary condition: ocean fields 
    22    USE sbc_ice         ! Surface boundary condition: ice fields 
    23    USE sbcapr 
    24    USE sbcdcy          ! surface boundary condition: diurnal cycle 
    25    USE phycst          ! physical constants 
     20   USE dom_oce        ! ocean space and time domain 
     21   USE sbc_oce        ! Surface boundary condition: ocean fields 
     22   USE sbc_ice        ! Surface boundary condition: ice fields 
     23   USE sbcapr         ! Stochastic param. : ??? 
     24   USE sbcdcy         ! surface boundary condition: diurnal cycle 
     25   USE phycst         ! physical constants 
    2626#if defined key_lim3 
    27    USE ice             ! ice variables 
     27   USE ice            ! ice variables 
    2828#endif 
    2929#if defined key_lim2 
    30    USE par_ice_2       ! ice parameters 
    31    USE ice_2           ! ice variables 
     30   USE par_ice_2      ! ice parameters 
     31   USE ice_2          ! ice variables 
    3232#endif 
    33    USE cpl_oasis3      ! OASIS3 coupling 
    34    USE geo2ocean       !  
     33   USE cpl_oasis3     ! OASIS3 coupling 
     34   USE geo2ocean      !  
    3535   USE oce   , ONLY : tsn, un, vn, sshn, ub, vb, sshb, fraqsr_1lev 
    36    USE albedo          ! 
    37    USE in_out_manager  ! I/O manager 
    38    USE iom             ! NetCDF library 
    39    USE lib_mpp         ! distribued memory computing library 
    40    USE wrk_nemo        ! work arrays 
    41    USE timing          ! Timing 
    42    USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    43    USE eosbn2 
    44    USE sbcrnf   , ONLY : l_rnfcpl 
     36   USE albedo         !  
     37   USE eosbn2         !  
     38   USE sbcrnf  , ONLY : l_rnfcpl 
    4539#if defined key_cpl_carbon_cycle 
    4640   USE p4zflx, ONLY : oce_co2 
     
    5044#endif 
    5145#if defined key_lim3 
    52    USE limthd_dh       ! for CALL lim_thd_snwblow 
     46   USE limthd_dh      ! for CALL lim_thd_snwblow 
    5347#endif 
     48   ! 
     49   USE in_out_manager ! I/O manager 
     50   USE iom            ! NetCDF library 
     51   USE lib_mpp        ! distribued memory computing library 
     52   USE wrk_nemo       ! work arrays 
     53   USE timing         ! Timing 
     54   USE lbclnk         ! ocean lateral boundary conditions (or mpp link) 
    5455 
    5556   IMPLICIT NONE 
    5657   PRIVATE 
    5758 
    58    PUBLIC   sbc_cpl_init       ! routine called by sbcmod.F90 
    59    PUBLIC   sbc_cpl_rcv        ! routine called by sbc_ice_lim(_2).F90 
    60    PUBLIC   sbc_cpl_snd        ! routine called by step.F90 
    61    PUBLIC   sbc_cpl_ice_tau    ! routine called by sbc_ice_lim(_2).F90 
    62    PUBLIC   sbc_cpl_ice_flx    ! routine called by sbc_ice_lim(_2).F90 
    63    PUBLIC   sbc_cpl_alloc      ! routine called in sbcice_cice.F90 
    64  
    65    INTEGER, PARAMETER ::   jpr_otx1   =  1            ! 3 atmosphere-ocean stress components on grid 1 
    66    INTEGER, PARAMETER ::   jpr_oty1   =  2            !  
    67    INTEGER, PARAMETER ::   jpr_otz1   =  3            !  
    68    INTEGER, PARAMETER ::   jpr_otx2   =  4            ! 3 atmosphere-ocean stress components on grid 2 
    69    INTEGER, PARAMETER ::   jpr_oty2   =  5            !  
    70    INTEGER, PARAMETER ::   jpr_otz2   =  6            !  
    71    INTEGER, PARAMETER ::   jpr_itx1   =  7            ! 3 atmosphere-ice   stress components on grid 1 
    72    INTEGER, PARAMETER ::   jpr_ity1   =  8            !  
    73    INTEGER, PARAMETER ::   jpr_itz1   =  9            !  
    74    INTEGER, PARAMETER ::   jpr_itx2   = 10            ! 3 atmosphere-ice   stress components on grid 2 
    75    INTEGER, PARAMETER ::   jpr_ity2   = 11            !  
    76    INTEGER, PARAMETER ::   jpr_itz2   = 12            !  
    77    INTEGER, PARAMETER ::   jpr_qsroce = 13            ! Qsr above the ocean 
    78    INTEGER, PARAMETER ::   jpr_qsrice = 14            ! Qsr above the ice 
     59   PUBLIC   sbc_cpl_init      ! routine called by sbcmod.F90 
     60   PUBLIC   sbc_cpl_rcv       ! routine called by sbc_ice_lim(_2).F90 
     61   PUBLIC   sbc_cpl_snd       ! routine called by step.F90 
     62   PUBLIC   sbc_cpl_ice_tau   ! routine called by sbc_ice_lim(_2).F90 
     63   PUBLIC   sbc_cpl_ice_flx   ! routine called by sbc_ice_lim(_2).F90 
     64   PUBLIC   sbc_cpl_alloc     ! routine called in sbcice_cice.F90 
     65 
     66   INTEGER, PARAMETER ::   jpr_otx1   =  1   ! 3 atmosphere-ocean stress components on grid 1 
     67   INTEGER, PARAMETER ::   jpr_oty1   =  2   !  
     68   INTEGER, PARAMETER ::   jpr_otz1   =  3   !  
     69   INTEGER, PARAMETER ::   jpr_otx2   =  4   ! 3 atmosphere-ocean stress components on grid 2 
     70   INTEGER, PARAMETER ::   jpr_oty2   =  5   !  
     71   INTEGER, PARAMETER ::   jpr_otz2   =  6   !  
     72   INTEGER, PARAMETER ::   jpr_itx1   =  7   ! 3 atmosphere-ice   stress components on grid 1 
     73   INTEGER, PARAMETER ::   jpr_ity1   =  8   !  
     74   INTEGER, PARAMETER ::   jpr_itz1   =  9   !  
     75   INTEGER, PARAMETER ::   jpr_itx2   = 10   ! 3 atmosphere-ice   stress components on grid 2 
     76   INTEGER, PARAMETER ::   jpr_ity2   = 11   !  
     77   INTEGER, PARAMETER ::   jpr_itz2   = 12   !  
     78   INTEGER, PARAMETER ::   jpr_qsroce = 13   ! Qsr above the ocean 
     79   INTEGER, PARAMETER ::   jpr_qsrice = 14   ! Qsr above the ice 
    7980   INTEGER, PARAMETER ::   jpr_qsrmix = 15  
    80    INTEGER, PARAMETER ::   jpr_qnsoce = 16            ! Qns above the ocean 
    81    INTEGER, PARAMETER ::   jpr_qnsice = 17            ! Qns above the ice 
     81   INTEGER, PARAMETER ::   jpr_qnsoce = 16   ! Qns above the ocean 
     82   INTEGER, PARAMETER ::   jpr_qnsice = 17   ! Qns above the ice 
    8283   INTEGER, PARAMETER ::   jpr_qnsmix = 18 
    83    INTEGER, PARAMETER ::   jpr_rain   = 19            ! total liquid precipitation (rain) 
    84    INTEGER, PARAMETER ::   jpr_snow   = 20            ! solid precipitation over the ocean (snow) 
    85    INTEGER, PARAMETER ::   jpr_tevp   = 21            ! total evaporation 
    86    INTEGER, PARAMETER ::   jpr_ievp   = 22            ! solid evaporation (sublimation) 
    87    INTEGER, PARAMETER ::   jpr_sbpr   = 23            ! sublimation - liquid precipitation - solid precipitation 
    88    INTEGER, PARAMETER ::   jpr_semp   = 24            ! solid freshwater budget (sublimation - snow) 
    89    INTEGER, PARAMETER ::   jpr_oemp   = 25            ! ocean freshwater budget (evap - precip) 
    90    INTEGER, PARAMETER ::   jpr_w10m   = 26            ! 10m wind 
    91    INTEGER, PARAMETER ::   jpr_dqnsdt = 27            ! d(Q non solar)/d(temperature) 
    92    INTEGER, PARAMETER ::   jpr_rnf    = 28            ! runoffs 
    93    INTEGER, PARAMETER ::   jpr_cal    = 29            ! calving 
    94    INTEGER, PARAMETER ::   jpr_taum   = 30            ! wind stress module 
     84   INTEGER, PARAMETER ::   jpr_rain   = 19   ! total liquid precipitation (rain) 
     85   INTEGER, PARAMETER ::   jpr_snow   = 20   ! solid precipitation over the ocean (snow) 
     86   INTEGER, PARAMETER ::   jpr_tevp   = 21   ! total evaporation 
     87   INTEGER, PARAMETER ::   jpr_ievp   = 22   ! solid evaporation (sublimation) 
     88   INTEGER, PARAMETER ::   jpr_sbpr   = 23   ! sublimation - liquid precipitation - solid precipitation 
     89   INTEGER, PARAMETER ::   jpr_semp   = 24   ! solid freshwater budget (sublimation - snow) 
     90   INTEGER, PARAMETER ::   jpr_oemp   = 25   ! ocean freshwater budget (evap - precip) 
     91   INTEGER, PARAMETER ::   jpr_w10m   = 26   ! 10m wind 
     92   INTEGER, PARAMETER ::   jpr_dqnsdt = 27   ! d(Q non solar)/d(temperature) 
     93   INTEGER, PARAMETER ::   jpr_rnf    = 28   ! runoffs 
     94   INTEGER, PARAMETER ::   jpr_cal    = 29   ! calving 
     95   INTEGER, PARAMETER ::   jpr_taum   = 30   ! wind stress module 
    9596   INTEGER, PARAMETER ::   jpr_co2    = 31 
    96    INTEGER, PARAMETER ::   jpr_topm   = 32            ! topmeltn 
    97    INTEGER, PARAMETER ::   jpr_botm   = 33            ! botmeltn 
    98    INTEGER, PARAMETER ::   jpr_sflx   = 34            ! salt flux 
    99    INTEGER, PARAMETER ::   jpr_toce   = 35            ! ocean temperature 
    100    INTEGER, PARAMETER ::   jpr_soce   = 36            ! ocean salinity 
    101    INTEGER, PARAMETER ::   jpr_ocx1   = 37            ! ocean current on grid 1 
    102    INTEGER, PARAMETER ::   jpr_ocy1   = 38            ! 
    103    INTEGER, PARAMETER ::   jpr_ssh    = 39            ! sea surface height 
    104    INTEGER, PARAMETER ::   jpr_fice   = 40            ! ice fraction           
    105    INTEGER, PARAMETER ::   jpr_e3t1st = 41            ! first T level thickness  
    106    INTEGER, PARAMETER ::   jpr_fraqsr = 42            ! fraction of solar net radiation absorbed in the first ocean level 
    107    INTEGER, PARAMETER ::   jprcv      = 42            ! total number of fields received 
    108  
    109    INTEGER, PARAMETER ::   jps_fice   =  1            ! ice fraction sent to the atmosphere 
    110    INTEGER, PARAMETER ::   jps_toce   =  2            ! ocean temperature 
    111    INTEGER, PARAMETER ::   jps_tice   =  3            ! ice   temperature 
    112    INTEGER, PARAMETER ::   jps_tmix   =  4            ! mixed temperature (ocean+ice) 
    113    INTEGER, PARAMETER ::   jps_albice =  5            ! ice   albedo 
    114    INTEGER, PARAMETER ::   jps_albmix =  6            ! mixed albedo 
    115    INTEGER, PARAMETER ::   jps_hice   =  7            ! ice  thickness 
    116    INTEGER, PARAMETER ::   jps_hsnw   =  8            ! snow thickness 
    117    INTEGER, PARAMETER ::   jps_ocx1   =  9            ! ocean current on grid 1 
    118    INTEGER, PARAMETER ::   jps_ocy1   = 10            ! 
    119    INTEGER, PARAMETER ::   jps_ocz1   = 11            ! 
    120    INTEGER, PARAMETER ::   jps_ivx1   = 12            ! ice   current on grid 1 
    121    INTEGER, PARAMETER ::   jps_ivy1   = 13            ! 
    122    INTEGER, PARAMETER ::   jps_ivz1   = 14            ! 
     97   INTEGER, PARAMETER ::   jpr_topm   = 32   ! topmeltn 
     98   INTEGER, PARAMETER ::   jpr_botm   = 33   ! botmeltn 
     99   INTEGER, PARAMETER ::   jpr_sflx   = 34   ! salt flux 
     100   INTEGER, PARAMETER ::   jpr_toce   = 35   ! ocean temperature 
     101   INTEGER, PARAMETER ::   jpr_soce   = 36   ! ocean salinity 
     102   INTEGER, PARAMETER ::   jpr_ocx1   = 37   ! ocean current on grid 1 
     103   INTEGER, PARAMETER ::   jpr_ocy1   = 38   ! 
     104   INTEGER, PARAMETER ::   jpr_ssh    = 39   ! sea surface height 
     105   INTEGER, PARAMETER ::   jpr_fice   = 40   ! ice fraction           
     106   INTEGER, PARAMETER ::   jpr_e3t1st = 41   ! first T level thickness  
     107   INTEGER, PARAMETER ::   jpr_fraqsr = 42   ! fraction of solar net radiation absorbed in the first ocean level 
     108   INTEGER, PARAMETER ::   jprcv      = 42   ! total number of fields received 
     109 
     110   INTEGER, PARAMETER ::   jps_fice   =  1   ! ice fraction sent to the atmosphere 
     111   INTEGER, PARAMETER ::   jps_toce   =  2   ! ocean temperature 
     112   INTEGER, PARAMETER ::   jps_tice   =  3   ! ice   temperature 
     113   INTEGER, PARAMETER ::   jps_tmix   =  4   ! mixed temperature (ocean+ice) 
     114   INTEGER, PARAMETER ::   jps_albice =  5   ! ice   albedo 
     115   INTEGER, PARAMETER ::   jps_albmix =  6   ! mixed albedo 
     116   INTEGER, PARAMETER ::   jps_hice   =  7   ! ice  thickness 
     117   INTEGER, PARAMETER ::   jps_hsnw   =  8   ! snow thickness 
     118   INTEGER, PARAMETER ::   jps_ocx1   =  9   ! ocean current on grid 1 
     119   INTEGER, PARAMETER ::   jps_ocy1   = 10   ! 
     120   INTEGER, PARAMETER ::   jps_ocz1   = 11   ! 
     121   INTEGER, PARAMETER ::   jps_ivx1   = 12   ! ice   current on grid 1 
     122   INTEGER, PARAMETER ::   jps_ivy1   = 13   ! 
     123   INTEGER, PARAMETER ::   jps_ivz1   = 14   ! 
    123124   INTEGER, PARAMETER ::   jps_co2    = 15 
    124    INTEGER, PARAMETER ::   jps_soce   = 16            ! ocean salinity 
    125    INTEGER, PARAMETER ::   jps_ssh    = 17            ! sea surface height 
    126    INTEGER, PARAMETER ::   jps_qsroce = 18            ! Qsr above the ocean 
    127    INTEGER, PARAMETER ::   jps_qnsoce = 19            ! Qns above the ocean 
    128    INTEGER, PARAMETER ::   jps_oemp   = 20            ! ocean freshwater budget (evap - precip) 
    129    INTEGER, PARAMETER ::   jps_sflx   = 21            ! salt flux 
    130    INTEGER, PARAMETER ::   jps_otx1   = 22            ! 2 atmosphere-ocean stress components on grid 1 
    131    INTEGER, PARAMETER ::   jps_oty1   = 23            !  
    132    INTEGER, PARAMETER ::   jps_rnf    = 24            ! runoffs 
    133    INTEGER, PARAMETER ::   jps_taum   = 25            ! wind stress module 
    134    INTEGER, PARAMETER ::   jps_fice2  = 26            ! ice fraction sent to OPA (by SAS when doing SAS-OPA coupling) 
    135    INTEGER, PARAMETER ::   jps_e3t1st = 27            ! first level depth (vvl) 
    136    INTEGER, PARAMETER ::   jps_fraqsr = 28            ! fraction of solar net radiation absorbed in the first ocean level 
    137    INTEGER, PARAMETER ::   jpsnd      = 28            ! total number of fields sended 
    138  
    139    !                                                         !!** namelist namsbc_cpl ** 
    140    TYPE ::   FLD_C 
    141       CHARACTER(len = 32) ::   cldes                  ! desciption of the coupling strategy 
    142       CHARACTER(len = 32) ::   clcat                  ! multiple ice categories strategy 
    143       CHARACTER(len = 32) ::   clvref                 ! reference of vector ('spherical' or 'cartesian') 
    144       CHARACTER(len = 32) ::   clvor                  ! orientation of vector fields ('eastward-northward' or 'local grid') 
    145       CHARACTER(len = 32) ::   clvgrd                 ! grids on which is located the vector fields 
     125   INTEGER, PARAMETER ::   jps_soce   = 16   ! ocean salinity 
     126   INTEGER, PARAMETER ::   jps_ssh    = 17   ! sea surface height 
     127   INTEGER, PARAMETER ::   jps_qsroce = 18   ! Qsr above the ocean 
     128   INTEGER, PARAMETER ::   jps_qnsoce = 19   ! Qns above the ocean 
     129   INTEGER, PARAMETER ::   jps_oemp   = 20   ! ocean freshwater budget (evap - precip) 
     130   INTEGER, PARAMETER ::   jps_sflx   = 21   ! salt flux 
     131   INTEGER, PARAMETER ::   jps_otx1   = 22   ! 2 atmosphere-ocean stress components on grid 1 
     132   INTEGER, PARAMETER ::   jps_oty1   = 23   !  
     133   INTEGER, PARAMETER ::   jps_rnf    = 24   ! runoffs 
     134   INTEGER, PARAMETER ::   jps_taum   = 25   ! wind stress module 
     135   INTEGER, PARAMETER ::   jps_fice2  = 26   ! ice fraction sent to OPA (by SAS when doing SAS-OPA coupling) 
     136   INTEGER, PARAMETER ::   jps_e3t1st = 27   ! first level depth (vvl) 
     137   INTEGER, PARAMETER ::   jps_fraqsr = 28   ! fraction of solar net radiation absorbed in the first ocean level 
     138   INTEGER, PARAMETER ::   jpsnd      = 28   ! total number of fields sended 
     139 
     140   !                                  !!** namelist namsbc_cpl ** 
     141   TYPE ::   FLD_C                     !    
     142      CHARACTER(len = 32) ::   cldes      ! desciption of the coupling strategy 
     143      CHARACTER(len = 32) ::   clcat      ! multiple ice categories strategy 
     144      CHARACTER(len = 32) ::   clvref     ! reference of vector ('spherical' or 'cartesian') 
     145      CHARACTER(len = 32) ::   clvor      ! orientation of vector fields ('eastward-northward' or 'local grid') 
     146      CHARACTER(len = 32) ::   clvgrd     ! grids on which is located the vector fields 
    146147   END TYPE FLD_C 
    147    ! Send to the atmosphere                           ! 
     148   !                                   ! Send to the atmosphere   
    148149   TYPE(FLD_C) ::   sn_snd_temp, sn_snd_alb, sn_snd_thick, sn_snd_crt, sn_snd_co2                         
    149    ! Received from the atmosphere                     ! 
     150   !                                   ! Received from the atmosphere 
    150151   TYPE(FLD_C) ::   sn_rcv_w10m, sn_rcv_taumod, sn_rcv_tau, sn_rcv_dqnsdt, sn_rcv_qsr, sn_rcv_qns, sn_rcv_emp, sn_rcv_rnf 
    151152   TYPE(FLD_C) ::   sn_rcv_cal, sn_rcv_iceflx, sn_rcv_co2                         
    152    ! Other namelist parameters                        ! 
    153    INTEGER     ::   nn_cplmodel            ! Maximum number of models to/from which NEMO is potentialy sending/receiving data 
    154    LOGICAL     ::   ln_usecplmask          !  use a coupling mask file to merge data received from several models 
    155                                            !   -> file cplmask.nc with the float variable called cplmask (jpi,jpj,nn_cplmodel) 
     153   !                                   ! Other namelist parameters 
     154   INTEGER     ::   nn_cplmodel           ! Maximum number of models to/from which NEMO is potentialy sending/receiving data 
     155   LOGICAL     ::   ln_usecplmask         !  use a coupling mask file to merge data received from several models 
     156                                         !   -> file cplmask.nc with the float variable called cplmask (jpi,jpj,nn_cplmodel) 
    156157   TYPE ::   DYNARR      
    157158      REAL(wp), POINTER, DIMENSION(:,:,:)    ::   z3    
    158159   END TYPE DYNARR 
    159160 
    160    TYPE( DYNARR ), SAVE, DIMENSION(jprcv) ::   frcv                      ! all fields recieved from the atmosphere 
    161  
    162    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   albedo_oce_mix     ! ocean albedo sent to atmosphere (mix clear/overcast sky) 
    163  
    164    INTEGER , ALLOCATABLE, SAVE, DIMENSION(    :) ::   nrcvinfo           ! OASIS info argument 
     161   TYPE( DYNARR ), SAVE, DIMENSION(jprcv) ::   frcv                     ! all fields recieved from the atmosphere 
     162 
     163   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   albedo_oce_mix    ! ocean albedo sent to atmosphere (mix clear/overcast sky) 
     164 
     165   INTEGER , ALLOCATABLE, SAVE, DIMENSION(    :) ::   nrcvinfo          ! OASIS info argument 
    165166 
    166167   !! Substitution 
    167 #  include "domzgr_substitute.h90" 
    168168#  include "vectopt_loop_substitute.h90" 
    169169   !!---------------------------------------------------------------------- 
    170    !! NEMO/OPA 3.3 , NEMO Consortium (2010) 
     170   !! NEMO/OPA 3.7 , NEMO Consortium (2015) 
    171171   !! $Id$ 
    172172   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
    173173   !!---------------------------------------------------------------------- 
    174  
    175174CONTAINS 
    176175   
     
    209208      !!              * initialise the OASIS coupler 
    210209      !!---------------------------------------------------------------------- 
    211       INTEGER, INTENT(in) ::   k_ice       ! ice management in the sbc (=0/1/2/3) 
    212       !! 
    213       INTEGER ::   jn   ! dummy loop index 
    214       INTEGER ::   ios  ! Local integer output status for namelist read 
    215       INTEGER ::   inum  
     210      INTEGER, INTENT(in) ::   k_ice   ! ice management in the sbc (=0/1/2/3) 
     211      ! 
     212      INTEGER ::   jn          ! dummy loop index 
     213      INTEGER ::   ios, inum   ! Local integer 
    216214      REAL(wp), POINTER, DIMENSION(:,:) ::   zacs, zaos 
    217215      !! 
     
    222220      !!--------------------------------------------------------------------- 
    223221      ! 
    224       IF( nn_timing == 1 )  CALL timing_start('sbc_cpl_init') 
    225       ! 
    226       CALL wrk_alloc( jpi,jpj, zacs, zaos ) 
     222      IF( nn_timing == 1 )   CALL timing_start('sbc_cpl_init') 
     223      ! 
     224      CALL wrk_alloc( jpi,jpj,   zacs, zaos ) 
    227225 
    228226      ! ================================ ! 
    229227      !      Namelist informations       ! 
    230228      ! ================================ ! 
    231  
     229      ! 
    232230      REWIND( numnam_ref )              ! Namelist namsbc_cpl in reference namelist : Variables for OASIS coupling 
    233231      READ  ( numnam_ref, namsbc_cpl, IOSTAT = ios, ERR = 901) 
    234 901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_cpl in reference namelist', lwp ) 
    235  
     232901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namsbc_cpl in reference namelist', lwp ) 
     233      ! 
    236234      REWIND( numnam_cfg )              ! Namelist namsbc_cpl in configuration namelist : Variables for OASIS coupling 
    237235      READ  ( numnam_cfg, namsbc_cpl, IOSTAT = ios, ERR = 902 ) 
    238 902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namsbc_cpl in configuration namelist', lwp ) 
     236902   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namsbc_cpl in configuration namelist', lwp ) 
    239237      IF(lwm) WRITE ( numond, namsbc_cpl ) 
    240  
     238      ! 
    241239      IF(lwp) THEN                        ! control print 
    242240         WRITE(numout,*) 
     
    374372         srcv(jpr_ity1)%clgrid = 'V'                  ! i.e. it is always at U- & V-points for i- & j-comp. resp. 
    375373      ENDIF 
    376         
     374      ! 
    377375      !                                                      ! ------------------------- ! 
    378376      !                                                      !    freshwater budget      !   E-P 
     
    396394      CASE default              ;   CALL ctl_stop( 'sbc_cpl_init: wrong definition of sn_rcv_emp%cldes' ) 
    397395      END SELECT 
    398  
     396      ! 
    399397      !                                                      ! ------------------------- ! 
    400398      !                                                      !     Runoffs & Calving     !    
     
    410408      ! 
    411409      srcv(jpr_cal   )%clname = 'OCalving'   ;   IF( TRIM( sn_rcv_cal%cldes ) == 'coupled' )   srcv(jpr_cal)%laction = .TRUE. 
    412  
     410      ! 
    413411      !                                                      ! ------------------------- ! 
    414412      !                                                      !    non solar radiation    !   Qns 
     
    535533         IF( .NOT. ln_cpl ) srcv(:)%nsgn    = 1.        ! force default definition in case of opa <-> sas coupling 
    536534         srcv( (/jpr_toce, jpr_soce, jpr_ssh, jpr_fraqsr, jpr_ocx1, jpr_ocy1/) )%laction = .TRUE. 
    537          srcv( jpr_e3t1st )%laction = lk_vvl 
     535         srcv( jpr_e3t1st )%laction = .NOT.ln_linssh 
    538536         srcv(jpr_ocx1)%clgrid = 'U'        ! oce components given at U-point 
    539537         srcv(jpr_ocy1)%clgrid = 'V'        !           and           V-point 
     
    701699         ssnd(:)%laction = .FALSE.   ! force default definition in case of opa <-> sas coupling 
    702700         ssnd( (/jps_toce, jps_soce, jps_ssh, jps_fraqsr, jps_ocx1, jps_ocy1/) )%laction = .TRUE. 
    703          ssnd( jps_e3t1st )%laction = lk_vvl 
     701         ssnd( jps_e3t1st )%laction = .NOT.ln_linssh 
    704702         ! vector definition: not used but cleaner... 
    705703         ssnd(jps_ocx1)%clgrid  = 'U'        ! oce components given at U-point 
     
    785783      ncpl_qsr_freq = 86400 / ncpl_qsr_freq 
    786784 
    787       CALL wrk_dealloc( jpi,jpj, zacs, zaos ) 
    788       ! 
    789       IF( nn_timing == 1 )  CALL timing_stop('sbc_cpl_init') 
     785      CALL wrk_dealloc( jpi,jpj,   zacs, zaos ) 
     786      ! 
     787      IF( nn_timing == 1 )   CALL timing_stop('sbc_cpl_init') 
    790788      ! 
    791789   END SUBROUTINE sbc_cpl_init 
     
    837835      !!                        emp          upward mass flux [evap. - precip. (- runoffs) (- calving)] (ocean only case) 
    838836      !!---------------------------------------------------------------------- 
    839       INTEGER, INTENT(in)           ::   kt          ! ocean model time step index 
    840       INTEGER, INTENT(in)           ::   k_fsbc      ! frequency of sbc (-> ice model) computation  
    841       INTEGER, INTENT(in)           ::   k_ice       ! ice management in the sbc (=0/1/2/3) 
     837      INTEGER, INTENT(in) ::   kt       ! ocean model time step index 
     838      INTEGER, INTENT(in) ::   k_fsbc   ! frequency of sbc (-> ice model) computation  
     839      INTEGER, INTENT(in) ::   k_ice    ! ice management in the sbc (=0/1/2/3) 
    842840 
    843841      !! 
     
    853851      !!---------------------------------------------------------------------- 
    854852      ! 
    855       IF( nn_timing == 1 )  CALL timing_start('sbc_cpl_rcv') 
    856       ! 
    857       CALL wrk_alloc( jpi,jpj, ztx, zty, zmsk, zemp, zqns, zqsr ) 
     853      IF( nn_timing == 1 )   CALL timing_start('sbc_cpl_rcv') 
     854      ! 
     855      CALL wrk_alloc( jpi,jpj,   ztx, zty, zmsk, zemp, zqns, zqsr ) 
    858856      ! 
    859857      IF( ln_mixcpl )   zmsk(:,:) = 1. - xcplmask(:,:,0) 
     
    11041102         IF( srcv(jpr_fice )%laction )   fr_i(:,:) = frcv(jpr_fice )%z3(:,:,1) 
    11051103         ! 
    1106  
    1107       ENDIF 
    1108       ! 
    1109       CALL wrk_dealloc( jpi,jpj, ztx, zty, zmsk, zemp, zqns, zqsr ) 
    1110       ! 
    1111       IF( nn_timing == 1 )  CALL timing_stop('sbc_cpl_rcv') 
     1104      ENDIF 
     1105      ! 
     1106      CALL wrk_dealloc( jpi,jpj,   ztx, zty, zmsk, zemp, zqns, zqsr ) 
     1107      ! 
     1108      IF( nn_timing == 1 )   CALL timing_stop('sbc_cpl_rcv') 
    11121109      ! 
    11131110   END SUBROUTINE sbc_cpl_rcv 
     
    11501147      REAL(wp), INTENT(out), DIMENSION(:,:) ::   p_tauj   ! at I-point (B-grid) or U & V-point (C-grid) 
    11511148      !! 
    1152       INTEGER ::   ji, jj                          ! dummy loop indices 
    1153       INTEGER ::   itx                             ! index of taux over ice 
     1149      INTEGER ::   ji, jj   ! dummy loop indices 
     1150      INTEGER ::   itx      ! index of taux over ice 
    11541151      REAL(wp), POINTER, DIMENSION(:,:) ::   ztx, zty  
    11551152      !!---------------------------------------------------------------------- 
    11561153      ! 
    1157       IF( nn_timing == 1 )  CALL timing_start('sbc_cpl_ice_tau') 
    1158       ! 
    1159       CALL wrk_alloc( jpi,jpj, ztx, zty ) 
     1154      IF( nn_timing == 1 )   CALL timing_start('sbc_cpl_ice_tau') 
     1155      ! 
     1156      CALL wrk_alloc( jpi,jpj,   ztx, zty ) 
    11601157 
    11611158      IF( srcv(jpr_itx1)%laction ) THEN   ;   itx =  jpr_itx1    
     
    11651162      ! do something only if we just received the stress from atmosphere 
    11661163      IF(  nrcvinfo(itx) == OASIS_Rcv ) THEN 
    1167  
    11681164         !                                                      ! ======================= ! 
    11691165         IF( srcv(jpr_itx1)%laction ) THEN                      !   ice stress received   ! 
     
    13181314      ENDIF 
    13191315      !    
    1320       CALL wrk_dealloc( jpi,jpj, ztx, zty ) 
    1321       ! 
    1322       IF( nn_timing == 1 )  CALL timing_stop('sbc_cpl_ice_tau') 
     1316      CALL wrk_dealloc( jpi,jpj,   ztx, zty ) 
     1317      ! 
     1318      IF( nn_timing == 1 )   CALL timing_stop('sbc_cpl_ice_tau') 
    13231319      ! 
    13241320   END SUBROUTINE sbc_cpl_ice_tau 
     
    13651361      !!                   sprecip             solid precipitation over the ocean   
    13661362      !!---------------------------------------------------------------------- 
    1367       REAL(wp), INTENT(in   ), DIMENSION(:,:)   ::   p_frld     ! lead fraction                [0 to 1] 
     1363      REAL(wp), INTENT(in   ), DIMENSION(:,:)             ::   p_frld  ! lead fraction            [0 to 1] 
    13681364      ! optional arguments, used only in 'mixed oce-ice' case 
    1369       REAL(wp), INTENT(in   ), DIMENSION(:,:,:), OPTIONAL ::   palbi      ! all skies ice albedo  
    1370       REAL(wp), INTENT(in   ), DIMENSION(:,:  ), OPTIONAL ::   psst       ! sea surface temperature     [Celsius] 
    1371       REAL(wp), INTENT(in   ), DIMENSION(:,:,:), OPTIONAL ::   pist       ! ice surface temperature     [Kelvin] 
    1372       ! 
    1373       INTEGER ::   jl         ! dummy loop index 
     1365      REAL(wp), INTENT(in   ), DIMENSION(:,:,:), OPTIONAL ::   palbi   ! all skies ice albedo  
     1366      REAL(wp), INTENT(in   ), DIMENSION(:,:  ), OPTIONAL ::   psst    ! sea surface temperature  [Celsius] 
     1367      REAL(wp), INTENT(in   ), DIMENSION(:,:,:), OPTIONAL ::   pist    ! ice surface temperature  [Kelvin] 
     1368      ! 
     1369      INTEGER ::   jl   ! dummy loop index 
    13741370      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zcptn, ztmp, zicefr, zmsk 
    13751371      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zemp_tot, zemp_ice, zsprecip, ztprecip, zqns_tot, zqsr_tot 
     
    13781374      !!---------------------------------------------------------------------- 
    13791375      ! 
    1380       IF( nn_timing == 1 )  CALL timing_start('sbc_cpl_ice_flx') 
    1381       ! 
    1382       CALL wrk_alloc( jpi,jpj,     zcptn, ztmp, zicefr, zmsk, zemp_tot, zemp_ice, zsprecip, ztprecip, zqns_tot, zqsr_tot ) 
    1383       CALL wrk_alloc( jpi,jpj,jpl, zqns_ice, zqsr_ice, zdqns_ice ) 
     1376      IF( nn_timing == 1 )   CALL timing_start('sbc_cpl_ice_flx') 
     1377      ! 
     1378      CALL wrk_alloc( jpi,jpj,       zcptn, ztmp, zicefr, zmsk, zemp_tot, zemp_ice, zsprecip, ztprecip, zqns_tot, zqsr_tot ) 
     1379      CALL wrk_alloc( jpi,jpj,jpl,   zqns_ice, zqsr_ice, zdqns_ice ) 
    13841380 
    13851381      IF( ln_mixcpl )   zmsk(:,:) = 1. - xcplmask(:,:,0) 
     
    15541550      CALL wrk_dealloc( jpi,jpj, zevap, zsnw, zqns_oce, zqprec_ice, zqemp_oce )  
    15551551#else 
    1556  
    1557       ! clem: this formulation is certainly wrong... but better than it was... 
     1552      ! 
     1553      ! clem: this formulation is certainly wrong... but better than it was before... 
    15581554      zqns_tot(:,:) = zqns_tot(:,:)                       &            ! zqns_tot update over free ocean with: 
    15591555         &          - ztmp(:,:)                           &            ! remove the latent heat flux of solid precip. melting 
     
    15711567         qns_ice(:,:,:) = zqns_ice(:,:,:) 
    15721568      ENDIF 
    1573  
     1569      ! 
    15741570#endif 
    1575  
    15761571      !                                                      ! ========================= ! 
    15771572      SELECT CASE( TRIM( sn_rcv_qsr%cldes ) )                !      solar heat fluxes    !   (qsr) 
     
    16821677      fr2_i0(:,:) = ( 0.82 * ( 1.0 - cldf_ice ) + 0.65 * cldf_ice ) 
    16831678 
    1684       CALL wrk_dealloc( jpi,jpj,     zcptn, ztmp, zicefr, zmsk, zemp_tot, zemp_ice, zsprecip, ztprecip, zqns_tot, zqsr_tot ) 
    1685       CALL wrk_dealloc( jpi,jpj,jpl, zqns_ice, zqsr_ice, zdqns_ice ) 
    1686       ! 
    1687       IF( nn_timing == 1 )  CALL timing_stop('sbc_cpl_ice_flx') 
     1679      CALL wrk_dealloc( jpi,jpj,       zcptn, ztmp, zicefr, zmsk, zemp_tot, zemp_ice, zsprecip, ztprecip, zqns_tot, zqsr_tot ) 
     1680      CALL wrk_dealloc( jpi,jpj,jpl,   zqns_ice, zqsr_ice, zdqns_ice ) 
     1681      ! 
     1682      IF( nn_timing == 1 )   CALL timing_stop('sbc_cpl_ice_flx') 
    16881683      ! 
    16891684   END SUBROUTINE sbc_cpl_ice_flx 
     
    17081703      !!---------------------------------------------------------------------- 
    17091704      ! 
    1710       IF( nn_timing == 1 )  CALL timing_start('sbc_cpl_snd') 
    1711       ! 
    1712       CALL wrk_alloc( jpi,jpj, zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 ) 
    1713       CALL wrk_alloc( jpi,jpj,jpl, ztmp3, ztmp4 ) 
     1705      IF( nn_timing == 1 )   CALL timing_start('sbc_cpl_snd') 
     1706      ! 
     1707      CALL wrk_alloc( jpi,jpj,       zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 ) 
     1708      CALL wrk_alloc( jpi,jpj,jpl,   ztmp3, ztmp4 ) 
    17141709 
    17151710      isec = ( kt - nit000 ) * NINT(rdttra(1))        ! date of exchanges 
     
    20021997      !                                                        ! first T level thickness  
    20031998      IF( ssnd(jps_e3t1st )%laction )  THEN 
    2004          CALL cpl_snd( jps_e3t1st, isec, RESHAPE ( fse3t_n(:,:,1)   , (/jpi,jpj,1/) ), info ) 
     1999         CALL cpl_snd( jps_e3t1st, isec, RESHAPE ( e3t_n(:,:,1)   , (/jpi,jpj,1/) ), info ) 
    20052000      ENDIF 
    20062001      !                                                        ! Qsr fraction 
     
    20202015      IF( ssnd(jps_taum  )%laction )  CALL cpl_snd( jps_taum  , isec, RESHAPE ( taum, (/jpi,jpj,1/) ), info ) 
    20212016 
    2022       CALL wrk_dealloc( jpi,jpj, zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 ) 
    2023       CALL wrk_dealloc( jpi,jpj,jpl, ztmp3, ztmp4 ) 
    2024       ! 
    2025       IF( nn_timing == 1 )  CALL timing_stop('sbc_cpl_snd') 
     2017      CALL wrk_dealloc( jpi,jpj,       zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 ) 
     2018      CALL wrk_dealloc( jpi,jpj,jpl,   ztmp3, ztmp4 ) 
     2019      ! 
     2020      IF( nn_timing == 1 )   CALL timing_stop('sbc_cpl_snd') 
    20262021      ! 
    20272022   END SUBROUTINE sbc_cpl_snd 
Note: See TracChangeset for help on using the changeset viewer.