Changeset 5119


Ignore:
Timestamp:
2015-03-03T14:51:10+01:00 (6 years ago)
Author:
timgraham
Message:

Changes for coupling with meltponds

Location:
branches/2015/dev_r5021_UKMO1_CICE_coupling/NEMOGCM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5021_UKMO1_CICE_coupling/NEMOGCM/CONFIG/SHARED/namelist_ref

    r5031 r5119  
    362362   sn_rcv_cal    =       'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
    363363   sn_rcv_co2    =       'coupled'              ,    'no'    ,     ''      ,         ''          ,   '' 
     364   sn_rcv_ts_ice =       'none'                 ,    'no'    ,     ''      ,         ''          ,   '' 
    364365! 
    365366   nn_cplmodel   =     1     !  Maximum number of models to/from which NEMO is potentialy sending/receiving data 
  • branches/2015/dev_r5021_UKMO1_CICE_coupling/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r5030 r5119  
    8787   INTEGER, PARAMETER ::   jpr_topm   = 32            ! topmeltn 
    8888   INTEGER, PARAMETER ::   jpr_botm   = 33            ! botmeltn 
    89    INTEGER, PARAMETER ::   jprcv      = 33            ! total number of fields received 
     89   INTEGER, PARAMETER ::   jpr_ts_ice = 34            ! skin temperature of sea-ice (used for melt-ponds) 
     90   INTEGER, PARAMETER ::   jprcv      = 34            ! total number of fields received 
    9091 
    9192   INTEGER, PARAMETER ::   jps_fice   =  1            ! ice fraction  
     
    106107   INTEGER, PARAMETER ::   jps_a_p    = 16            ! meltpond fraction   
    107108   INTEGER, PARAMETER ::   jps_ht_p   = 17            ! meltpond depth (m)  
    108    INTEGER, PARAMETER ::   jpsnd      = 18            ! total number of fields sended 
     109   INTEGER, PARAMETER ::   jpsnd      = 18            ! total number of fields sent 
    109110   !                                                         !!** namelist namsbc_cpl ** 
    110111   TYPE ::   FLD_C 
     
    119120   ! Received from the atmosphere                     ! 
    120121   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 
    121    TYPE(FLD_C) ::   sn_rcv_cal, sn_rcv_iceflx, sn_rcv_co2                         
     122   TYPE(FLD_C) ::   sn_rcv_cal, sn_rcv_iceflx, sn_rcv_co2, sn_rcv_ts_ice  
    122123   ! Other namelist parameters                        ! 
    123124   INTEGER     ::   nn_cplmodel            ! Maximum number of models to/from which NEMO is potentialy sending/receiving data 
     
    191192         &                  sn_rcv_w10m, sn_rcv_taumod, sn_rcv_tau  , sn_rcv_dqnsdt, sn_rcv_qsr,      & 
    192193         &                  sn_rcv_qns , sn_rcv_emp   , sn_rcv_rnf  , sn_rcv_cal   , sn_rcv_iceflx,   & 
    193          &                  sn_rcv_co2 , nn_cplmodel , ln_usecplmask 
     194         &                  sn_rcv_co2 , sn_rcv_ts_ice, nn_cplmodel , ln_usecplmask 
    194195      !!--------------------------------------------------------------------- 
    195196      ! 
     
    449450         srcv(jpr_topm:jpr_botm)%laction = .TRUE. 
    450451      ENDIF 
     452       
     453#if defined key_cice && ! defined key_cice4 
     454      !                                                      ! ----------------------------- ! 
     455      !                                                      !  sea-ice skin temperature     !    
     456      !                                                      !  used in meltpond scheme      ! 
     457      !                                                      !  May be calculated in Atm     ! 
     458      !                                                      ! ----------------------------- ! 
     459      srcv(jpr_ts_ice)%clname = 'OTsfIce' 
     460      IF ( TRIM( sn_rcv_ts_ice%cldes ) == 'ice' ) srcv(jpr_ts_ice)%laction = .TRUE. 
     461      IF ( TRIM( sn_rcv_ts_ice%clcat ) == 'yes' ) srcv(jpr_ts_ice)%nct = jpl 
     462      !TODO: Should there be a consistency check here? 
     463#endif 
    451464 
    452465      ! Allocate all parts of frcv used for received fields 
     
    826839#endif 
    827840 
     841 
     842#if defined key_cice && ! defined key_cice4 
     843      !  ! Sea ice surface skin temp: 
     844      ! Use tn_ice for this as it's not used for anything else in cice case 
     845      IF( srcv(jpr_ts_ice)%laction ) THEN 
     846        DO jl = 1, jpl 
     847          DO jj = 1, jpj 
     848            DO ji = 1, jpi 
     849              IF (frcv(jpr_ts_ice)%z3(ji,jj,jl) > 0.0) THEN 
     850                tn_ice(ji,jj,jl) = 0.0 
     851              ELSE IF (frcv(jpr_ts_ice)%z3(ji,jj,jl) < -60.0) THEN 
     852                tn_ice(ji,jj,jl) = -60.0 
     853              ELSE 
     854                tn_ice(ji,jj,jl) = frcv(jpr_ts_ice)%z3(ji,jj,jl) 
     855              ENDIF 
     856            END DO 
     857          END DO 
     858        END DO 
     859      ENDIF 
     860#endif 
    828861      !                                                      ! ========================= ! 
    829862      IF( k_ice <= 1 ) THEN                                  !  heat & freshwater fluxes ! (Ocean only case) 
     
    14901523      ! 
    14911524      ! Send meltpond fields  
    1492       SELECT CASE( sn_snd_mpnd%cldes)  
    1493       CASE( 'weighted ice' )  
    1494          SELECT CASE( sn_snd_mpnd%clcat )  
    1495          CASE( 'yes' )  
    1496             ztmp3(:,:,1:jpl) =  a_p(:,:,1:jpl) * a_i(:,:,1:jpl)  
    1497             ztmp4(:,:,1:jpl) =  ht_p(:,:,1:jpl) * a_i(:,:,1:jpl)  
    1498          CASE( 'no' )  
    1499             ztmp3(:,:,:) = 0.0  
    1500             ztmp4(:,:,:) = 0.0  
    1501             DO jl=1,jpl  
    1502               ztmp3(:,:,1) = ztmp3(:,:,1) + a_p(:,:,jpl) * a_i(:,:,jpl)  
    1503               ztmp4(:,:,1) = ztmp4(:,:,1) + ht_p(:,:,jpl) * a_i(:,:,jpl)  
    1504             ENDDO  
    1505          CASE default    ;   CALL ctl_stop( 'sbc_cpl_mpd: wrong definition of sn_snd_mpnd%clcat' )  
     1525      IF( ssnd(jps_a_p)%laction .OR. ssnd(jps_ht_p)%laction ) THEN 
     1526         SELECT CASE( sn_snd_mpnd%cldes)  
     1527         CASE( 'weighted ice' )  
     1528            SELECT CASE( sn_snd_mpnd%clcat )  
     1529            CASE( 'yes' )  
     1530               ztmp3(:,:,1:jpl) =  a_p(:,:,1:jpl) * a_i(:,:,1:jpl)  
     1531               ztmp4(:,:,1:jpl) =  ht_p(:,:,1:jpl) * a_i(:,:,1:jpl)  
     1532            CASE( 'no' )  
     1533               ztmp3(:,:,:) = 0.0  
     1534               ztmp4(:,:,:) = 0.0  
     1535               DO jl=1,jpl  
     1536                 ztmp3(:,:,1) = ztmp3(:,:,1) + a_p(:,:,jpl) * a_i(:,:,jpl)  
     1537                 ztmp4(:,:,1) = ztmp4(:,:,1) + ht_p(:,:,jpl) * a_i(:,:,jpl)  
     1538               ENDDO  
     1539            CASE default    ;   CALL ctl_stop( 'sbc_cpl_mpd: wrong definition of sn_snd_mpnd%clcat' )  
     1540            END SELECT  
     1541         CASE( 'ice only' )     
     1542            ztmp3(:,:,1:jpl) = a_p(:,:,1:jpl)  
     1543            ztmp4(:,:,1:jpl) = ht_p(:,:,1:jpl)  
    15061544         END SELECT  
    1507       CASE( 'ice only' )     
    1508          ztmp3(:,:,1:jpl) = a_p(:,:,1:jpl)  
    1509          ztmp4(:,:,1:jpl) = ht_p(:,:,1:jpl)  
    1510       END SELECT  
    1511       IF( ssnd(jps_a_p)%laction )   CALL cpl_prism_snd( jps_a_p, isec, ztmp3, info )     
    1512       IF( ssnd(jps_ht_p)%laction )   CALL cpl_prism_snd( jps_ht_p, isec, ztmp4, info )     
     1545         IF( ssnd(jps_a_p)%laction )   CALL cpl_prism_snd( jps_a_p, isec, ztmp3, info )     
     1546         IF( ssnd(jps_ht_p)%laction )   CALL cpl_prism_snd( jps_ht_p, isec, ztmp4, info )     
     1547      ENDIF 
    15131548      ! 
    15141549      ! 
Note: See TracChangeset for help on using the changeset viewer.