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 12613 for branches/UKMO – NEMO

Changeset 12613 for branches/UKMO


Ignore:
Timestamp:
2020-03-26T12:30:42+01:00 (4 years ago)
Author:
dcarneir
Message:

Including sea ice thickness in GO6 branch

Location:
branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM/CONFIG/SHARED/namelist_ref

    r11559 r12613  
    12981298    ln_asmdin      = .false. !  Logical switch for Direct Initialization (DI) 
    12991299    ln_asmiau      = .false. !  Logical switch for Incremental Analysis Updating (IAU) 
    1300     ln_seaiceinc   = .false. !  Logical switch for applying sea ice increments 
     1300    ln_seaiceinc   = .false. !  Logical switch for applying sea ice concentration increments 
     1301    ln_sitinc      = .false. !  Logical switch for applying sea ice thickness increments 
    13011302    ln_phytobal    = .false. !  Logical switch for phytoplankton multivariate balancing 
    13021303    ln_slchltotinc = .false. !  Logical switch for applying slchltot increments 
  • branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90

    r10302 r12613  
    2121   !!   dyn_asm_inc    : Apply the dynamic (u and v) increments 
    2222   !!   ssh_asm_inc    : Apply the SSH increment 
    23    !!   seaice_asm_inc : Apply the seaice increment 
     23   !!   seaice_asm_inc : Apply the sea ice concentration increment 
     24   !!   sit_asm_inc    : Apply the sea ice thickness increment 
    2425   !!---------------------------------------------------------------------- 
    2526   USE wrk_nemo         ! Memory Allocation 
     
    4142#if defined key_cice && defined key_asminc 
    4243   USE sbc_ice, ONLY : & ! CICE Ice model variables 
    43    & ndaice_da, nfresh_da, nfsalt_da 
     44   & ndaice_da, ndsit_da, nfresh_da, nfsalt_da 
    4445#endif 
    4546   USE sbc_oce          ! Surface boundary condition variables. 
     
    5455   PUBLIC   dyn_asm_inc    !: Apply the dynamic (u and v) increments 
    5556   PUBLIC   ssh_asm_inc    !: Apply the SSH increment 
    56    PUBLIC   seaice_asm_inc !: Apply the seaice increment 
     57   PUBLIC   seaice_asm_inc !: Apply the seaice concentration increment 
     58   PUBLIC   sit_asm_inc    !: Apply the seaice thickness increment 
    5759   PUBLIC   bgc_asm_inc    !: Apply the biogeochemistry increments 
    5860 
     
    6365#endif 
    6466   LOGICAL, PUBLIC :: ln_bkgwri = .FALSE.      !: No output of the background state fields 
     67   LOGICAL, PUBLIC :: ln_avgbkg = .FALSE.      !: No output of the mean background state fields 
    6568   LOGICAL, PUBLIC :: ln_asmiau = .FALSE.      !: No applying forcing with an assimilation increment 
    6669   LOGICAL, PUBLIC :: ln_asmdin = .FALSE.      !: No direct initialization 
     
    6871   LOGICAL, PUBLIC :: ln_dyninc = .FALSE.      !: No dynamics (u and v) assimilation increments 
    6972   LOGICAL, PUBLIC :: ln_sshinc = .FALSE.      !: No sea surface height assimilation increment 
    70    LOGICAL, PUBLIC :: ln_seaiceinc             !: No sea ice concentration increment 
     73   LOGICAL, PUBLIC :: ln_seaiceinc = .FALSE.   !: No sea ice concentration increment 
     74   LOGICAL, PUBLIC :: ln_sitinc = .FALSE.      !: No sea ice thickness increment 
    7175   LOGICAL, PUBLIC :: lk_bgcinc = .FALSE.      !: No biogeochemistry increments 
    7276   LOGICAL, PUBLIC :: ln_salfix = .FALSE.      !: Apply minimum salinity check 
     
    9498   REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   ssh_bkg, ssh_bkginc   ! Background sea surface height and its increment 
    9599   REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   seaice_bkginc         ! Increment to the background sea ice conc 
     100   REAL(wp), DIMENSION(:,:), ALLOCATABLE ::   sit_bkginc            ! Increment to the background sea ice thickness 
    96101 
    97102   !! * Substitutions 
     
    136141      REAL(wp), POINTER, DIMENSION(:,:) ::   hdiv   ! 2D workspace 
    137142      !! 
    138       NAMELIST/nam_asminc/ ln_bkgwri, ln_balwri,                           & 
     143      NAMELIST/nam_asminc/ ln_bkgwri, ln_avgbkg, ln_balwri,                & 
    139144         &                 ln_trainc, ln_dyninc, ln_sshinc,                & 
    140145         &                 ln_phytobal, ln_slchltotinc, ln_slchldiainc,    & 
     
    147152         &                 nitbkg, nitdin, nitiaustr, nitiaufin, niaufn,   & 
    148153         &                 ln_salfix, salfixmin, nn_divdmp,                & 
    149          &                 ln_seaiceinc, ln_temnofreeze,                   & 
     154         &                 ln_seaiceinc, ln_sitinc, ln_temnofreeze,        & 
    150155         &                 mld_choice_bgc, rn_maxchlinc 
    151156      !!---------------------------------------------------------------------- 
     
    155160      !----------------------------------------------------------------------- 
    156161      ln_seaiceinc = .FALSE. 
     162      ln_sitinc = .FALSE. 
    157163      ln_temnofreeze = .FALSE. 
    158164 
     
    173179         WRITE(numout,*) '   Namelist nam_asminc : set assimilation increment parameters' 
    174180         WRITE(numout,*) '      Logical switch for writing out background state          ln_bkgwri = ', ln_bkgwri 
     181         WRITE(numout,*) '      Logical switch for writing mean background state         ln_avgbkg = ', ln_avgbkg 
    175182         WRITE(numout,*) '      Logical switch for writing out balancing increments      ln_balwri = ', ln_balwri 
    176183         WRITE(numout,*) '      Logical switch for applying tracer increments            ln_trainc = ', ln_trainc 
    177184         WRITE(numout,*) '      Logical switch for applying velocity increments          ln_dyninc = ', ln_dyninc 
    178185         WRITE(numout,*) '      Logical switch for applying SSH increments               ln_sshinc = ', ln_sshinc 
     186         WRITE(numout,*) '      Logical switch for applying SIC increments               ln_seaiceinc = ', ln_seaiceinc 
     187         WRITE(numout,*) '      Logical switch for applying SIT increments               ln_sitinc = ', ln_sitinc 
    179188         WRITE(numout,*) '      Logical switch for Direct Initialization (DI)            ln_asmdin = ', ln_asmdin 
    180          WRITE(numout,*) '      Logical switch for applying sea ice increments        ln_seaiceinc = ', ln_seaiceinc 
     189         WRITE(numout,*) '      Logical switch for Incremental Analysis Updating (IAU)   ln_asmiau = ', ln_asmiau 
     190         WRITE(numout,*) '      Timestep of background in [0,nitend-nit000-1]            nitbkg    = ', nitbkg 
     191         WRITE(numout,*) '      Timestep of background for DI in [0,nitend-nit000-1]     nitdin    = ', nitdin 
     192         WRITE(numout,*) '      Timestep of start of IAU interval in [0,nitend-nit000-1] nitiaustr = ', nitiaustr 
     193         WRITE(numout,*) '      Timestep of end of IAU interval in [0,nitend-nit000-1]   nitiaufin = ', nitiaufin 
     194         WRITE(numout,*) '      Type of IAU weighting function                           niaufn    = ', niaufn 
     195         WRITE(numout,*) '      Logical switch for ensuring that the sa > salfixmin      ln_salfix = ', ln_salfix 
     196         WRITE(numout,*) '      Minimum salinity after applying the increments           salfixmin = ', salfixmin 
    181197         WRITE(numout,*) '      Logical switch for phytoplankton balancing             ln_phytobal = ', ln_phytobal 
    182198         WRITE(numout,*) '      Logical switch for applying slchltot increments     ln_slchltotinc = ', ln_slchltotinc 
     
    197213         WRITE(numout,*) '      Logical switch for applying pph increments               ln_pphinc = ', ln_pphinc 
    198214         WRITE(numout,*) '      Logical switch for applying po2 increments               ln_po2inc = ', ln_po2inc 
    199          WRITE(numout,*) '      Logical switch for Incremental Analysis Updating (IAU)   ln_asmiau = ', ln_asmiau 
    200          WRITE(numout,*) '      Timestep of background in [0,nitend-nit000-1]            nitbkg    = ', nitbkg 
    201          WRITE(numout,*) '      Timestep of background for DI in [0,nitend-nit000-1]     nitdin    = ', nitdin 
    202          WRITE(numout,*) '      Timestep of start of IAU interval in [0,nitend-nit000-1] nitiaustr = ', nitiaustr 
    203          WRITE(numout,*) '      Timestep of end of IAU interval in [0,nitend-nit000-1]   nitiaufin = ', nitiaufin 
    204          WRITE(numout,*) '      Type of IAU weighting function                           niaufn    = ', niaufn 
    205          WRITE(numout,*) '      Logical switch for ensuring that the sa > salfixmin      ln_salfix = ', ln_salfix 
    206          WRITE(numout,*) '      Minimum salinity after applying the increments           salfixmin = ', salfixmin 
    207215         WRITE(numout,*) '      Choice of MLD for BGC assimilation                  mld_choice_bgc = ', mld_choice_bgc 
    208216         WRITE(numout,*) '      Maximum absolute chlorophyll increment (<=0 = off)    rn_maxchlinc = ', rn_maxchlinc 
     
    264272      IF (      ( ( .NOT. ln_asmdin ).AND.( .NOT. ln_asmiau ) ) & 
    265273         & .AND.( ( ln_trainc ).OR.( ln_dyninc ).OR.( ln_sshinc ).OR.( ln_seaiceinc ).OR. & 
    266          &        ( lk_bgcinc ) )) & 
     274         &        ( ln_sitinc ).OR.( lk_bgcinc ) )) & 
    267275         & CALL ctl_stop( ' One or more of ln_trainc, ln_dyninc, ln_sshinc, ln_seaiceinc,', & 
    268          &                ' ln_(bgc-variable)inc is set to .true.', & 
     276         &                ' ln_sitinc and ln_(bgc-variable)inc is set to .true.', & 
    269277         &                ' but ln_asmdin and ln_asmiau are both set to .false. :', & 
    270278         &                ' Inconsistent options') 
     
    275283 
    276284      IF ( ( .NOT. ln_trainc ).AND.( .NOT. ln_dyninc ).AND.( .NOT. ln_sshinc ).AND.( .NOT. ln_seaiceinc ) & 
    277          & .AND.( .NOT. lk_bgcinc ) )  & 
     285         & .AND.( .NOT. ln_sitinc ).AND.( .NOT. lk_bgcinc ) )  & 
    278286         & CALL ctl_warn( ' ln_trainc, ln_dyninc, ln_sshinc, ln_seaiceinc,', & 
    279          &                ' ln_(bgc-variable)inc are set to .false. :', & 
     287         &                ' ln_sitinc and ln_(bgc-variable)inc are set to .false. :', & 
    280288         &                ' The assimilation increments are not applied') 
    281289 
     
    377385      !-------------------------------------------------------------------- 
    378386 
    379       ALLOCATE( t_bkginc(jpi,jpj,jpk) ) 
    380       ALLOCATE( s_bkginc(jpi,jpj,jpk) ) 
    381       ALLOCATE( u_bkginc(jpi,jpj,jpk) ) 
    382       ALLOCATE( v_bkginc(jpi,jpj,jpk) ) 
    383       ALLOCATE( ssh_bkginc(jpi,jpj)   ) 
    384       ALLOCATE( seaice_bkginc(jpi,jpj)) 
     387      IF ( ln_trainc ) THEN 
     388         ALLOCATE( t_bkginc(jpi,jpj,jpk) ) 
     389         ALLOCATE( s_bkginc(jpi,jpj,jpk) ) 
     390         t_bkginc(:,:,:) = 0.0 
     391         s_bkginc(:,:,:) = 0.0 
     392      ENDIF 
     393      IF ( ln_dyninc ) THEN  
     394         ALLOCATE( u_bkginc(jpi,jpj,jpk) ) 
     395         ALLOCATE( v_bkginc(jpi,jpj,jpk) ) 
     396         u_bkginc(:,:,:) = 0.0 
     397         v_bkginc(:,:,:) = 0.0 
     398      ENDIF 
     399      IF ( ln_sshinc ) THEN 
     400         ALLOCATE( ssh_bkginc(jpi,jpj)   ) 
     401         ssh_bkginc(:,:) = 0.0 
     402      ENDIF 
     403      IF ( ln_seaiceinc ) THEN  
     404         ALLOCATE( seaice_bkginc(jpi,jpj)) 
     405         seaice_bkginc(:,:) = 0.0 
     406      ENDIF 
     407      IF ( ln_sitinc ) THEN  
     408         ALLOCATE( sit_bkginc(jpi,jpj)) 
     409         sit_bkginc(:,:) = 0.0 
     410      ENDIF 
    385411#if defined key_asminc 
    386412      ALLOCATE( ssh_iau(jpi,jpj)      ) 
    387 #endif 
    388       t_bkginc(:,:,:) = 0.0 
    389       s_bkginc(:,:,:) = 0.0 
    390       u_bkginc(:,:,:) = 0.0 
    391       v_bkginc(:,:,:) = 0.0 
    392       ssh_bkginc(:,:) = 0.0 
    393       seaice_bkginc(:,:) = 0.0 
    394 #if defined key_asminc 
    395413      ssh_iau(:,:)    = 0.0 
    396414#endif 
    397415      IF ( ( ln_trainc ).OR.( ln_dyninc ).OR.( ln_sshinc ).OR.( ln_seaiceinc ) & 
    398          &  .OR.( lk_bgcinc ) ) THEN 
     416         &  .OR.( ln_sitinc ).OR.( lk_bgcinc ) ) THEN 
    399417 
    400418         !-------------------------------------------------------------------- 
     
    459477            ! to allow for differences in masks 
    460478            WHERE( ABS( ssh_bkginc(:,:) ) > 1.0e+10 ) ssh_bkginc(:,:) = 0.0 
     479         ENDIF 
     480 
     481         IF ( ln_sitinc ) THEN 
     482            CALL iom_get( inum, jpdom_autoglo, 'bckinsit', sit_bkginc, 1 ) 
     483            ! Apply the masks 
     484            sit_bkginc(:,:) = sit_bkginc(:,:) * tmask(:,:,1) 
     485            ! Set missing increments to 0.0 rather than 1e+20 
     486            ! to allow for differences in masks 
     487            WHERE( ABS( sit_bkginc(:,:) ) > 1.0e+10 ) sit_bkginc(:,:) = 0.0 
    461488         ENDIF 
    462489 
     
    827854      ! Perhaps the following call should be in step 
    828855      IF   ( ln_seaiceinc  )   CALL seaice_asm_inc ( kt )   ! apply sea ice concentration increment 
     856      IF   ( ln_sitinc  )      CALL sit_asm_inc ( kt )      ! apply sea ice thickness increment 
    829857      ! 
    830858   END SUBROUTINE tra_asm_inc 
     
    9881016   END SUBROUTINE ssh_asm_inc 
    9891017 
     1018   SUBROUTINE sit_asm_inc( kt, kindic ) 
     1019      !!---------------------------------------------------------------------- 
     1020      !!                    ***  ROUTINE sit_asm_inc  *** 
     1021      !!           
     1022      !! ** Purpose : Apply the sea ice thickness assimilation increment. 
     1023      !! 
     1024      !! ** Method  : Direct initialization or Incremental Analysis Updating. 
     1025      !! 
     1026      !! ** Action  :  
     1027      !! 
     1028      !!---------------------------------------------------------------------- 
     1029      IMPLICIT NONE 
     1030      ! 
     1031      INTEGER, INTENT(in)           ::   kt   ! Current time step 
     1032      INTEGER, INTENT(in), OPTIONAL ::   kindic   ! flag for disabling the deallocation 
     1033      ! 
     1034      INTEGER  ::   it 
     1035      REAL(wp) ::   zincwgt   ! IAU weight for current time step 
     1036      !!---------------------------------------------------------------------- 
     1037 
     1038      IF ( ln_asmiau ) THEN 
     1039 
     1040         !-------------------------------------------------------------------- 
     1041         ! Incremental Analysis Updating 
     1042         !-------------------------------------------------------------------- 
     1043 
     1044         IF ( ( kt >= nitiaustr_r ).AND.( kt <= nitiaufin_r ) ) THEN 
     1045 
     1046            it = kt - nit000 + 1 
     1047            zincwgt = wgtiau(it)      ! IAU weight for the current time step  
     1048            ! note this is not a tendency so should not be divided by rdt (as with the tracer and other increments) 
     1049            ! EF: Actually CICE is expecting a tendency so is divided by rdt below 
     1050 
     1051            IF(lwp) THEN 
     1052               WRITE(numout,*)  
     1053               WRITE(numout,*) 'sit_asm_inc : sea ice thick IAU at time step = ', & 
     1054                  &  kt,' with IAU weight = ', wgtiau(it) 
     1055               WRITE(numout,*) '~~~~~~~~~~~~' 
     1056            ENDIF 
     1057 
     1058#if defined key_cice && defined key_asminc 
     1059            ! Sea-ice thickness : CICE case. Pass ice thickness increment tendency into CICE 
     1060            ndsit_da(:,:) = sit_bkginc(:,:) * zincwgt / rdt 
     1061#endif 
     1062 
     1063            IF ( kt == nitiaufin_r ) THEN 
     1064               DEALLOCATE( sit_bkginc ) 
     1065            ENDIF 
     1066 
     1067         ELSE 
     1068 
     1069#if defined key_cice && defined key_asminc 
     1070            ! Sea-ice thickness : CICE case. Zero ice increment tendency into CICE 
     1071            ndsit_da(:,:) = 0.0_wp 
     1072#endif 
     1073 
     1074         ENDIF 
     1075 
     1076      ELSEIF ( ln_asmdin ) THEN 
     1077 
     1078         !-------------------------------------------------------------------- 
     1079         ! Direct Initialization 
     1080         !-------------------------------------------------------------------- 
     1081 
     1082         IF ( kt == nitdin_r ) THEN 
     1083 
     1084            neuler = 0                    ! Force Euler forward step 
     1085 
     1086#if defined key_cice && defined key_asminc 
     1087            ! Sea-ice thickness : CICE case. Pass ice thickness increment tendency into CICE 
     1088           ndsit_da(:,:) = sit_bkginc(:,:) / rdt 
     1089#endif 
     1090           IF ( .NOT. PRESENT(kindic) ) THEN 
     1091              DEALLOCATE( sit_bkginc ) 
     1092           END IF 
     1093 
     1094         ELSE 
     1095 
     1096#if defined key_cice && defined key_asminc 
     1097            ! Sea-ice thicnkness : CICE case. Zero ice thickness increment tendency into CICE  
     1098            ndsit_da(:,:) = 0.0_wp 
     1099#endif 
     1100          
     1101         ENDIF 
     1102 
     1103      ENDIF 
     1104 
     1105   END SUBROUTINE sit_asm_inc 
    9901106 
    9911107   SUBROUTINE seaice_asm_inc( kt, kindic ) 
     
    9931109      !!                    ***  ROUTINE seaice_asm_inc  *** 
    9941110      !!           
    995       !! ** Purpose : Apply the sea ice assimilation increment. 
     1111      !! ** Purpose : Apply the sea ice concentration assimilation increment. 
    9961112      !! 
    9971113      !! ** Method  : Direct initialization or Incremental Analysis Updating. 
  • branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90

    r10302 r12613  
    105105   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tsfc_ice           !: sea-ice surface skin temperature (on categories) 
    106106   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   kn_ice             !: sea-ice surface layer thermal conductivity (on cats) 
     107   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   thick_iu           !: ice thickness at NEMO U point 
     108   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   thick_iv           !: ice thickness at NEMO V point 
     109   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   thick_su           !: snow depth at NEMO U point 
     110   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   thick_sv           !: snow depth at NEMO V point 
    107111 
    108112   ! variables used in the coupled interface 
     
    116120#if defined key_asminc 
    117121   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   ndaice_da          !: NEMO fresh water flux to ocean due to data assim 
     122   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   ndsit_da           !: NEMO ice thickness change due to data assim 
    118123   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   nfresh_da          !: NEMO salt flux to ocean due to data assim 
    119124   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   nfsalt_da          !: NEMO ice concentration change/second from data assim 
     
    171176                wndj_ice(jpi,jpj)     , nfrzmlt(jpi,jpj)      , ss_iou(jpi,jpj)       , & 
    172177                ss_iov(jpi,jpj)       , fr_iu(jpi,jpj)        , fr_iv(jpi,jpj)        , & 
     178                thick_iu(jpi,jpj)     , thick_iv(jpi,jpj)     ,                         & 
     179                thick_su(jpi,jpj)     , thick_sv(jpi,jpj)     ,                         & 
     180                ht_i(jpi,jpj,ncat)    , ht_s(jpi,jpj,ncat)    ,                         & 
    173181                a_i(jpi,jpj,ncat)     , topmelt(jpi,jpj,ncat) , botmelt(jpi,jpj,ncat) , & 
    174182#if defined key_asminc 
    175183                ndaice_da(jpi,jpj)    , nfresh_da(jpi,jpj)    , nfsalt_da(jpi,jpj)    , & 
     184                ndsit_da(jpi,jpj)     ,                                                 & 
    176185#endif 
    177186                sstfrz(jpi,jpj)       , STAT= ierr(1) ) 
  • branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r8046 r12613  
    121121   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sprecip           !: solid precipitation                          [Kg/m2/s] 
    122122   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fr_i              !: ice fraction = 1 - lead fraction      (between 0 to 1) 
     123   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   thick_i           !: ice thickness [m] 
     124   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   thick_s           !: snow depth [m] 
     125   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   vol_i             !: ice volume [m3] 
    123126#if defined key_cpl_carbon_cycle 
    124127   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   atm_co2           !: atmospheric pCO2                             [ppm] 
     
    196199         ! 
    197200      ALLOCATE( tprecip(jpi,jpj) , sprecip(jpi,jpj) , fr_i(jpi,jpj) ,     & 
     201         & thick_i(jpi,jpj) , thick_s(jpi,jpj) , vol_i(jpi,jpj) ,         &   
    198202#if defined key_cpl_carbon_cycle 
    199203         &      atm_co2(jpi,jpj) ,                                        & 
  • branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90

    r10302 r12613  
    5757                flatn_f,fsurfn_f,fcondtopn_f,                    & 
    5858#ifdef key_asminc 
    59                 daice_da,fresh_da,fsalt_da,                    & 
     59                daice_da,dhi_da,fresh_da,fsalt_da,               & 
    6060#endif 
    6161                uatm,vatm,wind,fsw,flw,Tair,potT,Qa,rhoa,zlvl,   & 
     
    250250      CALL lbc_lnk ( fr_iu , 'U', 1. ) 
    251251      CALL lbc_lnk ( fr_iv , 'V', 1. ) 
     252 
     253! Snow and ice thickness 
     254! vice, vsno is volume per unit area of grid cell = thickness 
     255      CALL cice2nemo(vice,thick_i,'T', 1. ) 
     256      CALL cice2nemo(vsno,thick_s,'T', 1. ) 
     257      
     258      IF ( (ksbc == jp_flx) .OR. (ksbc == jp_purecpl) ) THEN 
     259         DO jl = 1,ncat 
     260            CALL cice2nemo(vsnon(:,:,jl,:),ht_s(:,:,jl),'T', 1. ) 
     261            CALL cice2nemo(vicen(:,:,jl,:),ht_i(:,:,jl),'T', 1. ) 
     262         ENDDO 
     263      ENDIF 
     264 
     265! T point to U point 
     266! T point to V point 
     267 
     268! Sea ice thickness 
     269      thick_iu(:,:)=0.0 
     270      thick_iv(:,:)=0.0 
     271      DO jj=1,jpjm1 
     272         DO ji=1,jpim1 
     273            thick_iu(ji,jj)=0.5*(thick_i(ji,jj)+thick_i(ji+1,jj))*umask(ji,jj,1) 
     274            thick_iv(ji,jj)=0.5*(thick_i(ji,jj)+thick_i(ji,jj+1))*vmask(ji,jj,1) 
     275         ENDDO 
     276      ENDDO 
     277 
     278      CALL lbc_lnk ( thick_iu , 'U', 1. ) 
     279      CALL lbc_lnk ( thick_iv , 'V', 1. ) 
     280 
     281! Snow depth 
     282      thick_su(:,:)=0.0 
     283      thick_sv(:,:)=0.0 
     284      DO jj=1,jpjm1 
     285         DO ji=1,jpim1 
     286            thick_su(ji,jj)=0.5*(thick_s(ji,jj)+thick_s(ji+1,jj))*umask(ji,jj,1) 
     287            thick_sv(ji,jj)=0.5*(thick_s(ji,jj)+thick_s(ji,jj+1))*vmask(ji,jj,1) 
     288         ENDDO 
     289      ENDDO 
     290 
     291      CALL lbc_lnk ( thick_su , 'U', 1. ) 
     292      CALL lbc_lnk ( thick_sv , 'V', 1. )      
    252293 
    253294      !                                      ! embedded sea ice 
     
    311352      nfsalt_da(:,:) = 0.0    
    312353      ndaice_da(:,:) = 0.0          
     354      ndsit_da(:,:)  = 0.0          
    313355#endif 
    314356      ! 
     
    469511      ztmp(:,:)=ndaice_da(:,:)*tmask(:,:,1) 
    470512      Call nemo2cice(ztmp,daice_da,'T', 1. ) 
     513!Ice thickness change (from assimilation) 
     514      ztmp(:,:)=ndsit_da(:,:)*tmask(:,:,1) 
     515      Call nemo2cice(ztmp,dhi_da,'T', 1. ) 
    471516#endif  
    472517 
Note: See TracChangeset for help on using the changeset viewer.