!copyright (C) 2001 MSC-RPN COMM %%%RPNPHY%%% *** S/P LIN_KDIF_SIMP1_TLSUBROUTINE LIN_KDIF_SIMP1_TL(D, DSIZ, F, FSIZ, V, VSIZ, NI, NK) 1 #include "impnone.cdk"
* INTEGER DSIZ, FSIZ, VSIZ, NI, NK REAL D(DSIZ), F(FSIZ), V(VSIZ) * *Author * Stephane Laroche - Janvier 2001 * *Revisions * 001 S. Laroche - TLM of LIN_KDIF_SIMP1 from Yves Delage linear physics * 002 S. Laroche (May 02) - cleanup diagnostic fields * 003 S. Laroche (Nov 02) - Implementation of robust near surface diagnostics * 004 Y. Delage (Oct 03) - Remove surfcon.cdk * * *Object * To calculate the (unnormalized) diffusion coefficients KM and KT * and the (unnormalized) boundary conditions for the diffusion of * wind, temperature, and moisture * using simplified physical parameterizations. *Arguments * * - Input/Output - * F field of permanent physics variables * V volatile bus * FSIZ dimension of F * VSIZ dimension of V * * - Input - * NI horizontal dimension * NK vertical dimension * * *Notes * DRAG = false : only a background value of diffusion coefficients * DRAG = true : boundary layer dependent on z0 and on latitude * CHAUF= true : surface heat flux over oceans dependent also on z0t * EVAP = true : evaporation over oceans dependent also on z0t * ** INTEGER K,I REAL lnz0,lnz0t,lnza,lnzu,lnzt,ruv,rtq,ctu * * #include "indx_sfc.cdk"
#include "phy_macros_f.h"
#include "phybus.cdk"
#include "options.cdk"
#include "consphy.cdk"
#include "dintern.cdk"
#include "fintern.cdk"
#include "zuzt.cdk"
* integer IK * fonction-formule pour l'adressage IK(i,k) = (K-1)*NI + I - 1 * * **************************** TLM ****************************** * IF (DRAG) THEN * * CALCUL DES COEFFICIENTS DE DIFFUSION * DO K=1,NK DO I=1,NI V(KM + IK(I,K)) = 0.0 V(KT + IK(I,K)) = 0.0 ENDDO ENDDO * DO I=1,NI * V(BM + I-1) = 0.0 * * PROFILS LOGARITHMIQUES POUR NIVEAU DIAGNOSTIQUE * lnza = ALOG (V(ZA+I-1)+F(Z0+I-1)) lnz0 = ALOG(F(Z0+I-1)) lnz0t = ALOG(F(Z0T+I-1)) lnzu = ALOG (ZU + F(Z0+I-1)) lnzt = ALOG (ZT + F(Z0+I-1)) ruv = (lnzu-lnz0)/(lnza-lnz0) rtq = ((lnzt-lnz0t)/(lnza-lnz0t))*(1.-NINT(F(MG+I-1))) F(udiag + i-1) = D(UMOINS+IK(I,NK)) * ruv F(vdiag + i-1) = D(VMOINS+IK(I,NK)) * ruv * * * FLUX DE CHALEUR ET TEMPERATURE DIAGNOSTIQUE A Z=ZT * FLUX DE VAPEUR ET HUMIDITE DIAGNOSTIQUE A Z=ZT V(BT + I-1) = 0.0 V(ALFAT + I-1) = 0.0 V(ALFAQ + I-1) = 0.0 * * * CHOIX ROBUSTE POUR T ET HU DIAGNOSTIQUE (= AU NIVEAU SUPERIEUR) * F(tdiag + i-1) = D(TMOINS +IK(I,NK)) F(qdiag + i-1) = D(HUMOINS +IK(I,NK)) * ENDDO * ENDIF **************************************************************************** * RETURN END