Ignore:
Timestamp:
2019-11-26T12:08:01+01:00 (11 months ago)
Author:
laurent
Message:

More accurate comments/info, better syntax, simplifications, etc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/OCE/SBC/sbcblk_algo_coare3p0.F90

    r11962 r11963  
    6868      INTEGER :: ierr 
    6969      !!--------------------------------------------------------------------- 
    70       IF ( l_use_wl ) THEN 
     70      IF( l_use_wl ) THEN 
    7171         ierr = 0 
    7272         ALLOCATE ( Tau_ac(jpi,jpj) , Qnt_ac(jpi,jpj), dT_wl(jpi,jpj), Hz_wl(jpi,jpj), STAT=ierr ) 
     
    7676         dT_wl(:,:)  = 0._wp 
    7777         Hz_wl(:,:)  = Hwl_max 
    78       END IF 
    79       IF ( l_use_cs ) THEN 
     78      ENDIF 
     79      IF( l_use_cs ) THEN 
    8080         ierr = 0 
    8181         ALLOCATE ( dT_cs(jpi,jpj), STAT=ierr ) 
    8282         IF( ierr > 0 ) CALL ctl_stop( ' SBCBLK_ALGO_COARE3P0_INIT => allocation of dT_cs failed!' ) 
    8383         dT_cs(:,:) = -0.25_wp  ! First guess of skin correction 
    84       END IF 
     84      ENDIF 
    8585   END SUBROUTINE sbcblk_algo_coare3p0_init 
    8686 
     
    190190      CHARACTER(len=40), PARAMETER :: crtnm = 'turb_coare3p0@sbcblk_algo_coare3p0' 
    191191      !!---------------------------------------------------------------------------------- 
    192       IF ( kt == nit000 ) CALL SBCBLK_ALGO_COARE3P0_INIT(l_use_cs, l_use_wl) 
     192      IF( kt == nit000 ) CALL SBCBLK_ALGO_COARE3P0_INIT(l_use_cs, l_use_wl) 
    193193 
    194194      l_zt_equal_zu = .FALSE. 
     
    197197 
    198198      !! Initializations for cool skin and warm layer: 
    199       IF ( l_use_cs .AND. (.NOT.(PRESENT(Qsw) .AND. PRESENT(rad_lw) .AND. PRESENT(slp))) ) & 
     199      IF( l_use_cs .AND. (.NOT.(PRESENT(Qsw) .AND. PRESENT(rad_lw) .AND. PRESENT(slp))) ) & 
    200200         &   CALL ctl_stop( '['//TRIM(crtnm)//'] => ' , 'you need to provide Qsw, rad_lw & slp to use cool-skin param!' ) 
    201201 
    202       IF ( l_use_wl .AND. (.NOT.(PRESENT(Qsw) .AND. PRESENT(rad_lw) .AND. PRESENT(slp))) ) & 
     202      IF( l_use_wl .AND. (.NOT.(PRESENT(Qsw) .AND. PRESENT(rad_lw) .AND. PRESENT(slp))) ) & 
    203203         &   CALL ctl_stop( '['//TRIM(crtnm)//'] => ' , 'you need to provide Qsw, rad_lw & slp to use warm-layer param!' ) 
    204204 
    205       IF ( l_use_cs .OR. l_use_wl ) THEN 
     205      IF( l_use_cs .OR. l_use_wl ) THEN 
    206206         ALLOCATE ( zsst(jpi,jpj) ) 
    207207         zsst = T_s ! backing up the bulk SST 
    208208         IF( l_use_cs ) T_s = T_s - 0.25_wp   ! First guess of correction 
    209209         q_s    = rdct_qsat_salt*q_sat(MAX(T_s, 200._wp), slp) ! First guess of q_s 
    210       END IF 
     210      ENDIF 
    211211 
    212212 
     
    265265         dt_zu = t_zu - T_s  ; dt_zu = SIGN( MAX(ABS(dt_zu),1.E-6_wp), dt_zu ) 
    266266         dq_zu = q_zu - q_s  ; dq_zu = SIGN( MAX(ABS(dq_zu),1.E-9_wp), dq_zu ) 
    267       END IF 
     267      ENDIF 
    268268 
    269269      !! ITERATION BLOCK 
     
    288288            zeta_t = zt*ztmp0 
    289289            zeta_t = SIGN( MIN(ABS(zeta_t),50.0_wp), zeta_t ) 
    290          END IF 
     290         ENDIF 
    291291 
    292292         !! Adjustment the wind at 10m (not needed in the current algo form): 
    293          !IF ( zu \= 10._wp ) U10 = U_zu + u_star/vkarmn*(LOG(10._wp/zu) - psi_m_coare(10._wp*ztmp0) + psi_m_coare(zeta_u)) 
     293         !IF( zu \= 10._wp ) U10 = U_zu + u_star/vkarmn*(LOG(10._wp/zu) - psi_m_coare(10._wp*ztmp0) + psi_m_coare(zeta_u)) 
    294294 
    295295         !! Roughness lengthes z0, z0t (z0q = z0t) : 
     
    299299 
    300300         ztmp1 = ( znu_a / (z0*u_star) )**0.6_wp    ! (1./Re_r)^0.72 (Re_r: roughness Reynolds number) COARE3.6-specific! 
    301          z0t   = MIN( 1.1E-4_wp , 5.5E-5_wp*ztmp1 ) ! Scalar roughness for both theta and q (eq.28) #LOLO: some use 1.15 not 1.1 !!! 
     301         z0t   = MIN( 1.1E-4_wp , 5.5E-5_wp*ztmp1 ) ! Scalar roughness for both theta and q (eq.28) #LB: some use 1.15 not 1.1 !!! 
    302302         z0t   = MIN( MAX(ABS(z0t), 1.E-9) , 1._wp )                      ! (prevents FPE from stupid values from masked region later on) 
    303303 
     
    315315            t_zu = t_zt - t_star/vkarmn*ztmp1 
    316316            q_zu = q_zt - q_star/vkarmn*ztmp1 
    317          END IF 
     317         ENDIF 
    318318 
    319319 
     
    330330            q_s(:,:) = rdct_qsat_salt*q_sat(MAX(T_s(:,:), 200._wp), slp(:,:)) 
    331331 
    332          END IF 
     332         ENDIF 
    333333 
    334334         IF( l_use_wl ) THEN 
     
    343343            IF( l_use_cs ) T_s(:,:) = T_s(:,:) + dT_cs(:,:)*tmask(:,:,1) 
    344344            q_s(:,:) = rdct_qsat_salt*q_sat(MAX(T_s(:,:), 200._wp), slp(:,:)) 
    345          END IF 
     345         ENDIF 
    346346 
    347347         IF( l_use_cs .OR. l_use_wl .OR. (.NOT. l_zt_equal_zu) ) THEN 
    348348            dt_zu = t_zu - T_s ;  dt_zu = SIGN( MAX(ABS(dt_zu),1.E-6_wp), dt_zu ) 
    349349            dq_zu = q_zu - q_s ;  dq_zu = SIGN( MAX(ABS(dq_zu),1.E-9_wp), dq_zu ) 
    350          END IF 
     350         ENDIF 
    351351 
    352352      END DO !DO j_itt = 1, nb_itt 
     
    365365      IF( .NOT. l_zt_equal_zu ) DEALLOCATE( zeta_t ) 
    366366 
    367       IF ( l_use_cs .AND. PRESENT(pdT_cs) ) pdT_cs = dT_cs 
    368       IF ( l_use_wl .AND. PRESENT(pdT_wl) ) pdT_wl = dT_wl 
    369       IF ( l_use_wl .AND. PRESENT(pHz_wl) ) pHz_wl = Hz_wl 
    370  
    371       IF ( l_use_cs .OR. l_use_wl ) DEALLOCATE ( zsst ) 
     367      IF( l_use_cs .AND. PRESENT(pdT_cs) ) pdT_cs = dT_cs 
     368      IF( l_use_wl .AND. PRESENT(pdT_wl) ) pdT_wl = dT_wl 
     369      IF( l_use_wl .AND. PRESENT(pHz_wl) ) pHz_wl = Hz_wl 
     370 
     371      IF( l_use_cs .OR. l_use_wl ) DEALLOCATE ( zsst ) 
    372372 
    373373   END SUBROUTINE turb_coare3p0 
Note: See TracChangeset for help on using the changeset viewer.