VR-Vantage 3.1 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
radtran3d.h
Go to the documentation of this file.
1 /* © 1998 JRM Technologies, Inc.*/
2 
3 #ifndef _RADTRAN3D_H_
4 #define _RADTRAN3D_H_
5 
6 
7 #include "ModRadDLLstub.h"
8 #include "modrad_common.h"
9 
10 #ifdef __cplusplus
11 extern "C"
12 {
13 #endif
14 
15  /* ------------ RADTRAN API ----------------------------- */
16 
17 
18  /*
19  #define MAXALT 100000.0 // [m] max Radtran altitude
20  #define MAXRADFREQ 400 // [unitless int] max # Radtran Frequencies
21 
22  typedef struct
23  {
24  // RCENV
25  char IDIR[255],ODIR[255];// Full path of Radtran input and output directories
26 
27  // RC1
28  char TITLE[80]; // Title of Run
29 
30  // RC2 (always used)
31  int IRDTRN; // 0=profile&surface setup only, 1=run radtran, 2=run precip model only
32  int IATM; // 0=user-supplied atmosphere, 1=internal standard model
33  int ISRFC; // 0=no surface, 1=internal temp & emissivity, 2=user temp, internal emissivity, 3=user temp & emissivity
34  int IMS; // Multiple Scattering off(0) or on(1)
35  int IPLOT; // Plotting off(0) or on(1)
36  int NANGLE; // number of angles to run
37  int MODE; // 0=read freq band, 1=input individual freq's
38  int ITABLE; // Tabular printed output : off(0) or on(1)
39  int IATTEN; // Attenuation printed output : off(0) or on(1)
40  int IATINC; // 1=print each attenuation, N=every N attenuations
41  int IWF; // Weighting function printed output : off(0) or on(1)
42  int IWFINC; // 1=every weight printed, N=every N weights
43  int IRDH2O; // 0=use internal H2O vapor rotation lines, 1=read user lines from file H2OROT
44  int NOPR; // Full (0) or limited (1) printout.
45  float TGRND; // Surface temp [degK] (used if ISRFC=2,3)
46 
47  // RC3 (used if IRDTRN=2)
48  float DIST; // Drop Size Distribution : 1=Marshall-Palmer, 2=Best, -1=Terminates Precip run
49  float PHASE; // H2O phase : 1=water, 2=ice
50  float FREQ; // Frequency [GHz]
51  int RNRATE; // Rain Rate [mm/hr]
52  int TEMP; // Temp [degK]
53 
54  // RC411 (used if IATM=0) for specifying mode of user-defined atmospheric input
55  int ICNTRL; // 0=tabular, 1=compact, 2=compact w/no rain, 3=compact w/no cloud
56  int MLEV; // Number of levels to be read (=one more than number of layers)
57  char ATITLE[70]; // Profile label
58 
59  // RC412 (used if ICNTRL=0,1)
60  char FMT[80]; // Fortran format specifier
61 
62  // RC413 (used if ICNTRL=0) : User-specified Atmospheric Profile
63  float H[LAYDIM]; // Altitude [km]
64  float P[LAYDIM]; // Pressure [mb]
65  float T[LAYDIM]; // Temperature [degK]
66  float RH[LAYDIM]; // Relative Humidity [unitless fraction 0<RH<1]
67  float CLOUD[LAYDIM]; // Cloud amount [unitless?]
68  float RAIN[LAYDIM]; // Rain Rate [mm/hr]
69 
70  // RC42 (used if IATM=1) for internal standard atm models
71  int MOD; // Model : 1=tropical,2=midlat summer,3=midlat winter,4=subarctic summer,5=subarctic winter,6=US standard 1962
72  int MHUMID; // Humidity : same as above, but add 7=typical rainy, 8=typical cloudy (no rain)
73  int MCLOUD; // Clouds : 1=none,2=stratus,3=cumulus,4=altostratus,5=stratocumulus,6=nimbostratus
74  int MRAIN; // Rain : 1=none,2=drizzle,3=light,4=steady,5=summer cumulus,6=heavy
75 
76  // RC511 (used if ISRFC=1,2) for choosing internal surface model
77  int IGRND; // Model
78  int IEMTAB; // Print emissivity table : off(0) or on(1)
79  float TEMP1; // Upper surface Temp [degK]
80  float TEMP2; // Lower surface Temp [degK]
81 
82  // RC512 (used if IGRND=1,2,3) : Rough ocean, sea ice, or dry snowpack
83  float A; // Scatterer Size
84  float FRAC; // Fraction volume
85  float EB; // Layer permittivity
86  float E2DRY; // Surface permittivity
87  float DEPDRY; // Layer depth
88 
89  // RC513 (used if IGRND=4) : Wet snowpack
90  float A1; // Upper layer scatterer size
91  float FS1; // Upper layer total fraction
92  float A2; // Lower layer scatterer size
93  float FS2; // Lower layer total fraction
94  float E2WET; // Lower layer permittivity
95  float DEPWET; // Lower layer depth
96 
97  // RC514 (used if IGRND=5,6,7) : Vegetation, wet soil, random medium
98  float LP; // Correlation length
99  float LZ; // Correlation of Z-exponential
100  float MV; // Volumetric moisture in vegetation
101  float E2RAN; // Dielectric constant
102  float DEPRAN; // Layer depth
103  float HH; // Roughness
104  float DMV; // Volumetric moisture used in calculation E2Ran
105 
106  // RC515 (used if IGRND=5) : Vegetation
107  float VV; // Vegetation Fraction in layer
108  float VB; // Dry vegetation
109  float VBW; // Bounded water fraction in MV
110  float BULK; // Dielectric Constant
111 
112  // RC516 (used if IGRND=6) : Wet Soil
113  float WT; // Transition wetness
114  float GA; // Mixing parameter
115  float PO; // Porocity
116  float ROCK; // Rock Permittivity
117 
118  // RC517 (used if IGRND=7) : Random medium
119  float EM; // Average dielectric constant
120  float DEL; // Variance
121 
122  // RC52 (used if ISRFC=3) : Horizontal Emissivities at angles ANGLE(i)
123  float EMISH[10]; // Horizontal emissivity
124 
125  // RC53 (used if ISRFC=3) : Vertical Emissivities at angles ANGLE(i)
126  float EMISV[10]; // Vertical Emissivity
127 
128  // RC61 (used if IMS=1 and ISRFC=3) : Horizontal Emissivities of MS Gauss point [i]
129  float EMHMS[6]; // Horizontal Emissivity
130 
131  // RC62 (used if IMS=1 and ISRFC=3) : Vertical Emissivities of MS Gauss point [i]
132  float EMVMS[6]; // Vertical Emissivity
133 
134  // RC7 (used if IPLOT=1) :
135  char NAME[30]; // Plot title
136 
137  // RC8 (always used) : Angles at which to run Radtran
138  float ANGLE[10]; // Angle [deg]
139 
140  // RC91 (used if IMODE=0) : Frequency Band
141  float VV1; // Beginning Frequency [GHz]
142  float VV2; // Ending Frequency [GHz]
143  float DV; // Frequency Bin Size [GHz]
144 
145  // RC92 (used if IMODE=1) : Frequencies at which to run Radtran
146  int NFREQ; // Number of frequencies
147  float V1[MAXRADFREQ]; // Center Frequency [GHz]
148  float V2[MAXRADFREQ]; // First sideband frequency [GHz]
149  float V3[MAXRADFREQ]; // Second sideband frequency [GHz]
150  float E2R[MAXRADFREQ]; // Real Permittivity (for ISRFC=1,2 and IGRND=1,5,6), or Real Ave dielectric constant for random medium (for ISRFC=1,2 and IGRND=7)
151  float E2I[MAXRADFREQ]; // Imaginary Permittivity (for ISRFC=1,2 and IGRND=1,5,6), or Imaginary Ave dielectric constant for random medium (for ISRFC=1,2 and IGRND=7)
152  float DELF[MAXRADFREQ]; // Variance for EM (for IGRND=7)
153 
154  // RC10 (always used) : Run repeat
155  int IRPT; // 0=stop,1=full rerun,2=rerun w/new header & other cards starting w/atmosphere,3=rerun w/new header & other cards starting w/surface
156  int DOFLAG; // 0=full run, 1=extinction coeffs only.
157 
158  } RADCARD;
159  */
160 
161 
162 
163 
164  void RadSetUserATM(char *sigsim_atm_dir, ATM_COLUMN col, RADCARD* rc, BAND band);
165  MODRAD_API int RAD2ATM(char *sigsim_atm_dir, SPECTRAL_DOMAIN spectrum, ATM_COLUMN* col, BAND band, ATM_DEFAULT atm_default, RADCARD rc, jrmbool Use_Columns, jrmbool Use_Default);
166 
167  // Radtran Cloud Defs : // Clouds : 1=none,2=stratus,3=cumulus,4=altostratus,5=stratocumulus,6=nimbostratus
168  // OASES Cloud Defs: 1=Cirrus, 2=Cirrocumulus, 3=Cirrostratus, 4=Altocumulus, 5=Altostratus, 6=Nimbostratus, 7=Stratocumulus, 8=Stratus, 9=Cumulus, 10=Cumulonimbus, 11=Not_Visible
169  // Some defs:
170  // Cumulonimbus = Thunderheads Near ground to above 50,000 feet
171  // Cirrostratus = Thin, wispy, above thunderheads Above 18,000 feet
172  // Cirrus = Thin, often with "mare's tail" Above 18,000 feet
173  // Cirrocumulus = Small puffy clouds Above 18,000 feet
174  // Altostratus = Thin, uniform, sometimes with "wide wale corduroy" appearance 6,000 - 20,000 feet
175  // Altocumulus = Medium-sized puffy clouds 6,000 - 20,000 feet
176  // Stratocumulus = Broad and flat on the bottom, puffy on top Below 6,000 feet
177  // Cumulus = Puffy clouds Below 6,000 feet
178  // Stratus = Uniform, thick to thin layered clouds Below 6,000 feet
179  // Suggested Mapping: OASES RADTRAN
180  // 0 1
181  // 1 1
182  // 2 1
183  // 3 1
184  // 4 5
185  // 5 4
186  // 6 6
187  // 7 5
188  // 8 2
189  // 9 3
190  // 10 3
191  // 11 1
192  int RadCloudType(int OasesCloudType);
193 
194 
195 
196 
197  /* --------------- END OF RADTRAN API -------------------- */
198 
199 #ifdef __cplusplus
200 }
201 #endif
202 
203 #endif // _RADTRAN3D_H_
204 
205 


Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)