tas_tom = 5; # # THIS IS FOR FLIGHTS > 1800. # # # Flight data configuration and calibration data base. # name = value ; # Semicolons terminate each name/value pair. A 'name' or 'value' is limited # to 40 characters, white space is not significant. A sharp symbol precedes # each comment. # # A flag is used to specify which flights the information pertains to. The # form is ".fliiii:", where "iiii" is the flight number. Values pertain to # that flight number and higher. You can also use >fliiii: # # The affect of a flag sticks until another flag is encountered. # # $VAR_NAME is a variable and is defaulted to zero. All variables are static for # the life of the program. # # Stack machine calculator # # This package implements a stack machine calculator. This calculator starts # with a single word name. That word is then searched for in several # locations: # # - definitions file # - instrument name list # - operation list # - array limits # - numeric constant # # The definitions file is simply a list of names and their values. If a # word is found, it is replaced by the value (which is a string). That value # in turn is parsed in the same manner as the original word. # # If the word is found in the list of instrument names, the data for that # instrument at the given time is pushed onto the stack. The instrument names # currently supported are listed in /carg/src/ # # - fsk -- FSK data record # - pcasp -- PCASP-100 data record # # Obviously many other record types have yet to be added. # # IMPORTANT You must have a one-to-one correspondence between the input data # records and these instrument names. Simply stuff everything into a single # array, no matter how different the data are. Note that the PCASP array has # the sample time in its first element, followed by the counts. Thus the # sampling time must be accessed via "pcasp 1:1". # If one of the below words is found in the list of operations, the specified # operation is executed, popping its arguments off the stack and pushing the # result onto the stack. The functions currently supported: # # BE VERY CAREFUL USING "NOT EQUAL" AND "EQUAL" commands since we are dealing # with floats here and they are bound to have ROUNDING PROBLEMS and won't perform # the correct action. # # OPERATORS and FUNCTIONS are 3 or 4 letters long and in CAPS. They are: # # - NUL -- does nothing. # - ADD -- adds TOS to TOS-1. TOS-1 is changed as you go so if you're adding a # constant to an array, make sure the constant is TOS. # - SUB -- subtracts TOS-1 from TOS. # - MUL -- multiplies the TOS and TOS-1. # - DIV -- divides the TOS by TOS-1. # - DND -- applies the dn/dlogd operation using TOS and TOS-1. # - LOG -- takes the logarithm (base 10) of TOS. # - SUM -- adds the contents of TOS (array). # - EXP -- raises TOS to the exponential. # - SQT -- takes the square root of TOS. # - ABS -- takes the abs value of TOS. # - LSS -- if TOS-1 is < TOS, then push 1 ow 0. # - GTR -- if TOS-1 is > TOS, then push 1 ow 0. # - LTE -- if TOS-1 <= TOS, then push 1 ow 0. # - GTE -- if TOS-1 >= TOS, then push 1 ow 0. # - EQL -- if TOS-1 == TOS, then push 1 ow 0. # - NQL -- if TOS-2 != TOS-1, then push 1 ow 0. # - LSV -- If TOS-3 < TOS-2, then push TOS-1 otherwise push TOS # - GRV -- If TOS-3 >= TOS-2, then push TOS-1 otherwise push TOS # - LTV -- If TOS-3 < TOS-2, then push TOS-1 otherwise push TOS # - GTV -- If TOS-3 > TOS-2, then push TOS-1 otherwise push TOS # - EQV -- If TOS-3 == TOS-2, then push TOS-1 otherwise push TOS # - NQV -- If TOS-3 != TOS-2, then push TOS-1 otherwise push TOS # - FLR -- makes sure TOS-1 is at least TOS, push TOS or TOS-1 (ignores C_bad). # - CIL -- makes sure TOS-1 is at most TOS, push TOS or TOS-1 (ingores C_bad). # - RNG -- if TOS-2 <= TOS <= TOS-1, push 1 ow 0. # - POW -- Take TOS to the TOS-1th power. # - NOT -- If TOS is 0.0, then sets TOS to 1.0. Otherwise, sets TOS to 0.0. # if abs(TOS) < .000000001 then we assume 0. # - AND -- If TOS is not 0.0 and TOS-1 is not 0.0, then set TOS to 1.0 ow 0.0. # - ORR -- If TOS is not 0.0 or TOS-1 is not 0.0, then set TOS to 1.0 ow 0.0. # - RNV -- if TOS-2 <= TOS <= TOS-1, push TOS ow C_bad. # - LGT -- Computes the LOG (base 10) of TOS. # - MOD -- Returns remainder of TOS divided by TOS-1. # - COS -- Computes the cosine of TOS. # - SIN -- Computes the sine of TOS. # - TAN -- Computes the tangent of TOS. # - ACS -- Computes the arccosine of TOS. # - ASN -- Computes the arcsine of TOS. # - ATN -- Computes the arctangent of TOS. # - AT2 -- Computes the arctangent determining the quadrant. # x is TOS-1; y is TOS. # See C documentation for function atan2(). # # - RND -- Round # to nearest whole number # # If the word is a numeric constant, the floating point representation of that # value is pushed onto the stack. # # If the word is an array limit (in the form of "[first:last]" (e.g, [3] and # [12:15])), the current value is popped from the stack, the appropriate # sub-array lifted from it, and pushed onto the stack. # # Each value on the stack is a real-valued array (though, of course, you can # have a single-valued array). If an operation is requested for two different # sized arrays, the "right" thing is usually done. See the code for details. # # # built in specific functions: # - RHTD -- Converts from absolute humidity to dew/front point (old rhotdew) # - DTRH -- Converts from dew/frost point to absolute humidity # # IMPORTANT! # # The first value encountered for a 'name' while the flag state is true, # will be used. # Tolerances should be in seconds. (i.e. 8 or 8.2 seconds). # # default: C_bad = -9999.0; A_Bad = -999; time_error = 0.0; time__format = %02d:%02d:%02d; A_BadRange = -999; A_NoData = -999; A_spare = -9999.0; # PI C_pi = 3.141592654; # knots to m/s C_knot2ms = 0.51440; C_ms2knot = 1.94401; # degs to radians C_deg2rad = 0.017453292; # degs to radians C_rad2deg = 57.29577951; # feet to meters C_feet2meter = 0.3048; # meters to feet C_meter2feet = 3.280839895; #--------------------------------------- # # TANS VECTOR position # tans-lat = tanspos [1]; tans-lat-tol = 50; tans-lat-fmt = %7.2f; tans-lat-unt = deg; tans-lat-min = -60.0; tans-lat-max = -10.0; tans-lon = tanspos [2]; tans-lon-tol = 50; tans-lon-fmt = %7.2f; tans-lon-unt = deg; tans-lon-min = 5.0; tans-lon-max = 60.0; tans-alt = tanspos [3]; tans-alt-tol = 10; tans-alt-fmt = %7.1f; tans-alt-unt = meters; tans-alt-min = -50.0; tans-alt-max = 40000.0; galt = tanspos [3]; galt-tol = 10; galt-fmt = %7.1f; galt-unt = meters; galt-min = -50.0; galt-max = 40000.0; tans-altft = tanspos [3] C_meter2feet MUL; tans-altft-tol = 10; tans-altft-fmt = %7.1f; tans-altft-unt = feet; tans-altft-min = -50.0; tans-altft-max = 40000.0; #--------------------------------------- # # TANS VECTOR velocity # # velx - (easterly aircraft speed) # vely - (northerly aircraft speed) # velz - (upward aircraft speed) tans-velx = tansvel [1]; tans-velx-tol = 10; tans-velx-fmt = %7.2f; tans-velx-unt = m/s; tans-velx-min = -5000.0; tans-velx-max = 5000.0; tans-vely = tansvel [2]; tans-vely-tol = 10; tans-vely-fmt = %7.2f; tans-vely-unt = m/s; tans-vely-min = -5000.0; tans-vely-max = 5000.0; tans-velz = tansvel [3]; tans-velz-tol = 10; tans-velz-fmt = %7.2f; tans-velz-unt = m/s; tans-velz-min = -5000.0; tans-velz-max = 5000.0; tans-grspeed = tans-vely tans-vely MUL tans-velx tans-velx MUL ADD SQT; tans-grspeed-tol = 10; tans-grspeed-fmt = %7.2f; tans-grspeed-unt = m/s; tans-grspeed-min = -10.0; tans-grspeed-max = 200.0; #--------------------------------------- # # TANS Vector Attitude Record # tans-roll = tansatt [1]; tans-roll-tol = 10; tans-roll-fmt = %5.1f; tans-roll-unt = deg; tans-roll-min = -180.0; tans-roll-max = 180.0; tans-pitch = tansatt [2]; tans-pitch-tol = 10; tans-pitch-fmt = %5.1f; tans-pitch-unt = deg; tans-pitch-min = -180.0; tans-pitch-max = 180.0; tans-azimth = tansatt [3]; # tans-azimth = 360 tansatt [3] 19 ADD MOD; tans-azimth-tol = 10; tans-azimth-fmt = %6.1f; tans-azimth-unt = deg from true N; tans-azimth-min = 0.0; tans-azimth-max = 360.0; #--------------------------------------- # # Best Tstat # tstatb = tstatr; tstatb-tol = 5; tstatb-fmt = %5.1f; tstatb-unt = degC; #--------------------------------------- # # Tstat from the reverse flow thermometer. # ttotr = a2d_chan7 10.0 MUL -10.0 ADD; ttotr-tol = 20; ttotr-fmt = %5.1f; ttotr-unt = degC; tstatr = tasb tasb MUL 0.0004 MUL ttotr SUB; tstatr-tol = 20; tstatr-fmt = %5.1f; tstatr-unt = degC; #--------------------------------------- # # Static Temperature from the rosemount probe. # C_tstat_factor = 0.0005; C_tstat_heat_on_temp = 4.0; C_tstat_heat_off_temp = 6.0; C_tstat_heat_on = 0; C_tstat_heat_error = -0.25; # Figure tstat with no heat error correction V_tstat_nocor = tasb tasb MUL C_tstat_factor MUL ttot SUB; # Handle heating error Variable $HEAT_ON is static and defaults to 0.0. # if stat_nocor <= 6 and heat_on = 1, or # if stat_nocor <= 4 and heat_on = 0, then heat_on = 1 else heat_on = 0 $HEAT_ON = V_tstat_nocor C_tstat_heat_off_temp LTE HEAT_ON AND V_tstat_nocor C_tstat_heat_on_temp LTE HEAT_ON NOT AND ORR; # Computer error C_tstat_err = HEAT_ON C_tstat_heat_error MUL; tstat = C_tstat_err V_tstat_nocor ADD; tstat-unt = degC; tstat-fmt = %5.1f; tstat-tol = 20; tstat-min = -100; tstat-max = 100; #--------------------------------------- # # pvm100A # # Liquid water content #lwpvm-dsc = Liquid Water Content - pvm100A; # C_lwcpvm_zero = 0.0; # span/5 = 6.235/5 = 1.247; THis must have been something jack had done, because the default span # works well (1.0). C_lwcpvm_xspan = .2; lwpvm = a2d_chan32 0.2 MUL 0.000000 FLR; lwpvm-unt = g/m3; lwpvm-fmt = %5.3f; lwpvm-tol = 20; lwpvm-min = 0; lwpvm-max = 10; # Raw pvm Surface Area (volt * xspan) + zero # xspan = span/5 (14363.6/5 = 2872.72) # C_psapvm_xspan = 2872.72; # C_psapvm_zero = 0.0; # psapvm-dsc = Raw Particle Surface Area - (pvm100a) psapvm = a2d_chan33 2872.72 MUL 0.00 FLR; psapvm-unt = cm2/m3; psapvm-min = 0; psapvm-max = 100000; psapvm-fmt = %6d; # sapvm uses the fssp100 drop rate. Where do we get this? # For now, just make it equal to psapvm. sapvm = psapvm; sapvm-unt = cm2/m3; sapvm-min = 0; sapvm-max = 100000; sapvm-fmt = %6d; # Raw pvm Effective radius # span = 64.65 # zero = 0.0 # xspan = 64.65/5 = 12.93 erpvm = a2d_chan34 12.93 MUL 0.00 FLR; erpvm-unt = um; erpvm-fmt = %5.2f; erpvm-min = 0; erpvm-max = 99999; #--------------------------------------- # # DMT probe (formerly king probe) # # lwdmt = old lwkg; # lwdmt_tk = tstatb 273.16 ADD; # lwdmt_twk = 403.16; lwdmt_tflm = 2 403.16 lwdmt_tk ADD DIV; lwdmt_power = 10 a2d_chan22 MUL; # Thermal Conductivity lwdmt_cnd = 1.5 273 lwdmt_tflm DIV POW 125 lwdmt_tflm ADD 398 DIV MUL 0.000058 MUL; # lwdmt_cndw = 1.5 273 403.16 DIV POW 125 403.16 ADD 398 DIV MUL 0.000058 MUL; lwdmt_cndw = 0.0000784364163; # Viscosity lwdmt_visc = 1.5 273 lwdmt_tflm DIV POW 120 lwdmt_tflm ADD 393 DIV MUL 0.0001718 MUL; # lwdmt_vscw = 1.5 273 403.16 DIV POW 120 403.16 ADD 393 DIV MUL 0.0001718 MUL; lwdmt_vscw = .0002316078969; # Density lwdmt_dens = 2870.5 lwdmt_tflm MUL pstat DIV; lwdmt_fct = 6.283185307 lwdmt_cnd MUL lwdmt_tk 403.16 SUB MUL; # The Reynold's Number lwdmt_re = lwdmt_visc 100 lwdmt_dens MUL tasb MUL 0.20 MUL DIV; # Prandtl Numbers lwdmt_prf = lwdmt_cnd 0.24 lwdmt_visc MUL DIV; # lwdmt_prw = lwdmt_cndw 0.24 lwdmt_vscw MUL DIV; lwdmt_prw = 0.708674591; # dry air loss lwdmt_dryp = 0.6 lwdmt_re POW 0.26 MUL 0.37 lwdmt_prf POW MUL 0.25 0.708674591 lwdmt_prf DIV POW MUL 0.239 lwdmt_fct DIV MUL; lwdmt_fact = tasb 100 MUL lwdmt_tk 970.46 SUB MUL 0.239 DIV 123800 MUL; lwdmt = lwdmt_dryp lwdmt_power SUB lwdmt_fact MUL 0.000 FLR; lwdmt-unt = g/m3; lwdmt-tol = 20; lwdmt-fmt = %5.3f; lwdmt-min = 0; lwdmt-max = 5; # lwdmt0-dsc = Liquid water content - DMT Probe (was king); #--------------------------------------- # # Liquid water content # # These supplied by Mr. Tim Garrett. # tas_set = 77.1 # span = 1.05; # zero = 0.0; # xspan = span * tas_set / 5.0 = 16.191; # water = voltage * xspan/tas + zero; # lwjw0-dsc = Liquid water content (zero offset) - JW; lwjw0 = tasb a2d_chan30 16.191 MUL DIV 0.000 FLR; lwjw0-fmt = %5.3f; lwjw0-min = 0; lwjw0-max = 6; lwjw0-unt = g/m3; #--------------------------------------- # # FSSP 300 # #These are global settings for the fssp300. Make sure you unset them. &TOL = 5; &FMT = %d; &UNT = particles; &MIN = 0; &MAX = 10000; V_fssp300_chan0 = fssp300 [9]; V_fssp300_chan1 = fssp300 [10]; V_fssp300_chan2 = fssp300 [11]; V_fssp300_chan3 = fssp300 [12]; V_fssp300_chan4 = fssp300 [13]; V_fssp300_chan5 = fssp300 [14]; V_fssp300_chan6 = fssp300 [15]; V_fssp300_chan7 = fssp300 [16]; V_fssp300_chan8 = fssp300 [17]; V_fssp300_chan9 = fssp300 [18]; V_fssp300_chan10 = fssp300 [19]; V_fssp300_chan11 = fssp300 [20]; V_fssp300_chan12 = fssp300 [21]; V_fssp300_chan13 = fssp300 [22]; V_fssp300_chan14 = fssp300 [23]; V_fssp300_chan15 = fssp300 [24]; V_fssp300_chan16 = fssp300 [25]; V_fssp300_chan17 = fssp300 [26]; V_fssp300_chan18 = fssp300 [27]; V_fssp300_chan19 = fssp300 [28]; V_fssp300_chan20 = fssp300 [29]; V_fssp300_chan21 = fssp300 [30]; V_fssp300_chan22 = fssp300 [31]; V_fssp300_chan23 = fssp300 [32]; V_fssp300_chan24 = fssp300 [33]; V_fssp300_chan25 = fssp300 [34]; V_fssp300_chan26 = fssp300 [35]; V_fssp300_chan27 = fssp300 [36]; V_fssp300_chan28 = fssp300 [37]; V_fssp300_chan29 = fssp300 [38]; V_fssp300_chan30 = fssp300 [39]; V_fssp300_chan31 = fssp300 [40]; &TOL=; &FMT=; &UNT=; &MIN=; &MAX=; # Fssp 300 diameter limits. fsp3dl [1] = .30; fsp3dl [2] = .35; fsp3dl [3] = .40; fsp3dl [4] = .45; fsp3dl [5] = .50; fsp3dl [6] = .55; fsp3dl [7] = .60; fsp3dl [8] = .65; fsp3dl [9] = .70; fsp3dl [10] = .80; fsp3dl [11] = .90; fsp3dl [12] = 1.00; fsp3dl [13] = 1.20; fsp3dl [14] = 1.40; fsp3dl [15] = 1.70; fsp3dl [16] = 2.00; fsp3dl [17] = 2.50; fsp3dl [18] = 3.00; fsp3dl [19] = 3.50; fsp3dl [20] = 4.00; fsp3dl [21] = 4.50; fsp3dl [22] = 5.00; fsp3dl [23] = 6.00; fsp3dl [24] = 7.00; fsp3dl [25] = 8.00; fsp3dl [26] = 9.00; fsp3dl [27] = 10.00; fsp3dl [28] = 12.00; fsp3dl [29] = 14.00; fsp3dl [30] = 16.00; fsp3dl [31] = 18.00; fsp3dl [32] = 20.00; fsp3dl-unt = um; fsp3dl-fmt = %5.2f; # fssp300 Total Count spectrum fsp3n = fssp300 [9:40]; fsp3n-tol = 20; fsp3n-fmt = %5d; fsp3n-min = 0; fsp3n-max = 99999; # fsp300 total count fsp3t = fsp3n SUM; fsp3t-tol = 20; fsp3t-fmt = %5d; fsp3t-min = 0; fsp3t-max = 99999; # fssp300 sample area; fsp3sa = .04; fsp3sa-unt = mm2; fsp3sa-fmt = %6.2f; # fssp300 concentration spectrum fsp3dn = V_fsp3sv fsp3n DIV; V_fsp3_sample_time = pcasp100 [4] 0.001 MUL; V_fsp3sv = fsp3sa tasb MUL V_fsp3_sample_time MUL; # fssp300 Concentration cumulative fsp3rt = fsp3dn CML; #--------------------------------------- # # PCASP 100 # # pcaspa # This is the percentage of time that the PCASP processor is active, # either while counting or processing a paricle. # The value is in percent, and the scaling maps [0..5]V onto [0..100]% # # WHERE ARE WE GETTING ACTIVITY FROM AFTER FLIGHT 1800? default: pcaspa_raw = 327.68 pcasp100 [8] DIV; default: # Use old good value if current one is bad. $PCASPAOLD = pcaspa_raw -1 PCASPAOLD pcaspa_raw LTV; pcaspa = PCASPAOLD; pcaspa-tol = 20; pcaspa-fmt = %5.1f; pcaspa-unt = %; pcaspa-min = 0; pcaspa-max = 100; #pcaspn #Retrieves the raw counts # (1 - (0.0052*activity))) pcaspn = pcasp100 [9:24] 0.0052 pcaspa MUL 1 SUB MUL; pcaspn-tol = 20; pcaspn-fmt = %5d; #pcasdn # pcasp concentration #/cm3 # C_pcasp_flow = 1.5; V_sample_time_pms = 1000 pcasp100 [4] DIV; pcaspdn = 1.5 V_sample_time_pms MUL pcaspn DIV; pcaspdn-tol = 30; pcaspdn-fmt = %9.4f; pcaspdn-unt = /cc; pcaspdn-min = 0; pcaspdn-max = 1000000; # Pcasp Total Concentration pcasprt = pcaspdn SUM; pcasprt-tol = 20; pcasprt-unt = /cc; pcasprt-fmt = %9.4f; #These are global settings for the pcasp100. Make sure you unset them. &TOL = 5; &FMT = %d; &UNT = particles; &MIN = 0; &MAX = 10000; V_pcasp100_chan0 = pcasp100 [9]; V_pcasp100_chan1 = pcasp100 [10]; V_pcasp100_chan2 = pcasp100 [11]; V_pcasp100_chan3 = pcasp100 [12]; V_pcasp100_chan4 = pcasp100 [13]; V_pcasp100_chan5 = pcasp100 [14]; V_pcasp100_chan6 = pcasp100 [15]; V_pcasp100_chan7 = pcasp100 [16]; V_pcasp100_chan8 = pcasp100 [17]; V_pcasp100_chan9 = pcasp100 [18]; V_pcasp100_chan10 = pcasp100 [19]; V_pcasp100_chan11 = pcasp100 [20]; V_pcasp100_chan12 = pcasp100 [21]; V_pcasp100_chan13 = pcasp100 [22]; V_pcasp100_chan14 = pcasp100 [23]; V_pcasp100_chan15 = pcasp100 [24]; &TOL =; &FMT =; &UNT =; &MIN =; &MAX =; # PCASP Diameter Limits pcaspdl [1] = 0.10; # diameter limits in um # pcaspdl [2] = 0.12; pcaspdl [3] = 0.14; pcaspdl [4] = 0.17; pcaspdl [5] = 0.20; pcaspdl [6] = 0.25; pcaspdl [7] = 0.30; pcaspdl [8] = 0.40; pcaspdl [9] = 0.50; pcaspdl [10] = 0.70; pcaspdl [11] = 0.90; pcaspdl [12] = 1.20; pcaspdl [13] = 1.50; pcaspdl [14] = 2.00; pcaspdl [15] = 2.50; pcaspdl [16] = 3.00; pcaspdl-unt = um; pcaspdl-fmt = %5.2f; #--------------------------------------- # # FSSP 100 # fssp_samp = fssp100 [4]; V_fssp100_chan0 = fssp100 [9]; V_fssp100_chan1 = fssp100 [10]; V_fssp100_chan2 = fssp100 [11]; V_fssp100_chan3 = fssp100 [12]; V_fssp100_chan4 = fssp100 [13]; V_fssp100_chan5 = fssp100 [14]; V_fssp100_chan6 = fssp100 [15]; V_fssp100_chan7 = fssp100 [16]; V_fssp100_chan8 = fssp100 [17]; V_fssp100_chan9 = fssp100 [18]; V_fssp100_chan10 = fssp100 [19]; V_fssp100_chan11 = fssp100 [20]; V_fssp100_chan12 = fssp100 [21]; V_fssp100_chan13 = fssp100 [22]; V_fssp100_chan14 = fssp100 [23]; V_fssp100_chan15 = fssp100 [24]; # fspn - Particle count spectrum fspn = fssp100 [9:24]; fspn-fmt = %5d; # fspsr - fssp 100 sampling ratio # C_fssp_staticsr = 0.563; fspsr = V_fspsr1 0.0 0.563 V_fspsr1 LTV; V_fspsr1 = V_fspsr 1.0 0.563 V_fspsr GTV; V_fspsr = V_ri fspn [1] ADD V_ri DIV; V_ri = fspn [2:16] SUM; fspsr-fmt = %5.3f; # fspsa - Sample area # # base area = dof * bw # # C_fssp_dof = .279; # C_fssp_bw = 0.022; fspsa = 0.006138 fspsr MUL; fspsa-fmt = %6.5f; fspsa-unt = cm2; # fspdnr - Raw particle concentration spectrum fspdnr = V_fspdnr_vol fspn DIV; V_fspdnr_vol = fspsa tasb fssp100 [4] 0.1 MUL MUL MUL; fspdnr-fmt = %7.1f; fspdnr-unt = /cc; # fspt = Total particle count fspt = fspn SUM; fspt-fmt = %5d; # # fspcn - Cumulative particle concentration spectrum # fspcn = fspdn CML; fspcn-fmt = %7.1f; fspcn-unt = /cc; # fspcf - Correction factor # # C_fssp_blen = 1.50; # C_fssp_tau1 = 7.80; # C_fssp_tau2 = 2.30; # # from Baumgartner, Strapp, Dye, _JAOT_, 1985-12 -- # # estimate strobes outside dof. 4.45*no strobes # # SNO = (blen - dof) * no strobes / dof # fssp_SNO = 4.376344086 fspt MUL; # # # "no strobes" and SNO are the total number of particles passing within # and outside the depth-of-field, respectively, during the sample # period. Now calculate the average transit time. # # TAUTM = 0.78 * bw * (10000.0 / air speed) # fssp_TAUTM = tasb 171.6 DIV; # # 2.145 usec @ 80m/sec, 1.76 usec @ 100 m/sec # activity = no strobes * (TAU1+TAUTM) + SNO * (TAU2+TAUTM) # IF (activity .LE. 0.) activity = 0.0 # fssp_actpre = fspt 7.80 fssp_TAUTM ADD MUL fssp_SNO 2.30 fssp_TAUTM ADD MUL ADD 0.0 FLR; # # Use this activity to find the correction factor for coincidence and # deadtime losses. # # activity = 1.0E-6 * activity / sample time # fssp_activity = fssp100 [4] 0.001 fssp_actpre MUL DIV; # # The 0.73 constant is an empirical factor found from computer simula- # tions which takes into account particles which are still in the beam # at the end of a reset delay period. # # correction = 1.0 / (1.0 - 0.73*activity) # fspcf = 0.73 fssp_activity MUL 1.0 SUB 1.0 DIV; fspcf-fmt = %5.3f; # fspdna - Activity adjusted particle concentration spectrum fspdna = fspcf fspdnr MUL; fspdna-fmt = %7.1f; fspdna-unt = /cc; # fspdn (Particle concentration spectrum) fspdn = fspdna; fspdn-fmt = %7.1f; fspdn-unt = /cc; # fssp100 total concentration fsprt = fspdn [2:16] SUM; fsprt-fmt = %5d; fsprt-unt = /cc; fsprt-tol = 20; # # fssp ideal diameter table according to Tim Garrett. # fspdl [1] = 1.70; fspdl [2] = 4.05; fspdl [3] = 6.80; fspdl [4] = 9.72; fspdl [5] = 12.00; fspdl [6] = 14.32; fspdl [7] = 16.77; fspdl [8] = 19.69; fspdl [9] = 22.93; fspdl [10] = 26.46; fspdl [11] = 30.10; fspdl [12] = 33.38; fspdl [13] = 36.59; fspdl [14] = 39.75; fspdl [15] = 43.33; fspdl [16] = 47.00; fspdl-unt = um; fspdl-fmt = %5.2f; # # fssp centers based on diameter limits # # Precomputed to save time. # fspd = 2 fspdl [1:15] fspdl [2:16] ADD DIV; fspd [1] = 2.875; # 4.05 + 1.70 fspd [2] = 5.425; # 6.80 + 4.05 fspd [3] = 8.26; # 9.72 + 6.80 fspd [4] = 10.86; # 12.00 + 9.72 fspd [5] = 13.16; # 14.32 + 12.00 fspd [6] = 15.545; # 16.77 + 14.32 fspd [7] = 18.23; # 19.69 + 16.77 fspd [8] = 21.31; # 22.93 + 19.69 fspd [9] = 24.695; # 26.46 + 22.93 fspd [10] = 28.28; # 30.10 + 26.46 fspd [11] = 31.74; # 33.38 + 30.10 fspd [12] = 34.985; # 36.59 + 33.38 fspd [13] = 38.17; # 39.75 + 36.59 fspd [14] = 41.54; # 43.33 + 39.75 fspd [15] = 45.165; # 47.00 + 43.33 fspd-unt = um; fspd-fmt = %5.2f; # # fssp 100 particle volume spectrum # # 0.523599 = pi /6.0 # fspdv = 3 fspd POW 0.523599 MUL fspdn MUL; C_fspdv [1] = 12.4426295; C_fspdv [2] = 83.59837774; C_fspdv [3] = 295.0793134; C_fspdv [4] = 670.6379075; C_fspdv [5] = 1193.345748; C_fspdv [6] = 1966.848013; C_fspdv [7] = 3172.185884; C_fspdv [8] = 5066.977449; C_fspdv [9] = 7885.436046; C_fspdv [10] = 11842.32124; C_fspdv [11] = 16742.46461; C_fspdv [12] = 22420.44649; C_fspdv [13] = 29118.23872; C_fspdv [14] = 37531.68813; C_fspdv [15] = 48239.70752; fspdv = C_fspdv fspdn MUL; fspdv-unt = um3/cc; fspdv-fmt = %7.0f; # # fspds - Particle surface area spectrum -- FSSP-100 # C_fspds = C_pi fspd fspd MUL MUL; fspds = C_fspds fspdn MUL; fspds-fmt = %7.0f; fspds-unt = um2/cc; fspds-min = 0; # # fspcs - Cumulative particle surface area spectrum -- FSSP-100 # fspcs = fspds CML; fspcs-fmt = %7.0f; fspcs-unt = um2/cc; fspcs-min = 0; # # fssp 100 liquid water (g/m3) # # liquid water (m/m^3) = total volume(um^3/cm^3) * 1.e-12(cm^3/um^3) * # 1.0(g h2o/cm^3 h2o) * 1e6(cm^3 / m^3) # # lwfsp = fspdv SUM 0.000001 MUL; lwfsp-fmt = %5.3f; lwfsp-unt = g/m3; # # lwfspa - Activity adjusted liquid water content # fspdva - Activity adjusted volume spectrum # fspdva = C_fspdv fspdna MUL; lwfspa = fspdva SUM 0.000001 MUL; lwfspa-unt = g/m3; lwfspa-fmt = %5.3f; #--------------------------------------- # # OAP200X # # [1] = # of bins; # [2] = counters activated (bit flags). # [3] = What range (usually 0). # [4] = total clock sample time. # [5] = counter #1 # [6] = counter #2 # [7] = counter #3 # [8] = counter #4 # [9] = bin 0 count # ... # [24 = bin 15 count V_oap200x_chan0 = oap200x [9]; V_oap200x_chan1 = oap200x [10]; V_oap200x_chan2 = oap200x [11]; V_oap200x_chan3 = oap200x [12]; V_oap200x_chan4 = oap200x [13]; V_oap200x_chan5 = oap200x [14]; V_oap200x_chan6 = oap200x [15]; V_oap200x_chan7 = oap200x [16]; V_oap200x_chan8 = oap200x [17]; V_oap200x_chan9 = oap200x [18]; V_oap200x_chan10 = oap200x [19]; V_oap200x_chan11 = oap200x [20]; V_oap200x_chan12 = oap200x [21]; V_oap200x_chan13 = oap200x [22]; V_oap200x_chan14 = oap200x [23]; V_oap200x_chan15 = oap200x [24]; # Oap200x diameter limits. cpdl [1] = 7.10; cpdl [2] = 17.00; cpdl [3] = 26.90; cpdl [4] = 36.80; cpdl [5] = 46.70; cpdl [6] = 56.60; cpdl [7] = 66.40; cpdl [8] = 76.20; cpdl [9] = 86.10; cpdl [10] = 96.00; cpdl [11] = 105.90; cpdl [12] = 115.60; cpdl [13] = 125.50; cpdl [14] = 135.30; cpdl [15] = 145.20; cpdl [16] = 155.00; cpdl-unt = um; cpdl-fmt = %5.2f; # # oap200x centers based on diameter limits # # Precomputed to save time. # cpd = 2 cpdl [1:15] cpdl[2:16] ADD DIV; cpd [1] = 12.05; # ( 17.00 + 7.10)/2 cpd [2] = 21.95; # ( 26.90 + 17.00)/2 cpd [3] = 31.85; # ( 36.80 + 26.90)/2 cpd [4] = 41.75; # ( 46.70 + 36.80)/2 cpd [5] = 51.65; # ( 56.60 + 46.70)/2 cpd [6] = 61.50; # ( 66.40 + 56.60)/2 cpd [7] = 71.3; # ( 76.20 + 66.40)/2 cpd [8] = 81.15; # ( 86.10 + 76.20)/2 cpd [9] = 91.05; # ( 96.00 + 86.10)/2 cpd [10] = 100.95; # (105.90 + 96.00)/2 cpd [11] = 110.75; # (115.60 + 105.90)/2 cpd [12] = 120.55; # (125.50 + 115.60)/2 cpd [13] = 130.4; # (135.30 + 125.50)/2 cpd [14] = 140.25; # (145.20 + 135.30)/2 cpd [15] = 150.1; # (155.00 + 145.20)/2 cpd-unt = um; cpd-fmt = %5.2f; # oap200x Counts cpn = oap200x [9:24]; cpn-fmt = %d; cpn-unt = count; # oap200x Sample Area (but not in correct units for cpsa) C_pmscp_sa [1] = 0.021; C_pmscp_sa [2] = 0.157; C_pmscp_sa [3] = 0.451; C_pmscp_sa [4] = 0.828; C_pmscp_sa [5] = 1.200; C_pmscp_sa [6] = 1.607; C_pmscp_sa [7] = 2.033; C_pmscp_sa [8] = 2.469; C_pmscp_sa [9] = 2.902; C_pmscp_sa [10] = 3.312; C_pmscp_sa [11] = 3.680; C_pmscp_sa [12] = 3.996; C_pmscp_sa [13] = 4.251; C_pmscp_sa [14] = 4.426; C_pmscp_sa [15] = 4.506; # oap200x Sample Area (cpsa) cpsa = 100 C_pmscp_sa DIV; cpsa-unt = /cc; cpsa-fmt = %5.2f; #oap200x Concentrations # GTV means if TOS-3 >= TOS-2, then TOS-1 else TOS. V_sl = tasb 100.0 MUL oap200x [4] MUL; V_dn_denom = cpsa V_sl MUL; cpdn = V_dn_denom 0.00000001 V_dn_denom cpn DIV 0.0 GTV; cpdn-unt = /cc; cpdn-fmt = %7.5f; # oap200x Concentration Volumes C_dcubed_diam = 6 pi DIV cpd cpd cpd MUL MUL MUL; cpdv = C_dcubed_diam cpdn MUL; cpdv-unt = um3/cc; cpdv-fmt = %7.1f; # oap200x Total Concentration cprt = cpdn [2:16] SUM 1000 MUL; cprt-unt = /l; cprt-fmt = %5d; # # reff # Effective radius -- PMS OAP 200X & FSSP-100 # A lot of this could be precomputed. # Idea for enhancement would be to set a flag for a variable so that # once it is computed once, it should never be computed again even # if the time changes. (a CONSTANT flag). Maybe switch C_ to mean # constant and switch all current C_ to V_ (for variable). # C_fspd2 = 2 fspd DIV; C_fsp_r2 = C_fspd2 C_fspd2 MUL; C_fsp_r3 = C_fsp_r2 C_fspd2 MUL; C_cpd2 = 2 cpd DIV; C_cp_r2 = C_cpd2 C_cpd2 MUL; C_cp_r3 = C_cp_r2 C_cpd2 MUL; V_reff_sum_r2 = fspdn C_fsp_r2 MUL SUM cpdn C_cp_r2 MUL SUM ADD; V_reff_sum_r3 = fspdn C_fsp_r3 MUL SUM cpdn C_cp_r3 MUL SUM ADD; # If C_reff_sum_r2 != 0, then put sumr3/sumr2, otherwise put C_bad. reff = fsprt 1.0 V_reff_sum_r2 0 V_reff_sum_r2 V_reff_sum_r3 DIV C_bad NQV 0 GTV; reff-unt = um; reff-fmt = %5.1f; #--------------------------------------- # IR THERMOMETER #------------- # default: irt = irtherm; irtemp = irtherm [1]; irtemp-tol = 20; irtemp-fmt = %d; irtemp-unt = C; irtemp-min = -200; irtemp-max = 200; #--------------------------------------- # SHADIN #------------- # shadin_ias = shadin [9] C_knot2ms MUL; shadin_ias-tol = 20; shadin_ias-fmt = %.1f; shadin_ias-unt = m/s; shadin_ias-min = 0; shadin_ias-max = 999; shadin_tas = shadin [10] C_knot2ms MUL; shadin_tas-tol = 20; shadin_tas-fmt = %.1f; shadin_tas-unt = m/s; shadin_tas-min = 0; shadin_tas-max = 999; shadin_mach = shadin [11]; shadin_mach-tol = 20; shadin_mach-fmt = %.3f; shadin_mach-unt = mach; shadin_mach-min = 0; shadin_mach-max = 3; shadin_palt = shadin [12] C_feet2meter MUL; shadin_palt-tol = 20; shadin_palt-fmt = %.1f; shadin_palt-unt = meters; shadin_palt-min = 0; shadin_palt-max = 60000; shadin_dalt = shadin [13] C_feet2meter MUL; shadin_dalt-tol = 20; shadin_dalt-fmt = %.1f; shadin_dalt-unt = meters; shadin_dalt-min = 0; shadin_dalt-max = 60000; shadin_ttemp = shadin [14]; shadin_ttemp-tol = 20; shadin_ttemp-fmt = %d; shadin_ttemp-unt = deg C; shadin_ttemp-min = -99; shadin_ttemp-max = 99; shadin_winddir = shadin [15]; shadin_winddir-tol = 20; shadin_winddir-fmt = %d; shadin_winddir-unt = deg from mag N; shadin_winddir-min = 0; shadin_winddir-max = 360; shadin_windspd = shadin [16] C_knot2ms MUL; shadin_windspd-tol = 20; shadin_windspd-fmt = %.1f; shadin_windspd-unt = m/s; shadin_windspd-min = 0; shadin_windspd-max = 999; shadin_drift = shadin [17]; shadin_drift-tol = 20; shadin_drift-fmt = %d; shadin_drift-unt = degs right; shadin_drift-min = -99; shadin_drift-max = 99; shadin_delta_palt = shadin [18]; shadin_delta_palt-tol = 20; shadin_delta_palt-fmt = %d; shadin_delta_palt-unt = feet/min; shadin_delta_palt-min = -9999; shadin_delta_palt-max = 9999; shadin_heading = shadin [19]; shadin_heading-tol = 20; shadin_heading-fmt = %d; shadin_heading-unt = deg from mag N; shadin_heading-min = 0; shadin_heading-max = 360; shadin_stemp = shadin [20]; shadin_stemp-tol = 20; shadin_stemp-fmt = %d; shadin_stemp-unt = degs C; shadin_stemp-min = -99; shadin_stemp-max = 99; #--------------------------------------- # COMPUTED WINDS (from tans/shadin) #------------- # C_tas_err = 1.0; C_hdg_err = 0.0; C_max_rate_of_turn = 1.0; C_mag_deviation = -13.0; V_track_rad = tans-azimth C_deg2rad MUL; V_heading_rad = C_mag_deviation shadin_heading ADD C_deg2rad MUL; V_dangle = V_track_rad V_heading_rad SUB ABS; V_dangle_deg = C_deg2rad V_dangle DIV; #_____________________________________________________________ # Compute wind speed from law of Cosines using drift angle, # shadin true airspeed, shadin heading, and tans ground speed. #_____________________________________________________________ # W_spd_1 = 2 tans-grspeed shadin_tas MUL MUL V_dangle COS MUL; W_spd_2 = tans-grspeed tans-grspeed MUL; W_spd_3 = shadin_tas shadin_tas MUL; W_spd = W_spd_1 W_spd_2 W_spd_3 ADD SUB SQT; W_alpha_1 = tans-grspeed tans-grspeed MUL; W_alpha_2 = shadin_tas shadin_tas MUL W_spd W_spd MUL ADD; W_alpha_3 = 2 shadin_tas tans-grspeed MUL MUL; W_alpha = W_alpha_3 W_alpha_1 W_alpha_2 SUB DIV ACS 3.1416 SUB; W_dir_1 = shadin_heading W_alpha C_rad2deg MUL ADD 360 ADD; W_dir = 360 W_dir_1 MOD; wind_north = 4.0 V_dangle tans-grspeed V_track_rad COS MUL shadin_tas V_heading_rad COS MUL SUB C_bad GRV; wind_north-tol = 20; wind_north-fmt = %-8.2f; wind_north-unt = m/s; wind_north-min = -500; wind_north-max = 500; wind_east = 4.0 V_dangle tans-grspeed V_track_rad SIN MUL shadin_tas V_heading_rad SIN MUL SUB C_bad GRV; wind_east-tol = 20; wind_east-fmt = %-8.2f; wind_east-unt = m/s; wind_east-min = -500; wind_east-max = 500; V_wind_spd = wind_north wind_north MUL wind_east wind_east MUL ADD SQT; wind_spd = 4.0 V_dangle V_wind_spd C_ms2knot MUL C_bad GRV; wind_spd-tol = 20; wind_spd-fmt = %-8.2f; wind_spd-unt = knots; wind_spd-min = -500; wind_spd-max = 500; wind_dir = 4.0 V_dangle wind_north wind_east AT2 C_rad2deg MUL C_bad GRV; wind_dir-tol = 20; wind_dir-fmt = %-8.2f; wind_dir-unt = deg from mag N; wind_dir-min = -360; wind_dir-max = 360; # # difusion battery # C_difbat_flow = 23.6; default: #--------------------------------------- # # Total Temperature (Rosemont 102) # # retrieves the total temperature measured by the platinum wire # # note: there are actually two ranges for this instrument # but only one has been used since a +/- voltage # recording capability was added. the second range # is ignored by this software. # ttot = a2d_chan6 20 MUL; ttot-tol = 20; ttot-fmt = %5.1f; ttot-unt = degC; ttot-min = -100; ttot-max = 10000; #--------------------------------------- # # True Airspeed (rosemont 831 BA) - (tas) # # span is 250/5 # C_tas_span = 50; # C_tas_zero = 0; C_tas_span = 25.85; C_tas_zero = 83.4011; C_tas_default = 80.0; V_tas_uncorr = a2d_chan9 C_tas_span MUL C_tas_zero ADD; # (tas < tas-min) ? tas_default : tas; tasknt = V_tas_uncorr; tasknt-tol = 20; tasknt-fmt = %5.1f; tasknt-unt = knots; tasknt-min = 90; tasknt-max = 400; V_tas_ms = C_knot2ms V_tas_uncorr MUL; tas = V_tas_ms tas-min C_tas_default V_tas_ms LSV; tas-tol = 20; tas-fmt = %5.1f; tas-unt = m/s; tas-min = 50; tas-max = 200; #-------------------------------------- # # Best TAS # tasb = shadin_tas; tasb-unt = m/s; tasb-min = 50; tasb-max = 200; tasb-fmt = %5.1f; #--------------------------------------- # # Static Pressure rosemont probe # # pstat_raw_xspan --> pstat_raw_span / 5 (1102.5/5) C_pstat_raw_xspan = 220.5; C_pstat_raw_zero = -6.0; pstat = a2d_chan8 C_pstat_raw_xspan MUL C_pstat_raw_zero ADD; pstat-tol = 20; pstat-fmt = %5.0f; pstat-unt = mb; pstat-min = 100; #--------------------------------------- # # Pressure Altitude (palt, derived from pstat) # # palt = scale height * LOG(pstat/surface pressure) C_scale_height = -8.0; C_surfpress = 1013.0; palt = C_scale_height C_surfpress pstat DIV LOG MUL 1000 MUL C_meter2feet MUL; palt-tol = 20; palt-fmt = %6.1f; palt-unt = feet; palt-min = 0; palt-max = 40000; #--------------------------------------- # OPHIR 2K #------------- # # OPHIR CONSTANT VARIABLES # # -- ophir2k ratio value -- orat = 32768.0 ophir2k [4] DIV 0.3 ADD; # -- ophir2k can temperature -- # 0.36048 is the can gn # -14.76 is the can temp offset. ocant = ophir2k [3] 0.36048 MUL -14.76 ADD; ocant-tol = 20; ocant-fmt = %5.1f; ocant-unt = degC; # -- ophir2k air temperature -- # -0.08632 is the beehive gn # 167.27 is the beehive temp offset. oairt = ophir2k [2] -0.08632 MUL 167.27 ADD; oairt-tol = 20; oairt-fmt = %5.1f; oairt-unt = degC; # -- Ophir2k Absolute humidity (by volume) from the OPHIR (rhovo) # C_ophir_bconst = 0.7429; C_ophir_kconst = 0.05109; C_ophir_a0 = 0.7176; C_ophir_a1 = -0.001612; C_ophir_m = 1.54; C_ophir_n = 0.80; C_ophir_oneoverb = C_ophir_bconst 1 DIV; C_ophir_oneoverk = C_ophir_kconst 1 DIV; V_abshum_vol_t = tstatb 273.16 ADD; V_abshum_vol_a = C_ophir_a0 1.0 C_ophir_a1 ocant MUL ADD MUL; V_abshum_vol_ar = 0.00000001 0.9999999999 V_abshum_vol_a orat DIV RNV; V_abshum_vol_pcorr = C_ophir_n pstat 1013.25 DIV POW; V_abshum_vol_tcorr = C_ophir_m 273.16 V_abshum_vol_t DIV POW; V_abshum_vol_rhostar = C_ophir_oneoverb V_abshum_vol_ar LOG C_ophir_oneoverk -1 MUL MUL POW; rhovo = V_abshum_vol_pcorr V_abshum_vol_tcorr V_abshum_vol_rhostar MUL MUL; rhovo-unt = g/m3; rhovo-fmt = %5.2f; rhovo-tol = 20; #--------------------------------------- # # DEW POINT (from the ophir2k) # dp_o = dp_o-min dp_o-max rhovo tstatb RHTD RNV; dp_o-tol = 20; dp_o-fmt = %5.1f; dp_o-unt = degC; dp_o-min = -50.0; dp_o-max = 90.0; #--------------------------------------- # # RELATIVE HUMIDITY (from the ophir2k) # rh_o = rhovo tstatb RHTH; rh_o-tol = 20; rh_o-fmt = %5.1f; rh_o-unt = %; rh_o-min = -200; rh_o-max = 200; #------------------------------------------- # # Relative Humidity from the humidigraph # rhhum = 0.04828 20.06898 a2d_chan35 MUL SUB; rhhum-fmt = %5.2f; rhhum-min = 0; rhhum-max = 100; rhhum-unt = %; #------------------------------ # # dewpoint # # SPAN = 50.0 / 5.0 = 10.0 # ZERO = -10.0 # dp = a2d_chan10 10.0 MUL -10.0 ADD; dp-fmt = %5.1f; dp-unt = degC; dp-tol = 20; rh_chl = dp tstatb DTRH; rh_chl-fmt = %5.2f; rh_chl-unt = %; rh_chl-min = 0; rh_chl-max = 100; #--------------------------------------- # # DMPS # dmpsflow = dmps [1]; dmpsflow-tol = 61; dmpsflow-fmt = %6.3f; dmpsflow-unt = cc/sec; dmpsn = dmps [5:25]; dmpsn-tol = 61; dmpsn-fmt = %6.3f; dmpsn-unt = ?; dmpsdn = dmps [26:46]; dmpsdn-tol = 61; dmpsdn-fmt = %6.3f; dmpsdn-unt = ?; dmpsdl = dmps [47:67]; dmpsdl-tol = 61; dmpsdl-fmt = %6.3f; dmpsdl-unt = ?; #--------------------------------------- # # A2D # &TOL = 3; &FMT = %.4f; &UNT = volts; &MIN = -65535; &MAX = 6555535; a2d_chan0 = 3276.75 32768 a2d [1] SUB DIV; # bksprd a2d_chan1 = 3276.75 32768 a2d [2] SUB DIV; # bkspgr a2d_chan2 = 3276.75 32768 a2d [3] SUB DIV; # bkspbl a2d_chan3 = 3276.75 32768 a2d [4] SUB DIV; # nepred a2d_chan4 = 3276.75 32768 a2d [5] SUB DIV; # nepgrn a2d_chan5 = 3276.75 32768 a2d [6] SUB DIV; # nepblu a2d_chan6 = 3276.75 32768 a2d [7] SUB DIV; # ttot a2d_chan7 = 3276.75 32768 a2d [8] SUB DIV; # ttotr a2d_chan8 = 3276.75 32768 a2d [9] SUB DIV; # pstat a2d_chan9 = 3276.75 32768 a2d [10] SUB DIV; # tas a2d_chan10 = 3276.75 32768 a2d [11] SUB DIV; # dp a2d_chan11 = 3276.75 32768 a2d [12] SUB DIV; # o3tei a2d_chan12 = 3276.75 32768 a2d [13] SUB DIV; # o3 range??? a2d_chan13 = 3276.75 32768 a2d [14] SUB DIV; # co a2d_chan14 = 3276.75 32768 a2d [15] SUB DIV; # a2d_chan15 = 3276.75 32768 a2d [16] SUB DIV; # so2 a2d_chan16 = 3276.75 32768 a2d [17] SUB DIV; # not used a2d_chan17 = 3276.75 32768 a2d [18] SUB DIV; # not used a2d_chan18 = 3276.75 32768 a2d [19] SUB DIV; # not used a2d_chan19 = 3276.75 32768 a2d [20] SUB DIV; # flow1 a2d_chan20 = 3276.75 32768 a2d [21] SUB DIV; # flow2 a2d_chan21 = 3276.75 32768 a2d [22] SUB DIV; # flow3 a2d_chan22 = 3276.75 32768 a2d [23] SUB DIV; # lwdmt a2d_chan23 = 3276.75 32768 a2d [24] SUB DIV; # lwdmt slave a2d_chan24 = 3276.75 32768 a2d [25] SUB DIV; # tsirt a2d_chan25 = 3276.75 32768 a2d [26] SUB DIV; # cnc2 a2d_chan26 = 3276.75 32768 a2d [27] SUB DIV; # rams a2d_chan27 = 3276.75 32768 a2d [28] SUB DIV; # cnc3 a2d_chan28 = 3276.75 32768 a2d [29] SUB DIV; # ralt a2d_chan29 = 3276.75 32768 a2d [30] SUB DIV; # co2 a2d_chan30 = 3276.75 32768 a2d [31] SUB DIV; # lwjw0 a2d_chan31 = 3276.75 32768 a2d [32] SUB DIV; # car position a2d_chan32 = 3276.75 32768 a2d [33] SUB DIV; # lwpvm a2d_chan33 = 3276.75 32768 a2d [34] SUB DIV; # psapvm a2d_chan34 = 3276.75 32768 a2d [35] SUB DIV; # erpvm a2d_chan35 = 3276.75 32768 a2d [36] SUB DIV; # rhhum (humidigraph) a2d_chan36 = 3276.75 32768 a2d [37] SUB DIV; # turb a2d_chan37 = 3276.75 32768 a2d [38] SUB DIV; # no a2d_chan38 = 3276.75 32768 a2d [39] SUB DIV; # nox a2d_chan39 = 3276.75 32768 a2d [40] SUB DIV; # pyrdo a2d_chan40 = 3276.75 32768 a2d [41] SUB DIV; # pyrup a2d_chan41 = 3276.75 32768 a2d [42] SUB DIV; # uvdo a2d_chan42 = 3276.75 32768 a2d [43] SUB DIV; # uvup a2d_chan43 = 3276.75 32768 a2d [44] SUB DIV; # cetsprd a2d_chan44 = 3276.75 32768 a2d [45] SUB DIV; # cetspgr a2d_chan45 = 3276.75 32768 a2d [46] SUB DIV; # cetspbl a2d_chan46 = 3276.75 32768 a2d [47] SUB DIV; a2d_chan47 = 3276.75 32768 a2d [48] SUB DIV; a2d_chan48 = 3276.75 32768 a2d [49] SUB DIV; a2d_chan49 = 3276.75 32768 a2d [50] SUB DIV; &TOL =; &FMT =; &UNT =; &MIN =; &MAX =; #---------------------------------------- # # Ozone Concentration (O3) # # ozone = (ozone raw * surface pressure) / pstat default: &TOL = 10; &FMT = %5.1f; &UNT = ppb; &MIN = 0.0000; &MAX = 100000; # surface pressure = 1013.0 o3 = pstat o3tei 1013.0 MUL DIV 0.00 FLR; # VALUES given by Ricky Sinha 2000 June # tei49c zero = -0.663 # tei49c scale = 94.452 # o3tei = (voltage * scale) + zero default: o3tei = a2d_chan11 94.452 MUL -0.663 ADD 0.00 FLR; &TOL =; &FMT =; &UNT =; &MIN =; &MAX =; #--------------------------------------- # # Sulphur Dioxide Concentration (SO2) # # default: so2 = a2d_chan15 40.512 MUL -1.635 ADD 0.000 FLR; so2-tol = 10; so2-fmt = %5.1f; so2-unt = ppb; so2-min = 0.0; so2-max = 100000; default: so2 = a2d_chan15 40.512 MUL -1.635 ADD 988.4 MUL 295.95 pstat MUL 273.15 tstar ADD DIV MUL 0.000 FLR; >fl1814: so2 = a2d_chan15 40.642 MUL -1.059 ADD 884.2 MUL 295.75 pstat MUL 273.15 tstar ADD DIV MUL 0.000 FLR; default: #---------------------------------------- # # co # # default: co = a2d_chan13 3000 MUL 1.705 ADD 0.00 FLR; co-tol = 20; co-fmt = %5.1f; co-unt = ppb; co-min = 0.0; co-max = 100000; default: co = A_bad; >fl1813: # co = ((chan13 * 361.97) - 1.705) * 1007.75 * ((273.15 + tstatb) / (295.75 *pstat)) co = a2d_chan13 361.97 MUL -1.705 ADD 1007.75 MUL 295.75 pstat MUL 273.15 tstatb ADD DIV MUL 0.00 FLR; >fl1822: co = a2d_chan13 1866.2 MUL -780.62 ADD 884.2 MUL 295.75 pstat MUL 273.15 tstatb ADD DIV MUL 0.00 FLR; default: #---------------------------------------- # # co2 # # default: co2 = a2d_chan29 170.75 MUL 27.196 ADD 0.00 FLR; co2-tol = 20; co2-fmt = %5.1f; co2-unt = ppm; co2-min = 0.0; co2-max = 100000; >fl1822: co2 = a2d_chan29 449.45 MUL -336.08 ADD 0.00 FLR; default: #---------------------------------------------------------- # # TSI 3022A - CNC1 (this has been renamed since old days.) # # cnc1-lds = TSI3022A Condensation Particle Concentration; # cnc1-sds = TSI3022A CPConcen; default: cnc1 = tsi3022 [1]; cnc1-unt = /cc; cnc1-fmt = %#7.2e; cnc1-min = 0.00001; cnc1-tol = 20; cnc1-max = 1000000000; #---------------------------------------------------------- # # TSI 3025A - cnc2 (This has been renamed since old days.) # # cnc2-lds = TSI3025A Condensation Particle Concentration; # cnc2-sds = TSI3025A CPConcen; cnc2 = a2d_chan25 10000 MUL; cnc2-unt = /cc; cnc2-fmt = %#7.2e; cnc2-tol = 20; cnc2-min = 0.00001; cnc2-max = 100000; #-------------------------------------------------------- # # TSI 3760 - cnc3 # # # corrrected cnc3 flow # # cnc3-lds = TSI3025A Condensation Particle Concentration; # cnc3-sds = TSI3025A CPConcen; cnc3 = V_cnc3-uncorr 23.58 0.00000025 MUL MUL EXP V_cnc3-uncorr MUL; cnc3-fmt = %#7.2e; cnc3-unt = /cc; cnc3-min = 0.000001; cnc3-max = 100000.0; # uncorrected cnc3 flow V_cnc3-uncorr = C_difbat_flow V_cnc3-count DIV; V_cnc3-count = a2d_chan27; #--------------------------------------- # # TSI3320 - Aerodynamic Particle Sizer # #tsi3320_chan1 = 487 523 tsi3320 [26] DND; tsidl [1] = 0.487; tsidl [2] = 0.523; tsidl [3] = 0.562; tsidl [4] = 0.604; tsidl [5] = 0.649; tsidl [6] = 0.698; tsidl [7] = 0.750; tsidl [8] = 0.806; tsidl [9] = 0.866; tsidl [10] = 0.931; tsidl [11] = 1.000; tsidl [12] = 1.075; tsidl [13] = 1.155; tsidl [14] = 1.241; tsidl [15] = 1.334; tsidl [16] = 1.433; tsidl [17] = 1.540; tsidl [18] = 1.655; tsidl [19] = 1.778; tsidl [20] = 1.911; tsidl [21] = 2.054; tsidl [22] = 2.207; tsidl [23] = 2.371; tsidl [24] = 2.548; tsidl [25] = 2.738; tsidl [26] = 2.943; tsidl [27] = 3.162; tsidl [28] = 3.398; tsidl [29] = 3.652; tsidl [30] = 3.924; tsidl [31] = 4.217; tsidl [32] = 4.532; tsidl [33] = 4.870; tsidl [34] = 5.233; tsidl [35] = 5.623; tsidl [36] = 6.043; tsidl [37] = 6.494; tsidl [38] = 6.978; tsidl [39] = 7.499; tsidl [40] = 8.058; tsidl [41] = 8.660; tsidl [42] = 9.306; tsidl [43] = 10.000; tsidl [44] = 10.746; tsidl [45] = 11.548; tsidl [46] = 12.409; tsidl [47] = 13.335; tsidl [48] = 14.330; tsidl [49] = 15.399; tsidl [50] = 16.548; # tsidl [51] = 17.783; # tsidl [52] = 19.110; # tsidl [53] = 20.535; tsidl-unt = um; tsidl-fmt = %5.2f; # sample volume in cc/sec -- (instrument volume was in lpm) tsisv = 6 tsi3320_tflow 100 MUL DIV tsi3320_stime MUL; tsisv-unt = cc/sec; tsidn = tsisv 0.031234 MUL tsicnt DIV; tsidn-fmt = %9.4f; tsidn-unt = /cc; tsirt = 1.0 a2d_chan24 SUB 10.0 POW 0.0000 FLR; tsirt-unt = /cc; tsirt-fmt = %5.2f; tsi3320_lspw = tsi3320 [9]; tsi3320_lspw-fmt = %d; tsi3320_lspw-unt = %; tsi3320_lspw-tol = 20; tsi3320_lspw-min = 0; tsi3320_lspw-max = 100; tsi3320_pstat = tsi3320 [1]; tsi3320_tflow = tsi3320 [12]; tsi3320_tinlet = tsi3320 [13]; tsi3320_tbox = tsi3320 [14]; tsi3320_toptics = tsi3320 [15]; tsi3320_count = tsi3320 [25]; tsi3320_stime = tsi3320 [20]; tsicnt = tsi3320 [26:77]; #--------------------------------------- # # 3-wave Nephelometer # # backscatter + total for each of 3 wavelengths. # &TOL = 5; &FMT = %#1.1e; &UNT = \m; &MIN = 0.000000001; &MAX = 1.0; # Norm Alquist's 3 -wave nepholometer bksprd = 0.000001 7 a2d_chan0 SUB 10 POW SUB 0.0000000 FLR; bkspgr = 0.000001 7 a2d_chan1 SUB 10 POW SUB 0.0000000 FLR; bkspbl = 0.000001 7 a2d_chan2 SUB 10 POW SUB 0.0000000 FLR; nepred = 0.000001 7 a2d_chan3 SUB 10 POW SUB 0.0000000 FLR; nepgrn = 0.000001 7 a2d_chan4 SUB 10 POW SUB 0.0000000 FLR; nepblu = 0.000001 7 a2d_chan5 SUB 10 POW SUB 0.0000000 FLR; # CE Nepholometer (points to Norm's right now until it's installed). cetsprd = 7 a2d_chan43 SUB 10 POW 0.00000000 FLR; cetspgr = 7 a2d_chan44 SUB 10 POW 0.00000000 FLR; cetspbl = 7 a2d_chan45 SUB 10 POW 0.00000000 FLR; &TOL =; &FMT =; &UNT =; &MIN =; &MAX =; #------------------------- # # Flow Meters # flow1 = 1.00554 a2d_chan19 19.98 MUL 26.4661 ADD DIV; flow1-fmt = %4.1f; flow1-unt = Lpm; flow2 = 0.97971 2.51649 a2d_chan20 19.98 MUL SUB DIV; flow2-fmt = %4.1f; flow2-unt = Lpm; flow3 = 0.94769 a2d_chan21 19.98 MUL 6.01730 ADD DIV; flow3-fmt = %4.1f; flow3-unt = Lpm; #---------------------------- # # RAMS # rams = 7.0 a2d_chan26 SUB 10 POW; rams-unt = /m; rams-fmt = %#5.2e; #---------------------------- # # Radar Altimeter # # ralt = 27.2 2.45 a2d_chan28 POW MUL 130 ADD; # ralt = a2d_chan28 a2d_chan28 217.27 a2d_chan28 -26.127 a2d_chan28 8.678 MUL ADD MUL ADD MUL MUL; ralt = a2d_chan28 8.678 MUL -26.127 ADD a2d_chan28 MUL 217.27 ADD a2d_chan28 MUL; ralt-unt = ft; ralt-fmt = %8d; ralt-min = 0; ralt-max = 2500; ralt-tol = 20; #----------------------------- # # UV Radiometers # uvdo = a2d_chan41 13.97 MUL; uvdo-unt = W/m2; uvdo-fmt = %5.1f; uvdo-min = 0; uvdo-max = 9999; uvup = a2d_chan42 -13.97 MUL; uvup-unt = W/m2; uvup-fmt = %5.1f; uvup-min = -9999; uvup-max = 9999; uvalb = uvdo uvup DIV; uvalb-fmt = %5.3f; uvalb-min = -100; uvalb-max = 100; #----------------------------- # # Pyranometers - Visible Radiance - eppley PSP Pyranometers # pyrdo = 282.2 a2d_chan39 MUL; pyrdo-unt = W/m2; pyrdo-fmt = %4d; pyrdo-min = 0; pyrdo-max = 9999; pyrup = 284.7 a2d_chan40 MUL; pyrup-unt = W/m2; pyrup-fmt = %4d; pyrup-min = 0; pyrup-max = 9999; pyralb = pyrdo pyrup DIV; pyralb-fmt = %5.3f; pyralb-min = -100; pyralb-max = 100; #----------------------------- # # NO (nitrous oxide) and NOx (nitrous Oxides) # default: no = 330 a2d_chan37 MUL 0 FLR; no-unt = ppb; no-fmt = %5.1f; no-min = 0; no-max = 10000; >fl1822: no = 810.39 a2d_chan37 MUL 0.00 FLR; default: nox = 330 a2d_chan38 MUL 0 FLR; nox-unt = ppb; nox-fmt = %5.1f; nox-min = 0; nox-max = 10000; >fl1822: nox = 429.55 a2d_chan38 MUL 0.00 FLR; default: #------------------------------ # # turbulence # turb = a2d_chan36 1000 MUL; turb-fmt = %4.2f; turb-unt = bobbles; #------------------------------ # # oecext - Ray Weiss Optical Extinction Cell # oecext = a2d_chan43; oecext-unt = volts; oecext-fmt = %5.3f; cnc1div = 10 cnc1 DIV; cnc1div-unt = /cc; cnc1div-fmt = %#7.2e; cnc1div-min = 0; cnc1div-tol = 40.0; cnc1div-max = 100000000;