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 11963 for NEMO/branches/2019/dev_r11085_ASINTER-05_Brodeau_Advanced_Bulk/src/OCE/SBC/sbcblk_algo_coare3p6.F90 – NEMO

Ignore:
Timestamp:
2019-11-26T12:08:01+01:00 (4 years 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_coare3p6.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_COARE3P6_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_coare3p6_init 
    8686 
     
    190190      CHARACTER(len=40), PARAMETER :: crtnm = 'turb_coare3p6@sbcblk_algo_coare3p6' 
    191191      !!---------------------------------------------------------------------------------- 
    192       IF ( kt == nit000 ) CALL SBCBLK_ALGO_COARE3P6_INIT(l_use_cs, l_use_wl) 
     192      IF( kt == nit000 ) CALL SBCBLK_ALGO_COARE3P6_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) : 
     
    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_coare3p6 
Note: See TracChangeset for help on using the changeset viewer.