RadLib
Loading...
Searching...
No Matches
simple_interface.cc
Go to the documentation of this file.
1
3
4#include <vector>
5#include <iostream>
6#include <iomanip>
7#include "../../src/c++/rad_planck_mean.h"
8#include "../../src/c++/rad_wsgg.h"
9#include "../../src/c++/rad_rcslw.h"
10
11using namespace std;
12
14
15int main() {
16
17 //----------------- define parameters
18
19 double T = 2000.0; // K
20 double P = 101325.0; // atm
21 double xH2O = 0.8; // xH2O=0.2 is roughly stoich. CH4/air products
22 double xCO2 = 0.2; // xCO2=0.1 is roughly stoich. CH4/air products
23 double xCO = 0.;
24 double xCH4 = 0.;
25 double fvsoot = 0.;
26
27 vector<double> kabs_pm, kabs_wsgg, kabs_rcslw;
28 vector<double> awts_pm, awts_wsgg, awts_rcslw;
29
30 double k;
31 double a;
32
33 //----------------- create radiation objects
34
35 rad *planckmean = new rad_planck_mean();
36 rad *wsgg = new rad_wsgg();
37 rad *rcslw = new rad_rcslw(4, T, P, fvsoot, xH2O, xCO2, xCO);
38
39 //----------------- compute absorption coefficients and weights
40
41 planckmean->get_k_a(kabs_pm, awts_pm, T, P, fvsoot, xH2O, xCO2, xCO, xCH4);
42 wsgg->get_k_a( kabs_wsgg, awts_wsgg, T, P, fvsoot, xH2O, xCO2);
43 rcslw->get_k_a( kabs_rcslw, awts_rcslw, T, P, fvsoot, xH2O, xCO2, xCO);
44
45 //----------------- output results
46
47 cout << setprecision(3) << fixed;
48
49 cout << endl << "T (K) = " << setw(14) << T;
50 cout << endl << "P (Pa) = " << setw(14) << P;
51 cout << endl << "xH2O = " << setw(14) << xH2O;
52 cout << endl << "xCO2 = " << setw(14) << xCO2;
53 cout << endl << "xCO = " << setw(14) << xCO;
54 cout << endl << "xCH4 = " << setw(14) << xCH4;
55 cout << endl;
56
57 cout << setprecision(8) << fixed;
58
59 cout << endl;
60 cout << endl << "Planck Mean:";
61 cout << endl << " kabs (1/m), awts";
62 for(int i=0; i<kabs_pm.size(); i++) {
63 cout << endl << setw(14) << kabs_pm[i] << setw(14) << awts_pm[i];
64 //planckmean->get_k_a_oneband(k, a, i, T, P, fvsoot, xH2O, xCO2, xCO, xCH4);
65 //cout << endl << setw(14) << k << setw(14) << a;
66 }
67
68 cout << endl;
69 cout << endl << "WSGG:";
70 cout << endl << " kabs (1/m), awts";
71 for(int i=0; i<kabs_wsgg.size(); i++) {
72 cout << endl << setw(14) << kabs_wsgg[i] << setw(14) << awts_wsgg[i];
73 //wsgg->get_k_a_oneband(k, a, i, T, P, fvsoot, xH2O, xCO2);
74 //cout << endl << setw(14) << k << setw(14) << a;
75 }
76
77 cout << endl;
78 cout << endl << "RCSLW:";
79 cout << endl << " kabs (1/m), awts";
80 for(int i=0; i<kabs_rcslw.size(); i++) {
81 cout << endl << setw(14) << kabs_rcslw[i] << setw(14) << awts_rcslw[i];
82 //rcslw->get_k_a_oneband(k, a, i, T, P, fvsoot, xH2O, xCO2, xCO);
83 //cout << endl << setw(14) << k << setw(14) << a;
84 }
85
86 //----------------- cleanup
87
88 delete planckmean;
89 delete wsgg;
90 delete rcslw;
91
92 return 0;
93
94}
Definition rad.h:20
virtual void get_k_a(std::vector< double > &kabs, std::vector< double > &awts, const double T, const double P, const double fvsoot, const double xH2O, const double xCO2, const double xCO=0, const double xCH4=0)=0
ABSTRACT BASE CLASS.
int main()