SURFEX v7.3
General documentation of Surfex
|
00001 ! ######### 00002 SUBROUTINE MOD1D_n(HPROGRAM,PTIME,PEMIS,PDIR_ALB,PSCA_ALB,PLW,PSCA_SW,& 00003 PDIR_SW, PSFTH,PSFTQ,PSFU,PSFV,PRAIN,PSST ) 00004 ! ####################################################################### 00005 ! 00006 !!**** *MOD1D_n* 00007 !! 00008 !! PURPOSE 00009 !! ------- 00010 ! Source that exchanges Fluxes and SST between SURFEX (coupling_seaflux) 00011 ! and the oceanic 1D model in TKE eqations (mixtl_n) 00012 ! 00013 !!** METHOD 00014 !! ------ 00015 ! Change turbulent fluxes in solar, non solar, and fresh water fluxes 00016 ! with the oceanic convention for orientation of fluxes 00017 ! The stress of wind is exchange between SURFEX and TKE model 00018 ! 00019 !! EXTERNAL 00020 !! -------- 00021 !! 00022 !! IMPLICIT ARGUMENTS 00023 !! ------------------ 00024 !! 00025 !! REFERENCE 00026 !! --------- 00027 !! 00028 !! 00029 !! AUTHOR 00030 !! ------ 00031 !! C. Lebeaupin *Météo-France* 00032 !! 00033 !! MODIFICATIONS 00034 !! ------------- 00035 !! Original 02/2008 00036 !! Modified 07/2012, P. Le Moigne : CMO1D phasing 00037 !------------------------------------------------------------------------------- 00038 ! 00039 !* 0. DECLARATIONS 00040 ! ------------ 00041 ! 00042 USE MODD_CSTS 00043 USE MODD_OCEAN_CSTS 00044 USE MODD_OCEAN_n, ONLY : XSEATEND, LPROGSST, NOCTCOUNT, XSEAHMO 00045 USE MODD_SEAFLUX_n 00046 USE MODD_SURF_PAR, ONLY : XUNDEF 00047 ! 00048 USE MODI_MIXTL_n 00049 USE MODI_DIAG_INLINE_OCEAN_n 00050 ! 00051 USE MODD_OCEAN_REL_n , ONLY : LFLUX_NULL 00052 USE MODI_GET_LUOUT 00053 ! 00054 ! 00055 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK 00056 USE PARKIND1 ,ONLY : JPRB 00057 ! 00058 IMPLICIT NONE 00059 ! 00060 !* 0.1 declarations of arguments 00061 ! 00062 ! 00063 CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes 00064 REAL ,INTENT(IN) :: PTIME ! current time since midnight in second 00065 REAL, DIMENSION(:) ,INTENT(IN) :: PEMIS ! emissivity 00066 REAL, DIMENSION(:,:),INTENT(IN) :: PDIR_ALB ! direct albedo 00067 REAL, DIMENSION(:,:),INTENT(IN) :: PSCA_ALB ! scattered albedo 00068 REAL, DIMENSION(:) ,INTENT(IN) :: PLW ! longwave radiation on horizontal surface (W/m2) 00069 REAL, DIMENSION(:,:),INTENT(IN) :: PSCA_SW ! diffuse solar radiation on horizontal surface (W/m2) 00070 REAL, DIMENSION(:,:),INTENT(IN) :: PDIR_SW ! direct solar radiation on horizontal surface (W/m2) 00071 REAL, DIMENSION(:) ,INTENT(IN) :: PSFTH ! flux of heat (W/m2) 00072 REAL, DIMENSION(:) ,INTENT(IN) :: PSFTQ ! flux of water vapor (kg/m2/s) 00073 REAL, DIMENSION(:) ,INTENT(IN) :: PSFU ! zonal stress (Pa) 00074 REAL, DIMENSION(:) ,INTENT(IN) :: PSFV ! meridian stress (Pa) 00075 REAL, DIMENSION(:) ,INTENT(IN) :: PRAIN ! liquid precipitation (kg/s/m2) 00076 ! 00077 REAL, DIMENSION(:) ,INTENT(INOUT) :: PSST ! sea surface temperature (K) 00078 ! 00079 !* 0.2 declarations of local variables 00080 ! 00081 INTEGER :: JPT 00082 INTEGER :: ITIME,NOCEAN_STEP 00083 REAL, DIMENSION(SIZE(PSFTH)) :: ZFSOL,ZFNSOL !total solar and non-solar fluxes (W/m2) 00084 REAL, DIMENSION(SIZE(PSFTH)) :: ZSFTEAU !fresh water flux(kg/m2/s) 00085 REAL, DIMENSION(SIZE(PSFTH)) :: ZLV !latent heat 00086 ! 00087 REAL, DIMENSION(SIZE(PSFTH)) :: ZLWU !long waves upward fluxes (W/m2) 00088 REAL, DIMENSION(SIZE(PDIR_ALB,1),SIZE(PDIR_ALB,2)) :: ZSWU 00089 !shortwave upward fluxes (W/m2) 00090 ! 00091 REAL, DIMENSION(SIZE(PSFTH)) :: ZSEATEMP !surface temperature (K) 00092 ! 00093 LOGICAL :: GCALLMIXT, GTIMEOK 00094 INTEGER :: ILUOUT ! output listing logical unit 00095 REAL(KIND=JPRB) :: ZHOOK_HANDLE 00096 ! 00097 !------------------------------------------------------------------------------- 00098 ! 00099 IF (LHOOK) CALL DR_HOOK('MOD1D_N',0,ZHOOK_HANDLE) 00100 ! 00101 CALL GET_LUOUT(HPROGRAM,ILUOUT) 00102 ! 00103 ITIME=INT(PTIME) 00104 NOCEAN_STEP=INT(XOCEAN_TSTEP) 00105 ! 00106 GTIMEOK=(MOD(ITIME,NOCEAN_STEP)==0) 00107 GCALLMIXT=((MOD(ITIME,NOCEAN_STEP)==0).AND.(NOCTCOUNT>0)) 00108 ! 00109 !Call 1D model if ptime proportional to the oceanic model time step 00110 ! 00111 IF (GCALLMIXT) THEN 00112 ! 00113 ! 1. Initializations 00114 !________________________________________________________________________ 00115 !Computation of solar, non solar and fresh water fluxes 00116 DO JPT=1,SIZE(PSFTH) 00117 !SW Flux up 00118 ZSWU(JPT,:)= PDIR_SW(JPT,:) * PDIR_ALB(JPT,:) + PSCA_SW(JPT,:)*PSCA_ALB(JPT,:) 00119 !Net solar flux 00120 ZFSOL(JPT)=(SUM(PDIR_SW(JPT,:))+SUM(PSCA_SW(JPT,:))-SUM(ZSWU(JPT,:)))/(XRHOSW*XCPSW) 00121 !Calcul flux LW UP 00122 ZLWU(JPT)= PEMIS(JPT)*XSTEFAN*PSST(JPT)**4 + (1-PEMIS(JPT))*PLW(JPT) 00123 00124 IF (PSST(JPT)<=(XTT-2)) THEN 00125 ZFNSOL(JPT)=(PLW(JPT)-ZLWU(JPT)-PSFTH(JPT)-(XLSTT*PSFTQ(JPT)))/(XRHOSW*XCPSW) 00126 ZSFTEAU(JPT)=PSFTQ(JPT)/XRHOSWREF 00127 ELSE 00128 ZLV(JPT)=XLVTT+(XCPV-XCL)*(PSST(JPT)-XTT) 00129 ZFNSOL(JPT)=(PLW(JPT)-ZLWU(JPT)-PSFTH(JPT)-(ZLV(JPT)*PSFTQ(JPT)))/(XRHOSW*XCPSW) 00130 ZSFTEAU(JPT)=(PSFTQ(JPT)-PRAIN(JPT))/XRHOSWREF 00131 ENDIF 00132 ENDDO 00133 !__________________________________________________________________________ 00134 ! 00135 ! 2. Call oceanic TKE model 00136 ! ---------------------- 00137 ! 00138 IF (LFLUX_NULL) THEN 00139 WRITE(ILUOUT,*) 'Caution : SURFACE FLUX ARE SET TO 0 ' 00140 ZFSOL(:) = 0. 00141 ZFNSOL(:) = 0. 00142 ZSFTEAU(:) = 0. 00143 END IF 00144 00145 CALL MIXTL_n(ZFSOL,ZFNSOL,ZSFTEAU,PSFU,PSFV,ZSEATEMP) 00146 ! 00147 !--------------------------------------------------------------------------- 00148 ! 3. Coupling with SURFEX by SST (and relative wind) evolution 00149 ! 00150 IF (LPROGSST) THEN 00151 PSST(:)=ZSEATEMP(:) 00152 !WRITE(ILUOUT,*) '**SST CHANGED FOR THE ',NOCTCOUNT,'TIME BY FIRST LEVEL OCEANIC MODEL TEMPERATURE AT ', ITIME,' s **' 00153 ENDIF 00154 ! 00155 ENDIF 00156 ! 00157 IF (GTIMEOK) THEN 00158 CALL DIAG_INLINE_OCEAN_n 00159 NOCTCOUNT=NOCTCOUNT+1 00160 ENDIF 00161 ! 00162 IF (LHOOK) CALL DR_HOOK('MOD1D_N',1,ZHOOK_HANDLE) 00163 !!------------------------------------------------------------------------------- 00164 !!----------------------------------------------------------------------------- 00165 END SUBROUTINE MOD1D_n