00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
#ifndef ATMODATA_FILE_METEOROLOGY_HXX
00026
00027
namespace AtmoData
00028 {
00029
00030
template<
class TU,
class TV,
class TTp,
class T,
class TG>
00031
void ComputeRichardson(Data<TU, 4, TG>& ZonalWind,
00032 Data<TV, 4, TG>& MeridionalWind,
00033 Data<TTp, 4, TG>& PotentialTemperature,
00034 Data<T, 4, TG>& Richardson,
00035 T wind_threshold = 0.001);
00036
00037
template<
class TU,
class TV,
class TTp,
class T,
class TG>
00038
void ComputeRichardson(Data<TU, 4, TG>& ZonalWind,
00039 Data<TV, 4, TG>& MeridionalWind,
00040 Data<TTp, 4, TG>& PotentialTemperature,
00041 Data<T, 3, TG>& SurfaceRichardson,
00042 T wind_threshold = 0.001);
00043
00044
template<
class TU,
class TTp,
class T,
class TG>
00045
void ComputeRichardson(Data<TU, 3, TG>& WindModule,
00046 Data<TTp, 3, TG>& SurfacePotentialTemperature,
00047 Data<TTp, 4, TG>& PotentialTemperature,
00048 Data<T, 3, TG>& SurfaceRichardson,
00049 T wind_threshold = 0.001);
00050
00051
template<
class TR,
class TU,
class TTp,
class T,
class TG>
00052
void ComputeRichardson(Data<TR, 2, TG>& Roughness,
00053 Data<TU, 3, TG>& WindModule,
00054 Data<TTp, 3, TG>& SurfacePotentialTemperature,
00055 Data<TTp, 4, TG>& PotentialTemperature,
00056 Data<T, 3, TG>& SurfaceRichardson,
00057 T wind_threshold = 0.001);
00058
00059
template<
class TT,
class TP,
class T,
class TG>
00060
void ComputePotentialTemperature(Data<TT, 4, TG>& Temperature,
00061 Data<TP, 4, TG>& Pressure,
00062 Data<T, 4, TG>& PotentialTemperature,
00063 T P0 = 101325., T cp = 1005.,T r = 287.0);
00064
00065
template<
class TT,
class TP,
class T,
class TG>
00066
void ComputePotentialTemperature(Data<TT, 3, TG>& Temperature,
00067 Data<TP, 3, TG>& Pressure,
00068 Data<T, 3, TG>& PotentialTemperature,
00069 T P0 = 101325., T cp = 1005.,T r = 287.0);
00070
00071
template<
class TT,
class TP,
class T,
class TG>
00072
void ComputeSaturationHumidity(Data<TT, 3, TG>& Temperature,
00073 Data<TP, 3, TG>& Pressure,
00074 Data<T, 3, TG>& SaturationHumidity);
00075
00076
template<
class TT,
class TP,
class T,
class TG>
00077
void ComputeSaturationHumidity(Data<TT, 4, TG>& Temperature,
00078 Data<TP, 4, TG>& Pressure,
00079 Data<T, 4, TG>& SaturationHumidity);
00080
00081
template<
class TS,
class TT,
class TP,
class T,
class TG>
00082
void ComputeRelativeHumidity(Data<TS, 4, TG>& SpecificHumidity,
00083 Data<TT, 4, TG>& Temperature,
00084 Data<TP, 4, TG>& Pressure,
00085 Data<T, 4, TG>& RelativeHumidity);
00086
00087
template<
class TH,
class TS,
class TW,
class TL,
class T,
class TG>
00088
void ComputeSurfaceHumidity_diag(Data<TH, 4, TG>& Humidity,
00089 Data<TS, 3, TG>& SaturationHumidity,
00090 Data<TW, 3, TG>& SoilWater,
00091 Data<TL, 3, TG>& LUC,
int sea_index,
00092 Data<T, 3, TG>& SurfaceHumidity,
00093 T veg = 1.0, T theta_cap = 0.323);
00094
00095
template<
class TS,
class TP,
class T,
class TG>
00096
void ComputeCriticalRelativeHumidity(Data<TS, 3, TG>& SurfacePressure,
00097 Data<TP, 4, TG>& Pressure,
00098 Data<T, 4, TG>& CriticalRelativeHumidity,
00099 T coeff0 = 2., T coeff1 = sqrt(3.));
00100
00101
template<
class TS,
class TP,
class T,
class TG>
00102
void ComputeCriticalRelativeHumidity_extended(Data<TS, 3, TG>& SurfacePressure,
00103 Data<TP, 4, TG>& Pressure,
00104 Data<T, 4, TG>& CriticalRelativeHumidity,
00105 T coeff0 = 1.1,
00106 T coeff1 = sqrt(1.3),
00107 T a0 = 0., T a1 = 1.1);
00108
00109
template<
class TB,
class TS,
class TP,
class T,
class TG>
00110
void ComputeCriticalRelativeHumidity(Data<TB, 3, TG>& BoundaryLayerHeight,
00111 Data<TS, 3, TG>& SurfacePressure,
00112 Data<TP, 4, TG>& Pressure,
00113 Data<T, 4, TG>& CriticalRelativeHumidity,
00114 T coeff0 = 2., T coeff1 = sqrt(3.),
00115 T BL_CRH = 0.98);
00116
00117
template<
class TP,
class T,
class TG>
00118
void ComputeCriticalRelativeHumidity(Data<TP, 4, TG>& Pressure,
00119 Data<T, 4, TG>& CriticalRelativeHumidity,
00120 T CRH_0 = 0.75, T CRH_1 = 0.95,
00121 T CRH_2 = 0.95,
00122 T P_0 = 70000., T P_1 = 40000.);
00123
00124
template<
class TR,
class TC,
class T,
class TG>
00125
void ComputeCloudFraction(Data<TR, 4, TG>& RelativeHumidity,
00126 Data<TC, 4, TG>& CriticalRelativeHumidity,
00127 Data<T, 4, TG>& CloudFraction);
00128
00129
template<
class TP,
class TR,
class TC,
class T,
class TG>
00130
void ComputeCloudFraction(Data<TP, 3, TG>& BoundaryLayerHeight,
00131 Data<TR, 4, TG>& RelativeHumidity,
00132 Data<TC, 4, TG>& CriticalRelativeHumidity,
00133 Data<T, 4, TG>& CloudFraction);
00134
00135
template<
class TU,
class TV,
class T,
class TG>
00136
void ComputeModule(Data<TU, 4, TG>& U, Data<TV, 4, TG>& V,
00137 Data<T, 4, TG>& Module);
00138
00139
template<
class TU,
class TV,
class T,
class TG>
00140
void ComputeModule(Data<TU, 4, TG>& U, Data<TV, 4, TG>& V,
00141 Data<T, 3, TG>& Module);
00142
00143
template<
class TU,
class TV,
class T,
class TG>
00144
void ComputeModule(Data<TU, 3, TG>& U, Data<TV, 3, TG>& V,
00145 Data<T, 3, TG>& Module);
00146
00147
template<
class TC,
class TP,
class T,
class TG>
00148
void ComputeCloudiness(Data<TC, 4, TG>& CloudFraction,
00149 Data<TP, 4, TG>& Pressure,
00150 Grid<TG>& GridZ_interf,
00151 Data<int, 4>& LowIndices,
00152 Data<int, 4>& MediumIndices,
00153 Data<int, 4>& HighIndices,
00154 Data<T, 3, TG>& LowCloudiness,
00155 Data<T, 3, TG>& MediumCloudiness,
00156 Data<T, 3, TG>& HighCloudiness,
00157 T P_0 = 80000., T P_1 = 45000.);
00158
00159
template <
class TT,
class TP,
class TH,
00160
class T,
class TG>
00161
void ComputeCloudHeight(Data<TT, 4, TG>& Temperature,
00162 Data<TP, 4, TG>& Pressure,
00163 Data<TH, 4, TG>& Humidity,
00164 T (CriticalRelativeHumidity)(
const T&,
const T&,
00165
const T&),
00166 Data<T, 3, TG>& CloudHeight);
00167
00168
template <
class TT,
class TP,
class TH,
00169
class TCRH,
class T,
class TG>
00170
void ComputeCloudHeight(Data<TT, 4, TG>& Temperature,
00171 Data<TP, 4, TG>& Pressure,
00172 Data<TH, 4, TG>& Humidity,
00173 Data<TCRH, 4, TG>& CriticalRelativeHumidity,
00174 Data<T, 3, TG>& CloudHeight);
00175
00176
template <
class T,
class TG>
00177
void ComputeCloudHeight(Data<int, 4>& LowIndices,
00178 Data<int, 4>& MediumIndices,
00179 Data<int, 4>& HighIndices,
00180 Grid<TG>& GridZ_interf,
00181 Data<T, 3, TG>& CloudHeight);
00182
00183
template <
class Ta,
class Tb,
class TSP,
00184
class T,
class TG>
00185
void ComputePressure(Data<Ta, 1, TG>& alpha, Data<Tb, 1, TG>& beta,
00186 Data<TSP, 3, TG>& SurfacePressure,
00187 Data<T, 4, TG>& Pressure, T P0 = 101325.);
00188
00189
template<
class TPS,
class TP,
class TT,
class T,
class TG>
00190
void ComputeHeight(Data<TPS, 3, TG>& SurfacePressure,
00191 Data<TP, 4, TG>& Pressure,
00192 Data<TT, 4, TG>& Temperature,
00193 Grid<T>& Height, T g = 9.80665, T r = 287.0);
00194
00195
template<
class TP,
class TT,
class T,
class TG>
00196
void ComputeInterfHeight(Data<TP, 4, TG>& Pressure,
00197 Data<TT, 4, TG>& Temperature,
00198 Grid<T>& Height,
bool ground_set =
false,
00199 T g = 9.80665, T r = 287.0);
00200
00201
template<
class TP,
class TT,
class T,
class TG>
00202
void ComputeMiddleHeight(Data<TP, 4, TG>& Pressure,
00203 Data<TT, 4, TG>& Temperature,
00204 Grid<T>& InterfHeight, Grid<T>& MiddleHeight,
00205 T g = 9.80665, T r = 287.0);
00206
00207
template <
class TT,
class TH,
class T,
class TG>
00208
void ComputeVirtualTemperature(Data<TT, 4, TG>& Temperature,
00209 Data<TH, 4, TG>& SpecificHumidity,
00210 Data<T, 4, TG>& VirtualTemperature,
00211 T c = 0.608);
00212
00213 }
00214
00215
#define ATMODATA_FILE_METEOROLOGY_HXX
00216
#endif