Changeset 3480


Ignore:
Timestamp:
2012-10-02T11:28:15+02:00 (8 years ago)
Author:
charris
Message:

#953 Removing salinity dependence of freezing point for the moment (will be implemented more completely in NEMO3.6).
Reversed r3356 of /branches/2012/dev_3352_UKMO8_CICE/NEMOGCM

Location:
branches/2012/dev_3352_UKMO8_CICE/NEMOGCM/NEMO/OPA_SRC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_3352_UKMO8_CICE/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90

    r3476 r3480  
    1616   USE domvvl 
    1717   USE phycst, only : rcp, rau0 
    18    USE eosbn2, only : tfreez 
    1918   USE in_out_manager  ! I/O manager 
    2019   USE lib_mpp         ! distributed memory computing library 
     
    4443                flatn_f,fsurfn_f,fcondtopn_f,                    & 
    4544                uatm,vatm,wind,fsw,flw,Tair,potT,Qa,rhoa,zlvl,   & 
    46                 swvdr,swvdf,swidr,swidf,Tf 
     45                swvdr,swvdf,swidr,swidf 
    4746   USE ice_forcing, only: frcvdr,frcvdf,frcidr,frcidf 
    4847   USE ice_atmo, only: calc_strair 
     
    150149      !!--------------------------------------------------------------------- 
    151150 
    152       INTEGER  ::   ji, jj, jk, jl             ! dummy loop indices 
    153       REAL(wp), DIMENSION(:,:,:), POINTER :: ztmp 
     151      INTEGER  ::   ji, jj, jl                        ! dummy loop indices 
    154152 
    155153      IF( nn_timing == 1 )  CALL timing_start('cice_sbc_init') 
    156154      ! 
    157       CALL wrk_alloc( jpi,jpj,jpk, ztmp ) 
    158155      IF(lwp) WRITE(numout,*)'cice_sbc_init' 
    159156 
     
    177174      IF( sbc_ice_cice_alloc() /= 0 )   CALL ctl_stop( 'STOP', 'sbc_ice_cice_alloc : unable to allocate cice arrays' ) 
    178175 
    179 ! Set freezing temperatures and ensure consistency between NEMO and CICE  
    180 ! (-1.8 for fully coupled, salinity dependence otherwise) 
    181 ! Setting of Tf here or in cice_sbc_in will over-write anything already done in cice_init 
    182176! Ensure ocean temperatures are nowhere below freezing if not a NEMO restart 
    183  
    184       IF (nsbc == 5) THEN 
    185          ztmp(:,:,:)=-1.8 
    186          CALL nemo2cice(ztmp(:,:,1),Tf,'T', 1. )     ! Set in CICE here as won't be updated in cice_sbc_in   
    187       ELSE 
    188          DO jk=1,jpk 
    189             ztmp(:,:,jk)= tfreez(tsn(:,:,jk,jp_sal),fsdepw(:,:,jk)) 
    190          ENDDO 
    191       ENDIF 
    192  
    193177      IF( .NOT. ln_rstart ) THEN 
    194          tsn(:,:,:,jp_tem) = MAX (tsn(:,:,:,jp_tem),ztmp) 
     178         tsn(:,:,:,jp_tem) = MAX (tsn(:,:,:,jp_tem),Tocnfrz) 
    195179         tsb(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) 
    196180      ENDIF 
     
    217201      CALL lbc_lnk ( fr_iu , 'U', 1. ) 
    218202      CALL lbc_lnk ( fr_iv , 'V', 1. ) 
    219       ! 
    220       CALL wrk_dealloc( jpi,jpj,jpk, ztmp ) 
    221203      ! 
    222204      IF( nn_timing == 1 )  CALL timing_stop('cice_sbc_init') 
     
    375357      CALL nemo2cice(ztmp,frain,'T', 1. )  
    376358 
    377 ! Recalculate freezing temperature and send to CICE except for fully coupled when 
    378 ! it remains as -1.8 throughout the run 
    379       IF ( nsbc==5 ) THEN 
    380          ztmp(:,:)=-1.8 
    381       ELSE 
    382          ztmp(:,:)=tfreez(sss_m(:,:)) 
    383          CALL nemo2cice(ztmp,Tf,'T', 1. ) 
    384       ENDIF 
    385  
    386359! Freezing/melting potential 
    387360! Calculated over NEMO leapfrog timestep (hence 2*dt) 
    388       nfrzmlt(:,:)=rau0*rcp*fse3t_m(:,:,1)*(ztmp(:,:)-sst_m(:,:))/(2.0*dt) 
    389       CALL nemo2cice(nfrzmlt,frzmlt,'T', 1. ) 
     361      nfrzmlt(:,:)=rau0*rcp*fse3t_m(:,:,1)*(Tocnfrz-sst_m(:,:))/(2.0*dt) 
     362 
     363      ztmp(:,:) = nfrzmlt(:,:) 
     364      CALL nemo2cice(ztmp,frzmlt,'T', 1. ) 
    390365 
    391366! SST  and SSS 
  • branches/2012/dev_3352_UKMO8_CICE/NEMOGCM/NEMO/OPA_SRC/TRA/eosbn2.F90

    r3357 r3480  
    678678 
    679679 
    680    FUNCTION tfreez( psal, ppress ) RESULT( ptf ) 
     680   FUNCTION tfreez( psal ) RESULT( ptf ) 
    681681      !!---------------------------------------------------------------------- 
    682682      !!                 ***  ROUTINE eos_init  *** 
     
    691691      !!---------------------------------------------------------------------- 
    692692      REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ) ::   psal   ! salinity             [psu] 
    693       REAL(wp), DIMENSION(jpi,jpj), INTENT(in   ), OPTIONAL ::   ppress ! pressure             [dBar] 
    694693      ! Leave result array automatic rather than making explicitly allocated 
    695694      REAL(wp), DIMENSION(jpi,jpj)                ::   ptf    ! freezing temperature [Celcius] 
     
    698697      ptf(:,:) = ( - 0.0575_wp + 1.710523e-3_wp * SQRT( psal(:,:) )   & 
    699698         &                     - 2.154996e-4_wp *       psal(:,:)   ) * psal(:,:) 
    700  
    701       IF( PRESENT(ppress) ) THEN 
    702          ptf(:,:) = ptf(:,:) - 7.53e-4_wp * ppress(:,:) 
    703       ENDIF 
    704  
    705699      ! 
    706700   END FUNCTION tfreez 
Note: See TracChangeset for help on using the changeset viewer.