ReFRACtor
lidort_interface_types.h
Go to the documentation of this file.
1 #ifndef LIDORT_INTERFACE_TYPES_H
2 #define LIDORT_INTERFACE_TYPES_H
3 
4 #include <iostream>
5 #include <blitz/array.h>
6 #include <boost/shared_ptr.hpp>
7 
8 #include "fp_exception.h"
9 #include <vector>
10 
11 /* This file was auto-generated */
12 
13 #define FORTRAN_TRUE_INT 1
14 
15 #define BYTE_SIZE_ERROR_CHECK(var_name, c_size, f_size) \
16  if(c_size != f_size) { \
17  std::stringstream err_msg; \
18  err_msg << "Size of C variable: " << c_size \
19  << " for " << var_name \
20  << " does not match size of Fortran variable: " << f_size; \
21  throw Exception(err_msg.str()); \
22  }
23 
24 namespace FullPhysics {
25 
26 extern "C" {
27  void set_lidort_pars(struct Lidort_Pars *lidort_pars_struct_c);
28 }
29 
30 /* This struct cannot inherit any properties from another struct/class which is a requirement of Fortran interoperability */
31 
32 struct Lidort_Pars {
33 
34  const char lidort_version_number[3];
35  const int lidort_inunit;
36  const int lidort_scenunit;
37  const int lidort_funit;
38  const int lidort_resunit;
39  const int lidort_errunit;
40  const int lidort_dbgunit;
41  const int max_messages;
42  const int maxstreams;
43  const int maxlayers;
44  const int maxfinelayers;
45  const int maxmoments_input;
46  const int max_thermal_coeffs;
47  const int maxbeams;
48  const int max_user_streams;
49  const int max_user_relazms;
50  const int max_user_obsgeoms;
51  const int max_user_levels;
52  const int max_partlayers;
53  const int max_taylor_terms;
54  const int max_directions;
55  const int max_brdf_kernels;
57  const int maxstreams_brdf;
58  const int max_msrs_muquad;
59  const int max_msrs_phiquad;
60  const int maxstreams_scaling;
61  const int max_atmoswfs;
62  const int max_surfacewfs;
63  const int max_sleavewfs;
64  const int max_geometries;
65  const int max_allstrms;
66  const int max_allstrms_p1;
67  const int maxmoments;
68  const int maxfourier;
69  const int maxsthalf_brdf;
70  const int maxstreams_2;
71  const int maxstreams_p1;
72  const int maxtotal;
73  const int maxbandtotal;
74  const double one;
75  const double zero;
76  const double onep5;
77  const double two;
78  const double three;
79  const double four;
80  const double quarter;
81  const double half;
82  const double minus_one;
83  const double minus_two;
84  const double pie;
85  const double deg_to_rad;
86  const double pi2;
87  const double pi4;
88  const double pio2;
89  const double pio4;
90  const double eps3;
91  const double eps4;
92  const double eps5;
93  const double taylor_small;
94  const double smallnum;
95  const double bigexp;
96  const double hopital_tolerance;
97  const double omega_smallnum;
98  const double max_tau_spath;
99  const double max_tau_upath;
100  const double max_tau_qpath;
101  const int lidort_serious;
102  const int lidort_warning;
103  const int lidort_info;
104  const int lidort_debug;
105  const int lidort_success;
106  const int upidx;
107  const int dnidx;
108  const int lambertian_idx;
109  const int rossthin_idx;
110  const int rossthick_idx;
111  const int lisparse_idx;
112  const int lidense_idx;
113  const int hapke_idx;
114  const int roujean_idx;
115  const int rahman_idx;
116  const int coxmunk_idx;
117  const int bpdfsoil_idx;
118  const int bpdfvegn_idx;
119  const int bpdfndvi_idx;
120  const int newcmglint_idx;
121  const int maxbrdf_idx;
122 
123  static Lidort_Pars& instance() {
124  static Lidort_Pars obj;
125  return obj;
126  }
127 
128 
129  friend std::ostream& operator<<(std::ostream &output_stream, const Lidort_Pars &obj) {
130  output_stream << "Lidort_Pars:" << std::endl
131  << "lidort_version_number: " << "\"" << obj.lidort_version_number << "\"" << std::endl
132  << " lidort_inunit: " << obj.lidort_inunit << std::endl
133  << " lidort_scenunit: " << obj.lidort_scenunit << std::endl
134  << " lidort_funit: " << obj.lidort_funit << std::endl
135  << " lidort_resunit: " << obj.lidort_resunit << std::endl
136  << " lidort_errunit: " << obj.lidort_errunit << std::endl
137  << " lidort_dbgunit: " << obj.lidort_dbgunit << std::endl
138  << " max_messages: " << obj.max_messages << std::endl
139  << " maxstreams: " << obj.maxstreams << std::endl
140  << " maxlayers: " << obj.maxlayers << std::endl
141  << " maxfinelayers: " << obj.maxfinelayers << std::endl
142  << " maxmoments_input: " << obj.maxmoments_input << std::endl
143  << " max_thermal_coeffs: " << obj.max_thermal_coeffs << std::endl
144  << " maxbeams: " << obj.maxbeams << std::endl
145  << " max_user_streams: " << obj.max_user_streams << std::endl
146  << " max_user_relazms: " << obj.max_user_relazms << std::endl
147  << " max_user_obsgeoms: " << obj.max_user_obsgeoms << std::endl
148  << " max_user_levels: " << obj.max_user_levels << std::endl
149  << " max_partlayers: " << obj.max_partlayers << std::endl
150  << " max_taylor_terms: " << obj.max_taylor_terms << std::endl
151  << " max_directions: " << obj.max_directions << std::endl
152  << " max_brdf_kernels: " << obj.max_brdf_kernels << std::endl
153  << " max_brdf_parameters: " << obj.max_brdf_parameters << std::endl
154  << " maxstreams_brdf: " << obj.maxstreams_brdf << std::endl
155  << " max_msrs_muquad: " << obj.max_msrs_muquad << std::endl
156  << " max_msrs_phiquad: " << obj.max_msrs_phiquad << std::endl
157  << " maxstreams_scaling: " << obj.maxstreams_scaling << std::endl
158  << " max_atmoswfs: " << obj.max_atmoswfs << std::endl
159  << " max_surfacewfs: " << obj.max_surfacewfs << std::endl
160  << " max_sleavewfs: " << obj.max_sleavewfs << std::endl
161  << " max_geometries: " << obj.max_geometries << std::endl
162  << " max_allstrms: " << obj.max_allstrms << std::endl
163  << " max_allstrms_p1: " << obj.max_allstrms_p1 << std::endl
164  << " maxmoments: " << obj.maxmoments << std::endl
165  << " maxfourier: " << obj.maxfourier << std::endl
166  << " maxsthalf_brdf: " << obj.maxsthalf_brdf << std::endl
167  << " maxstreams_2: " << obj.maxstreams_2 << std::endl
168  << " maxstreams_p1: " << obj.maxstreams_p1 << std::endl
169  << " maxtotal: " << obj.maxtotal << std::endl
170  << " maxbandtotal: " << obj.maxbandtotal << std::endl
171  << " one: " << obj.one << std::endl
172  << " zero: " << obj.zero << std::endl
173  << " onep5: " << obj.onep5 << std::endl
174  << " two: " << obj.two << std::endl
175  << " three: " << obj.three << std::endl
176  << " four: " << obj.four << std::endl
177  << " quarter: " << obj.quarter << std::endl
178  << " half: " << obj.half << std::endl
179  << " minus_one: " << obj.minus_one << std::endl
180  << " minus_two: " << obj.minus_two << std::endl
181  << " pie: " << obj.pie << std::endl
182  << " deg_to_rad: " << obj.deg_to_rad << std::endl
183  << " pi2: " << obj.pi2 << std::endl
184  << " pi4: " << obj.pi4 << std::endl
185  << " pio2: " << obj.pio2 << std::endl
186  << " pio4: " << obj.pio4 << std::endl
187  << " eps3: " << obj.eps3 << std::endl
188  << " eps4: " << obj.eps4 << std::endl
189  << " eps5: " << obj.eps5 << std::endl
190  << " taylor_small: " << obj.taylor_small << std::endl
191  << " smallnum: " << obj.smallnum << std::endl
192  << " bigexp: " << obj.bigexp << std::endl
193  << " hopital_tolerance: " << obj.hopital_tolerance << std::endl
194  << " omega_smallnum: " << obj.omega_smallnum << std::endl
195  << " max_tau_spath: " << obj.max_tau_spath << std::endl
196  << " max_tau_upath: " << obj.max_tau_upath << std::endl
197  << " max_tau_qpath: " << obj.max_tau_qpath << std::endl
198  << " lidort_serious: " << obj.lidort_serious << std::endl
199  << " lidort_warning: " << obj.lidort_warning << std::endl
200  << " lidort_info: " << obj.lidort_info << std::endl
201  << " lidort_debug: " << obj.lidort_debug << std::endl
202  << " lidort_success: " << obj.lidort_success << std::endl
203  << " upidx: " << obj.upidx << std::endl
204  << " dnidx: " << obj.dnidx << std::endl
205  << " lambertian_idx: " << obj.lambertian_idx << std::endl
206  << " rossthin_idx: " << obj.rossthin_idx << std::endl
207  << " rossthick_idx: " << obj.rossthick_idx << std::endl
208  << " lisparse_idx: " << obj.lisparse_idx << std::endl
209  << " lidense_idx: " << obj.lidense_idx << std::endl
210  << " hapke_idx: " << obj.hapke_idx << std::endl
211  << " roujean_idx: " << obj.roujean_idx << std::endl
212  << " rahman_idx: " << obj.rahman_idx << std::endl
213  << " coxmunk_idx: " << obj.coxmunk_idx << std::endl
214  << " bpdfsoil_idx: " << obj.bpdfsoil_idx << std::endl
215  << " bpdfvegn_idx: " << obj.bpdfvegn_idx << std::endl
216  << " bpdfndvi_idx: " << obj.bpdfndvi_idx << std::endl
217  << " newcmglint_idx: " << obj.newcmglint_idx << std::endl
218  << " maxbrdf_idx: " << obj.maxbrdf_idx << std::endl;
219  return output_stream;
220 
221  }
222 
223 private:
225  set_lidort_pars(this);
226  }
227 };
228 
229 
230 class Lidort_Structure : public Printable<Lidort_Structure> {
231 public:
232  Lidort_Structure() : fortran_type_c(0), owns_pointer(true) {}
233  Lidort_Structure(void* allocated_f_type_c) : fortran_type_c(allocated_f_type_c), owns_pointer(false) {}
234  void* fortran_type_ptr() { return fortran_type_c; }
235 
236  virtual void print(std::ostream &output_stream) const = 0;
237 
238 protected:
241 };
242 
243 // Links to type: "brdf_linsup_inputs" from module: "brdf_linsup_inputs_def" in file: "brdf_lin_sup_inputs_def.f90"
244 extern "C" {
245  void brdf_linsup_inputs_c_alloc_init(struct brdf_linsup_inputs *transfer_struct_c, void **fortran_type_c);
246  void brdf_linsup_inputs_c_init_only(struct brdf_linsup_inputs *transfer_struct_c, void **fortran_type_c);
247  void brdf_linsup_inputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
248  void brdf_linsup_inputs_c_destroy(void **fortran_type_c);
249 
250 }
251 
254  int bs_do_kernel_factor_wfs__f_shapes[1];
256 
258  int bs_do_kernel_params_wfs__f_shapes[2];
260 
262  int bs_do_kparams_derivs__f_shapes[1];
264 
267 
270 
273 
276 
279 
282 
283 
284 };
285 
286 // Links to type: "brdf_linsup_inputs" from module: "brdf_linsup_inputs_def" in file: "brdf_lin_sup_inputs_def.f90"
288 public:
289  // Allocating constructor
291  brdf_linsup_inputs_c_alloc_init(&transfer_struct_c, &fortran_type_c);
292  link_blitz_arrays();
293  link_nested_types();
294  }
295 
296  // Linked to other data structure
297  Brdf_Linsup_Inputs(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
298  brdf_linsup_inputs_c_init_only(&transfer_struct_c, &fortran_type_c);
299  link_blitz_arrays();
300  link_nested_types();
301  }
302 
303  // Deallocate
305  if (owns_pointer)
306  brdf_linsup_inputs_c_destroy(&fortran_type_c);
307  }
308 
309  const blitz::Array<bool, 1> bs_do_kernel_factor_wfs() const {
310  blitz::Array<bool,1> as_bool(bs_do_kernel_factor_wfs_.shape());
311  as_bool = blitz::where(bs_do_kernel_factor_wfs_ != 0, true, false);
312  return as_bool;
313  }
314 
315  void bs_do_kernel_factor_wfs(const blitz::Array<bool, 1>& bs_do_kernel_factor_wfs_in) {
316  blitz::Array<int,1> as_int(bs_do_kernel_factor_wfs_.shape());
317  as_int = blitz::where(bs_do_kernel_factor_wfs_in == true, FORTRAN_TRUE_INT, 0);
318  bs_do_kernel_factor_wfs_ = as_int;
319  }
320 
321 
322  const blitz::Array<bool, 2> bs_do_kernel_params_wfs() const {
323  blitz::Array<bool,2> as_bool(bs_do_kernel_params_wfs_.shape());
324  as_bool = blitz::where(bs_do_kernel_params_wfs_ != 0, true, false);
325  return as_bool;
326  }
327 
328  void bs_do_kernel_params_wfs(const blitz::Array<bool, 2>& bs_do_kernel_params_wfs_in) {
329  blitz::Array<int,2> as_int(bs_do_kernel_params_wfs_.shape());
330  as_int = blitz::where(bs_do_kernel_params_wfs_in == true, FORTRAN_TRUE_INT, 0);
331  bs_do_kernel_params_wfs_ = as_int;
332  }
333 
334 
335  const blitz::Array<bool, 1> bs_do_kparams_derivs() const {
336  blitz::Array<bool,1> as_bool(bs_do_kparams_derivs_.shape());
337  as_bool = blitz::where(bs_do_kparams_derivs_ != 0, true, false);
338  return as_bool;
339  }
340 
341  void bs_do_kparams_derivs(const blitz::Array<bool, 1>& bs_do_kparams_derivs_in) {
342  blitz::Array<int,1> as_int(bs_do_kparams_derivs_.shape());
343  as_int = blitz::where(bs_do_kparams_derivs_in == true, FORTRAN_TRUE_INT, 0);
344  bs_do_kparams_derivs_ = as_int;
345  }
346 
347 
348  const int& bs_n_surface_wfs() const {
349  return *transfer_struct_c.bs_n_surface_wfs_;
350  }
351 
352  void bs_n_surface_wfs(const int& bs_n_surface_wfs_in) {
353  *transfer_struct_c.bs_n_surface_wfs_ = bs_n_surface_wfs_in;
354  }
355 
356 
357  const int& bs_n_kernel_factor_wfs() const {
358  return *transfer_struct_c.bs_n_kernel_factor_wfs_;
359  }
360 
361  void bs_n_kernel_factor_wfs(const int& bs_n_kernel_factor_wfs_in) {
362  *transfer_struct_c.bs_n_kernel_factor_wfs_ = bs_n_kernel_factor_wfs_in;
363  }
364 
365 
366  const int& bs_n_kernel_params_wfs() const {
367  return *transfer_struct_c.bs_n_kernel_params_wfs_;
368  }
369 
370  void bs_n_kernel_params_wfs(const int& bs_n_kernel_params_wfs_in) {
371  *transfer_struct_c.bs_n_kernel_params_wfs_ = bs_n_kernel_params_wfs_in;
372  }
373 
374 
375  const bool bs_do_bsavalue_wf() const {
376  return *transfer_struct_c.bs_do_bsavalue_wf_ != 0;
377  }
378 
379  void bs_do_bsavalue_wf(const bool& bs_do_bsavalue_wf_in) {
380  *transfer_struct_c.bs_do_bsavalue_wf_ = bs_do_bsavalue_wf_in ? FORTRAN_TRUE_INT : 0;
381  }
382 
383 
384  const bool bs_do_wsavalue_wf() const {
385  return *transfer_struct_c.bs_do_wsavalue_wf_ != 0;
386  }
387 
388  void bs_do_wsavalue_wf(const bool& bs_do_wsavalue_wf_in) {
389  *transfer_struct_c.bs_do_wsavalue_wf_ = bs_do_wsavalue_wf_in ? FORTRAN_TRUE_INT : 0;
390  }
391 
392 
393  const bool bs_do_windspeed_wf() const {
394  return *transfer_struct_c.bs_do_windspeed_wf_ != 0;
395  }
396 
397  void bs_do_windspeed_wf(const bool& bs_do_windspeed_wf_in) {
398  *transfer_struct_c.bs_do_windspeed_wf_ = bs_do_windspeed_wf_in ? FORTRAN_TRUE_INT : 0;
399  }
400 
401 
402 
403 
404 
405  virtual void print(std::ostream &output_stream) const {
406  output_stream << "Brdf_Linsup_Inputs:" << std::endl
407  << "bs_do_kernel_factor_wfs: " << std::endl << bs_do_kernel_factor_wfs() << std::endl
408  << "bs_do_kernel_params_wfs: " << std::endl << bs_do_kernel_params_wfs() << std::endl
409  << " bs_do_kparams_derivs: " << std::endl << bs_do_kparams_derivs() << std::endl
410  << " bs_n_surface_wfs: " << bs_n_surface_wfs() << std::endl
411  << " bs_n_kernel_factor_wfs: " << bs_n_kernel_factor_wfs() << std::endl
412  << " bs_n_kernel_params_wfs: " << bs_n_kernel_params_wfs() << std::endl
413  << " bs_do_bsavalue_wf: " << bs_do_bsavalue_wf() << std::endl
414  << " bs_do_wsavalue_wf: " << bs_do_wsavalue_wf() << std::endl
415  << " bs_do_windspeed_wf: " << bs_do_windspeed_wf() << std::endl;
416 
417  }
418 
420  BYTE_SIZE_ERROR_CHECK("bs_do_kernel_factor_wfs_",sizeof(*transfer_struct_c.bs_do_kernel_factor_wfs_),transfer_struct_c.bs_do_kernel_factor_wfs__f_byte_size);
421  BYTE_SIZE_ERROR_CHECK("bs_do_kernel_params_wfs_",sizeof(*transfer_struct_c.bs_do_kernel_params_wfs_),transfer_struct_c.bs_do_kernel_params_wfs__f_byte_size);
422  BYTE_SIZE_ERROR_CHECK("bs_do_kparams_derivs_",sizeof(*transfer_struct_c.bs_do_kparams_derivs_),transfer_struct_c.bs_do_kparams_derivs__f_byte_size);
423  BYTE_SIZE_ERROR_CHECK("bs_n_surface_wfs_",sizeof(*transfer_struct_c.bs_n_surface_wfs_),transfer_struct_c.bs_n_surface_wfs__f_byte_size);
424  BYTE_SIZE_ERROR_CHECK("bs_n_kernel_factor_wfs_",sizeof(*transfer_struct_c.bs_n_kernel_factor_wfs_),transfer_struct_c.bs_n_kernel_factor_wfs__f_byte_size);
425  BYTE_SIZE_ERROR_CHECK("bs_n_kernel_params_wfs_",sizeof(*transfer_struct_c.bs_n_kernel_params_wfs_),transfer_struct_c.bs_n_kernel_params_wfs__f_byte_size);
426  BYTE_SIZE_ERROR_CHECK("bs_do_bsavalue_wf_",sizeof(*transfer_struct_c.bs_do_bsavalue_wf_),transfer_struct_c.bs_do_bsavalue_wf__f_byte_size);
427  BYTE_SIZE_ERROR_CHECK("bs_do_wsavalue_wf_",sizeof(*transfer_struct_c.bs_do_wsavalue_wf_),transfer_struct_c.bs_do_wsavalue_wf__f_byte_size);
428  BYTE_SIZE_ERROR_CHECK("bs_do_windspeed_wf_",sizeof(*transfer_struct_c.bs_do_windspeed_wf_),transfer_struct_c.bs_do_windspeed_wf__f_byte_size);
429 
430  }
431 
432 private:
433  void link_blitz_arrays() {
434  bs_do_kernel_factor_wfs_.reference(blitz::Array<int, 1>(transfer_struct_c.bs_do_kernel_factor_wfs_,
435  blitz::shape(transfer_struct_c.bs_do_kernel_factor_wfs__f_shapes[0]),
436  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
437  bs_do_kernel_params_wfs_.reference(blitz::Array<int, 2>(transfer_struct_c.bs_do_kernel_params_wfs_,
438  blitz::shape(transfer_struct_c.bs_do_kernel_params_wfs__f_shapes[0],
439  transfer_struct_c.bs_do_kernel_params_wfs__f_shapes[1]),
440  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
441  bs_do_kparams_derivs_.reference(blitz::Array<int, 1>(transfer_struct_c.bs_do_kparams_derivs_,
442  blitz::shape(transfer_struct_c.bs_do_kparams_derivs__f_shapes[0]),
443  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
444 
445  }
446 
447  void link_nested_types() {
448 
449  }
450 
451  struct brdf_linsup_inputs transfer_struct_c;
452 
453  blitz::Array<int, 1> bs_do_kernel_factor_wfs_;
454  blitz::Array<int, 2> bs_do_kernel_params_wfs_;
455  blitz::Array<int, 1> bs_do_kparams_derivs_;
456 
457 };
458 
459 // Links to type: "brdf_linsup_outputs" from module: "brdf_linsup_outputs_def" in file: "brdf_lin_sup_outputs_def.f90"
460 extern "C" {
461  void brdf_linsup_outputs_c_alloc_init(struct brdf_linsup_outputs *transfer_struct_c, void **fortran_type_c);
462  void brdf_linsup_outputs_c_init_only(struct brdf_linsup_outputs *transfer_struct_c, void **fortran_type_c);
463  void brdf_linsup_outputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
464  void brdf_linsup_outputs_c_destroy(void **fortran_type_c);
465 
466 }
467 
470  int bs_ls_dbounce_brdfunc__f_shapes[4];
472 
474  int bs_ls_brdf_f_0__f_shapes[4];
476 
477  double* bs_ls_brdf_f_;
478  int bs_ls_brdf_f__f_shapes[4];
480 
482  int bs_ls_user_brdf_f_0__f_shapes[4];
484 
486  int bs_ls_user_brdf_f__f_shapes[4];
488 
490  int bs_ls_emissivity__f_shapes[2];
492 
494  int bs_ls_user_emissivity__f_shapes[2];
496 
497 
498 };
499 
500 // Links to type: "brdf_linsup_outputs" from module: "brdf_linsup_outputs_def" in file: "brdf_lin_sup_outputs_def.f90"
502 public:
503  // Allocating constructor
505  brdf_linsup_outputs_c_alloc_init(&transfer_struct_c, &fortran_type_c);
506  link_blitz_arrays();
507  link_nested_types();
508  }
509 
510  // Linked to other data structure
511  Brdf_Linsup_Outputs(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
512  brdf_linsup_outputs_c_init_only(&transfer_struct_c, &fortran_type_c);
513  link_blitz_arrays();
514  link_nested_types();
515  }
516 
517  // Deallocate
519  if (owns_pointer)
520  brdf_linsup_outputs_c_destroy(&fortran_type_c);
521  }
522 
523  const blitz::Array<double, 4>& bs_ls_dbounce_brdfunc() const {
524  return bs_ls_dbounce_brdfunc_;
525  }
526 
527  void bs_ls_dbounce_brdfunc(const blitz::Array<double, 4>& bs_ls_dbounce_brdfunc_in) {
528  bs_ls_dbounce_brdfunc_ = bs_ls_dbounce_brdfunc_in;
529  }
530 
531 
532  const blitz::Array<double, 4>& bs_ls_brdf_f_0() const {
533  return bs_ls_brdf_f_0_;
534  }
535 
536  void bs_ls_brdf_f_0(const blitz::Array<double, 4>& bs_ls_brdf_f_0_in) {
537  bs_ls_brdf_f_0_ = bs_ls_brdf_f_0_in;
538  }
539 
540 
541  const blitz::Array<double, 4>& bs_ls_brdf_f() const {
542  return bs_ls_brdf_f_;
543  }
544 
545  void bs_ls_brdf_f(const blitz::Array<double, 4>& bs_ls_brdf_f_in) {
546  bs_ls_brdf_f_ = bs_ls_brdf_f_in;
547  }
548 
549 
550  const blitz::Array<double, 4>& bs_ls_user_brdf_f_0() const {
551  return bs_ls_user_brdf_f_0_;
552  }
553 
554  void bs_ls_user_brdf_f_0(const blitz::Array<double, 4>& bs_ls_user_brdf_f_0_in) {
555  bs_ls_user_brdf_f_0_ = bs_ls_user_brdf_f_0_in;
556  }
557 
558 
559  const blitz::Array<double, 4>& bs_ls_user_brdf_f() const {
560  return bs_ls_user_brdf_f_;
561  }
562 
563  void bs_ls_user_brdf_f(const blitz::Array<double, 4>& bs_ls_user_brdf_f_in) {
564  bs_ls_user_brdf_f_ = bs_ls_user_brdf_f_in;
565  }
566 
567 
568  const blitz::Array<double, 2>& bs_ls_emissivity() const {
569  return bs_ls_emissivity_;
570  }
571 
572  void bs_ls_emissivity(const blitz::Array<double, 2>& bs_ls_emissivity_in) {
573  bs_ls_emissivity_ = bs_ls_emissivity_in;
574  }
575 
576 
577  const blitz::Array<double, 2>& bs_ls_user_emissivity() const {
578  return bs_ls_user_emissivity_;
579  }
580 
581  void bs_ls_user_emissivity(const blitz::Array<double, 2>& bs_ls_user_emissivity_in) {
582  bs_ls_user_emissivity_ = bs_ls_user_emissivity_in;
583  }
584 
585 
586 
587 
588 
589  virtual void print(std::ostream &output_stream) const {
590  output_stream << "Brdf_Linsup_Outputs:" << std::endl
591  << "bs_ls_dbounce_brdfunc: " << std::endl << bs_ls_dbounce_brdfunc() << std::endl
592  << " bs_ls_brdf_f_0: " << std::endl << bs_ls_brdf_f_0() << std::endl
593  << " bs_ls_brdf_f: " << std::endl << bs_ls_brdf_f() << std::endl
594  << " bs_ls_user_brdf_f_0: " << std::endl << bs_ls_user_brdf_f_0() << std::endl
595  << " bs_ls_user_brdf_f: " << std::endl << bs_ls_user_brdf_f() << std::endl
596  << " bs_ls_emissivity: " << std::endl << bs_ls_emissivity() << std::endl
597  << "bs_ls_user_emissivity: " << std::endl << bs_ls_user_emissivity() << std::endl;
598 
599  }
600 
602  BYTE_SIZE_ERROR_CHECK("bs_ls_dbounce_brdfunc_",sizeof(*transfer_struct_c.bs_ls_dbounce_brdfunc_),transfer_struct_c.bs_ls_dbounce_brdfunc__f_byte_size);
603  BYTE_SIZE_ERROR_CHECK("bs_ls_brdf_f_0_",sizeof(*transfer_struct_c.bs_ls_brdf_f_0_),transfer_struct_c.bs_ls_brdf_f_0__f_byte_size);
604  BYTE_SIZE_ERROR_CHECK("bs_ls_brdf_f_",sizeof(*transfer_struct_c.bs_ls_brdf_f_),transfer_struct_c.bs_ls_brdf_f__f_byte_size);
605  BYTE_SIZE_ERROR_CHECK("bs_ls_user_brdf_f_0_",sizeof(*transfer_struct_c.bs_ls_user_brdf_f_0_),transfer_struct_c.bs_ls_user_brdf_f_0__f_byte_size);
606  BYTE_SIZE_ERROR_CHECK("bs_ls_user_brdf_f_",sizeof(*transfer_struct_c.bs_ls_user_brdf_f_),transfer_struct_c.bs_ls_user_brdf_f__f_byte_size);
607  BYTE_SIZE_ERROR_CHECK("bs_ls_emissivity_",sizeof(*transfer_struct_c.bs_ls_emissivity_),transfer_struct_c.bs_ls_emissivity__f_byte_size);
608  BYTE_SIZE_ERROR_CHECK("bs_ls_user_emissivity_",sizeof(*transfer_struct_c.bs_ls_user_emissivity_),transfer_struct_c.bs_ls_user_emissivity__f_byte_size);
609 
610  }
611 
612 private:
613  void link_blitz_arrays() {
614  bs_ls_dbounce_brdfunc_.reference(blitz::Array<double, 4>(transfer_struct_c.bs_ls_dbounce_brdfunc_,
615  blitz::shape(transfer_struct_c.bs_ls_dbounce_brdfunc__f_shapes[0],
616  transfer_struct_c.bs_ls_dbounce_brdfunc__f_shapes[1],
617  transfer_struct_c.bs_ls_dbounce_brdfunc__f_shapes[2],
618  transfer_struct_c.bs_ls_dbounce_brdfunc__f_shapes[3]),
619  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
620  bs_ls_brdf_f_0_.reference(blitz::Array<double, 4>(transfer_struct_c.bs_ls_brdf_f_0_,
621  blitz::shape(transfer_struct_c.bs_ls_brdf_f_0__f_shapes[0],
622  transfer_struct_c.bs_ls_brdf_f_0__f_shapes[1],
623  transfer_struct_c.bs_ls_brdf_f_0__f_shapes[2],
624  transfer_struct_c.bs_ls_brdf_f_0__f_shapes[3]),
625  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
626  bs_ls_brdf_f_.reference(blitz::Array<double, 4>(transfer_struct_c.bs_ls_brdf_f_,
627  blitz::shape(transfer_struct_c.bs_ls_brdf_f__f_shapes[0],
628  transfer_struct_c.bs_ls_brdf_f__f_shapes[1],
629  transfer_struct_c.bs_ls_brdf_f__f_shapes[2],
630  transfer_struct_c.bs_ls_brdf_f__f_shapes[3]),
631  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
632  bs_ls_user_brdf_f_0_.reference(blitz::Array<double, 4>(transfer_struct_c.bs_ls_user_brdf_f_0_,
633  blitz::shape(transfer_struct_c.bs_ls_user_brdf_f_0__f_shapes[0],
634  transfer_struct_c.bs_ls_user_brdf_f_0__f_shapes[1],
635  transfer_struct_c.bs_ls_user_brdf_f_0__f_shapes[2],
636  transfer_struct_c.bs_ls_user_brdf_f_0__f_shapes[3]),
637  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
638  bs_ls_user_brdf_f_.reference(blitz::Array<double, 4>(transfer_struct_c.bs_ls_user_brdf_f_,
639  blitz::shape(transfer_struct_c.bs_ls_user_brdf_f__f_shapes[0],
640  transfer_struct_c.bs_ls_user_brdf_f__f_shapes[1],
641  transfer_struct_c.bs_ls_user_brdf_f__f_shapes[2],
642  transfer_struct_c.bs_ls_user_brdf_f__f_shapes[3]),
643  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
644  bs_ls_emissivity_.reference(blitz::Array<double, 2>(transfer_struct_c.bs_ls_emissivity_,
645  blitz::shape(transfer_struct_c.bs_ls_emissivity__f_shapes[0],
646  transfer_struct_c.bs_ls_emissivity__f_shapes[1]),
647  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
648  bs_ls_user_emissivity_.reference(blitz::Array<double, 2>(transfer_struct_c.bs_ls_user_emissivity_,
649  blitz::shape(transfer_struct_c.bs_ls_user_emissivity__f_shapes[0],
650  transfer_struct_c.bs_ls_user_emissivity__f_shapes[1]),
651  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
652 
653  }
654 
655  void link_nested_types() {
656 
657  }
658 
659  struct brdf_linsup_outputs transfer_struct_c;
660 
661  blitz::Array<double, 4> bs_ls_dbounce_brdfunc_;
662  blitz::Array<double, 4> bs_ls_brdf_f_0_;
663  blitz::Array<double, 4> bs_ls_brdf_f_;
664  blitz::Array<double, 4> bs_ls_user_brdf_f_0_;
665  blitz::Array<double, 4> bs_ls_user_brdf_f_;
666  blitz::Array<double, 2> bs_ls_emissivity_;
667  blitz::Array<double, 2> bs_ls_user_emissivity_;
668 
669 };
670 
671 // Links to type: "brdf_sup_inputs" from module: "brdf_sup_inputs_def" in file: "brdf_sup_inputs_def.f90"
672 extern "C" {
673  void brdf_sup_inputs_c_alloc_init(struct brdf_sup_inputs *transfer_struct_c, void **fortran_type_c);
674  void brdf_sup_inputs_c_init_only(struct brdf_sup_inputs *transfer_struct_c, void **fortran_type_c);
675  void brdf_sup_inputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
676  void brdf_sup_inputs_c_destroy(void **fortran_type_c);
677  void brdf_sup_inputs_bs_brdf_names_get(void **fortran_type_c, const int* bs_brdf_names_in_shape_1, const int* bs_brdf_names_in_len, const char* bs_brdf_names_in);
678 
679 }
680 
684 
687 
690 
693 
696 
699 
702 
703  double* bs_beam_szas_;
704  int bs_beam_szas__f_shapes[1];
706 
709 
711  int bs_user_relazms__f_shapes[1];
713 
716 
718  int bs_user_angles_input__f_shapes[1];
720 
723 
725  int bs_user_obsgeoms__f_shapes[2];
727 
730 
731 
732  int bs_brdf_names__f_shapes[1];
734 
736  int bs_which_brdf__f_shapes[1];
738 
740  int bs_n_brdf_parameters__f_shapes[1];
742 
744  int bs_brdf_parameters__f_shapes[2];
746 
748  int bs_lambertian_kernel_flag__f_shapes[1];
750 
752  int bs_brdf_factors__f_shapes[1];
754 
757 
760 
763 
766 
769 
772 
773  double* bs_wsa_value_;
775 
776  double* bs_bsa_value_;
778 
781 
782  double* bs_salinity_;
784 
785  double* bs_wavelength_;
787 
788  double* bs_windspeed_;
790 
791  double* bs_winddir_;
792  int bs_winddir__f_shapes[1];
794 
797 
800 
803 
806 
809 
812 
815 
818 
819 
820 };
821 
822 // Links to type: "brdf_sup_inputs" from module: "brdf_sup_inputs_def" in file: "brdf_sup_inputs_def.f90"
824 public:
825  // Allocating constructor
827  brdf_sup_inputs_c_alloc_init(&transfer_struct_c, &fortran_type_c);
828  link_blitz_arrays();
829  link_nested_types();
830  }
831 
832  // Linked to other data structure
833  Brdf_Sup_Inputs(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
834  brdf_sup_inputs_c_init_only(&transfer_struct_c, &fortran_type_c);
835  link_blitz_arrays();
836  link_nested_types();
837  }
838 
839  // Deallocate
841  if (owns_pointer)
842  brdf_sup_inputs_c_destroy(&fortran_type_c);
843  }
844 
845  const bool bs_do_user_streams() const {
846  return *transfer_struct_c.bs_do_user_streams_ != 0;
847  }
848 
849  void bs_do_user_streams(const bool& bs_do_user_streams_in) {
850  *transfer_struct_c.bs_do_user_streams_ = bs_do_user_streams_in ? FORTRAN_TRUE_INT : 0;
851  }
852 
853 
854  const bool bs_do_brdf_surface() const {
855  return *transfer_struct_c.bs_do_brdf_surface_ != 0;
856  }
857 
858  void bs_do_brdf_surface(const bool& bs_do_brdf_surface_in) {
859  *transfer_struct_c.bs_do_brdf_surface_ = bs_do_brdf_surface_in ? FORTRAN_TRUE_INT : 0;
860  }
861 
862 
863  const bool bs_do_surface_emission() const {
864  return *transfer_struct_c.bs_do_surface_emission_ != 0;
865  }
866 
867  void bs_do_surface_emission(const bool& bs_do_surface_emission_in) {
868  *transfer_struct_c.bs_do_surface_emission_ = bs_do_surface_emission_in ? FORTRAN_TRUE_INT : 0;
869  }
870 
871 
872  const bool bs_do_solar_sources() const {
873  return *transfer_struct_c.bs_do_solar_sources_ != 0;
874  }
875 
876  void bs_do_solar_sources(const bool& bs_do_solar_sources_in) {
877  *transfer_struct_c.bs_do_solar_sources_ = bs_do_solar_sources_in ? FORTRAN_TRUE_INT : 0;
878  }
879 
880 
881  const bool bs_do_user_obsgeoms() const {
882  return *transfer_struct_c.bs_do_user_obsgeoms_ != 0;
883  }
884 
885  void bs_do_user_obsgeoms(const bool& bs_do_user_obsgeoms_in) {
886  *transfer_struct_c.bs_do_user_obsgeoms_ = bs_do_user_obsgeoms_in ? FORTRAN_TRUE_INT : 0;
887  }
888 
889 
890  const int& bs_nstreams() const {
891  return *transfer_struct_c.bs_nstreams_;
892  }
893 
894  void bs_nstreams(const int& bs_nstreams_in) {
895  *transfer_struct_c.bs_nstreams_ = bs_nstreams_in;
896  }
897 
898 
899  const int& bs_nbeams() const {
900  return *transfer_struct_c.bs_nbeams_;
901  }
902 
903  void bs_nbeams(const int& bs_nbeams_in) {
904  *transfer_struct_c.bs_nbeams_ = bs_nbeams_in;
905  }
906 
907 
908  const blitz::Array<double, 1>& bs_beam_szas() const {
909  return bs_beam_szas_;
910  }
911 
912  void bs_beam_szas(const blitz::Array<double, 1>& bs_beam_szas_in) {
913  bs_beam_szas_ = bs_beam_szas_in;
914  }
915 
916 
917  const int& bs_n_user_relazms() const {
918  return *transfer_struct_c.bs_n_user_relazms_;
919  }
920 
921  void bs_n_user_relazms(const int& bs_n_user_relazms_in) {
922  *transfer_struct_c.bs_n_user_relazms_ = bs_n_user_relazms_in;
923  }
924 
925 
926  const blitz::Array<double, 1>& bs_user_relazms() const {
927  return bs_user_relazms_;
928  }
929 
930  void bs_user_relazms(const blitz::Array<double, 1>& bs_user_relazms_in) {
931  bs_user_relazms_ = bs_user_relazms_in;
932  }
933 
934 
935  const int& bs_n_user_streams() const {
936  return *transfer_struct_c.bs_n_user_streams_;
937  }
938 
939  void bs_n_user_streams(const int& bs_n_user_streams_in) {
940  *transfer_struct_c.bs_n_user_streams_ = bs_n_user_streams_in;
941  }
942 
943 
944  const blitz::Array<double, 1>& bs_user_angles_input() const {
945  return bs_user_angles_input_;
946  }
947 
948  void bs_user_angles_input(const blitz::Array<double, 1>& bs_user_angles_input_in) {
949  bs_user_angles_input_ = bs_user_angles_input_in;
950  }
951 
952 
953  const int& bs_n_user_obsgeoms() const {
954  return *transfer_struct_c.bs_n_user_obsgeoms_;
955  }
956 
957  void bs_n_user_obsgeoms(const int& bs_n_user_obsgeoms_in) {
958  *transfer_struct_c.bs_n_user_obsgeoms_ = bs_n_user_obsgeoms_in;
959  }
960 
961 
962  const blitz::Array<double, 2>& bs_user_obsgeoms() const {
963  return bs_user_obsgeoms_;
964  }
965 
966  void bs_user_obsgeoms(const blitz::Array<double, 2>& bs_user_obsgeoms_in) {
967  bs_user_obsgeoms_ = bs_user_obsgeoms_in;
968  }
969 
970 
971  const int& bs_n_brdf_kernels() const {
972  return *transfer_struct_c.bs_n_brdf_kernels_;
973  }
974 
975  void bs_n_brdf_kernels(const int& bs_n_brdf_kernels_in) {
976  *transfer_struct_c.bs_n_brdf_kernels_ = bs_n_brdf_kernels_in;
977  }
978 
979 
980  const std::vector< std::string > bs_brdf_names() const {
981  std::vector< std::string > bs_brdf_names_ret;
982  blitz::Array<char, 2> bs_brdf_names_lcl = blitz::Array<char, 2>(transfer_struct_c.bs_brdf_names__f_shapes[0], transfer_struct_c.bs_brdf_names__f_len+1, blitz::ColumnMajorArray<2>());
983  brdf_sup_inputs_bs_brdf_names_get(const_cast<void**>(&fortran_type_c), &transfer_struct_c.bs_brdf_names__f_shapes[0], &transfer_struct_c.bs_brdf_names__f_len, bs_brdf_names_lcl.dataFirst());
984  for(int dim_0_idx = 0; dim_0_idx < bs_brdf_names_lcl.extent(0); dim_0_idx++)
985  bs_brdf_names_ret.push_back( std::string(std::string(bs_brdf_names_lcl(dim_0_idx, blitz::Range::all()).begin(), bs_brdf_names_lcl(dim_0_idx, blitz::Range::all()).end()).c_str()) );
986  return bs_brdf_names_ret;
987  }
988 
989 
990  const blitz::Array<int, 1>& bs_which_brdf() const {
991  return bs_which_brdf_;
992  }
993 
994  void bs_which_brdf(const blitz::Array<int, 1>& bs_which_brdf_in) {
995  bs_which_brdf_ = bs_which_brdf_in;
996  }
997 
998 
999  const blitz::Array<int, 1>& bs_n_brdf_parameters() const {
1000  return bs_n_brdf_parameters_;
1001  }
1002 
1003  void bs_n_brdf_parameters(const blitz::Array<int, 1>& bs_n_brdf_parameters_in) {
1004  bs_n_brdf_parameters_ = bs_n_brdf_parameters_in;
1005  }
1006 
1007 
1008  const blitz::Array<double, 2>& bs_brdf_parameters() const {
1009  return bs_brdf_parameters_;
1010  }
1011 
1012  void bs_brdf_parameters(const blitz::Array<double, 2>& bs_brdf_parameters_in) {
1013  bs_brdf_parameters_ = bs_brdf_parameters_in;
1014  }
1015 
1016 
1017  const blitz::Array<bool, 1> bs_lambertian_kernel_flag() const {
1018  blitz::Array<bool,1> as_bool(bs_lambertian_kernel_flag_.shape());
1019  as_bool = blitz::where(bs_lambertian_kernel_flag_ != 0, true, false);
1020  return as_bool;
1021  }
1022 
1023  void bs_lambertian_kernel_flag(const blitz::Array<bool, 1>& bs_lambertian_kernel_flag_in) {
1024  blitz::Array<int,1> as_int(bs_lambertian_kernel_flag_.shape());
1025  as_int = blitz::where(bs_lambertian_kernel_flag_in == true, FORTRAN_TRUE_INT, 0);
1026  bs_lambertian_kernel_flag_ = as_int;
1027  }
1028 
1029 
1030  const blitz::Array<double, 1>& bs_brdf_factors() const {
1031  return bs_brdf_factors_;
1032  }
1033 
1034  void bs_brdf_factors(const blitz::Array<double, 1>& bs_brdf_factors_in) {
1035  bs_brdf_factors_ = bs_brdf_factors_in;
1036  }
1037 
1038 
1039  const int& bs_nstreams_brdf() const {
1040  return *transfer_struct_c.bs_nstreams_brdf_;
1041  }
1042 
1043  void bs_nstreams_brdf(const int& bs_nstreams_brdf_in) {
1044  *transfer_struct_c.bs_nstreams_brdf_ = bs_nstreams_brdf_in;
1045  }
1046 
1047 
1048  const bool bs_do_shadow_effect() const {
1049  return *transfer_struct_c.bs_do_shadow_effect_ != 0;
1050  }
1051 
1052  void bs_do_shadow_effect(const bool& bs_do_shadow_effect_in) {
1053  *transfer_struct_c.bs_do_shadow_effect_ = bs_do_shadow_effect_in ? FORTRAN_TRUE_INT : 0;
1054  }
1055 
1056 
1057  const bool bs_do_directbounce_only() const {
1058  return *transfer_struct_c.bs_do_directbounce_only_ != 0;
1059  }
1060 
1061  void bs_do_directbounce_only(const bool& bs_do_directbounce_only_in) {
1062  *transfer_struct_c.bs_do_directbounce_only_ = bs_do_directbounce_only_in ? FORTRAN_TRUE_INT : 0;
1063  }
1064 
1065 
1066  const bool bs_do_wsabsa_output() const {
1067  return *transfer_struct_c.bs_do_wsabsa_output_ != 0;
1068  }
1069 
1070  void bs_do_wsabsa_output(const bool& bs_do_wsabsa_output_in) {
1071  *transfer_struct_c.bs_do_wsabsa_output_ = bs_do_wsabsa_output_in ? FORTRAN_TRUE_INT : 0;
1072  }
1073 
1074 
1075  const bool bs_do_wsa_scaling() const {
1076  return *transfer_struct_c.bs_do_wsa_scaling_ != 0;
1077  }
1078 
1079  void bs_do_wsa_scaling(const bool& bs_do_wsa_scaling_in) {
1080  *transfer_struct_c.bs_do_wsa_scaling_ = bs_do_wsa_scaling_in ? FORTRAN_TRUE_INT : 0;
1081  }
1082 
1083 
1084  const bool bs_do_bsa_scaling() const {
1085  return *transfer_struct_c.bs_do_bsa_scaling_ != 0;
1086  }
1087 
1088  void bs_do_bsa_scaling(const bool& bs_do_bsa_scaling_in) {
1089  *transfer_struct_c.bs_do_bsa_scaling_ = bs_do_bsa_scaling_in ? FORTRAN_TRUE_INT : 0;
1090  }
1091 
1092 
1093  const double& bs_wsa_value() const {
1094  return *transfer_struct_c.bs_wsa_value_;
1095  }
1096 
1097  void bs_wsa_value(const double& bs_wsa_value_in) {
1098  *transfer_struct_c.bs_wsa_value_ = bs_wsa_value_in;
1099  }
1100 
1101 
1102  const double& bs_bsa_value() const {
1103  return *transfer_struct_c.bs_bsa_value_;
1104  }
1105 
1106  void bs_bsa_value(const double& bs_bsa_value_in) {
1107  *transfer_struct_c.bs_bsa_value_ = bs_bsa_value_in;
1108  }
1109 
1110 
1111  const bool bs_do_newcmglint() const {
1112  return *transfer_struct_c.bs_do_newcmglint_ != 0;
1113  }
1114 
1115  void bs_do_newcmglint(const bool& bs_do_newcmglint_in) {
1116  *transfer_struct_c.bs_do_newcmglint_ = bs_do_newcmglint_in ? FORTRAN_TRUE_INT : 0;
1117  }
1118 
1119 
1120  const double& bs_salinity() const {
1121  return *transfer_struct_c.bs_salinity_;
1122  }
1123 
1124  void bs_salinity(const double& bs_salinity_in) {
1125  *transfer_struct_c.bs_salinity_ = bs_salinity_in;
1126  }
1127 
1128 
1129  const double& bs_wavelength() const {
1130  return *transfer_struct_c.bs_wavelength_;
1131  }
1132 
1133  void bs_wavelength(const double& bs_wavelength_in) {
1134  *transfer_struct_c.bs_wavelength_ = bs_wavelength_in;
1135  }
1136 
1137 
1138  const double& bs_windspeed() const {
1139  return *transfer_struct_c.bs_windspeed_;
1140  }
1141 
1142  void bs_windspeed(const double& bs_windspeed_in) {
1143  *transfer_struct_c.bs_windspeed_ = bs_windspeed_in;
1144  }
1145 
1146 
1147  const blitz::Array<double, 1>& bs_winddir() const {
1148  return bs_winddir_;
1149  }
1150 
1151  void bs_winddir(const blitz::Array<double, 1>& bs_winddir_in) {
1152  bs_winddir_ = bs_winddir_in;
1153  }
1154 
1155 
1156  const bool bs_do_glintshadow() const {
1157  return *transfer_struct_c.bs_do_glintshadow_ != 0;
1158  }
1159 
1160  void bs_do_glintshadow(const bool& bs_do_glintshadow_in) {
1161  *transfer_struct_c.bs_do_glintshadow_ = bs_do_glintshadow_in ? FORTRAN_TRUE_INT : 0;
1162  }
1163 
1164 
1165  const bool bs_do_foamoption() const {
1166  return *transfer_struct_c.bs_do_foamoption_ != 0;
1167  }
1168 
1169  void bs_do_foamoption(const bool& bs_do_foamoption_in) {
1170  *transfer_struct_c.bs_do_foamoption_ = bs_do_foamoption_in ? FORTRAN_TRUE_INT : 0;
1171  }
1172 
1173 
1174  const bool bs_do_facetisotropy() const {
1175  return *transfer_struct_c.bs_do_facetisotropy_ != 0;
1176  }
1177 
1178  void bs_do_facetisotropy(const bool& bs_do_facetisotropy_in) {
1179  *transfer_struct_c.bs_do_facetisotropy_ = bs_do_facetisotropy_in ? FORTRAN_TRUE_INT : 0;
1180  }
1181 
1182 
1183  const bool bs_do_glitter_msrcorr() const {
1184  return *transfer_struct_c.bs_do_glitter_msrcorr_ != 0;
1185  }
1186 
1187  void bs_do_glitter_msrcorr(const bool& bs_do_glitter_msrcorr_in) {
1188  *transfer_struct_c.bs_do_glitter_msrcorr_ = bs_do_glitter_msrcorr_in ? FORTRAN_TRUE_INT : 0;
1189  }
1190 
1191 
1192  const bool bs_do_glitter_msrcorr_dbonly() const {
1193  return *transfer_struct_c.bs_do_glitter_msrcorr_dbonly_ != 0;
1194  }
1195 
1196  void bs_do_glitter_msrcorr_dbonly(const bool& bs_do_glitter_msrcorr_dbonly_in) {
1197  *transfer_struct_c.bs_do_glitter_msrcorr_dbonly_ = bs_do_glitter_msrcorr_dbonly_in ? FORTRAN_TRUE_INT : 0;
1198  }
1199 
1200 
1201  const int& bs_glitter_msrcorr_order() const {
1202  return *transfer_struct_c.bs_glitter_msrcorr_order_;
1203  }
1204 
1205  void bs_glitter_msrcorr_order(const int& bs_glitter_msrcorr_order_in) {
1206  *transfer_struct_c.bs_glitter_msrcorr_order_ = bs_glitter_msrcorr_order_in;
1207  }
1208 
1209 
1210  const int& bs_glitter_msrcorr_nmuquad() const {
1211  return *transfer_struct_c.bs_glitter_msrcorr_nmuquad_;
1212  }
1213 
1214  void bs_glitter_msrcorr_nmuquad(const int& bs_glitter_msrcorr_nmuquad_in) {
1215  *transfer_struct_c.bs_glitter_msrcorr_nmuquad_ = bs_glitter_msrcorr_nmuquad_in;
1216  }
1217 
1218 
1219  const int& bs_glitter_msrcorr_nphiquad() const {
1220  return *transfer_struct_c.bs_glitter_msrcorr_nphiquad_;
1221  }
1222 
1223  void bs_glitter_msrcorr_nphiquad(const int& bs_glitter_msrcorr_nphiquad_in) {
1224  *transfer_struct_c.bs_glitter_msrcorr_nphiquad_ = bs_glitter_msrcorr_nphiquad_in;
1225  }
1226 
1227 
1228 
1229 
1230 
1231  virtual void print(std::ostream &output_stream) const {
1232  output_stream << "Brdf_Sup_Inputs:" << std::endl
1233  << " bs_do_user_streams: " << bs_do_user_streams() << std::endl
1234  << " bs_do_brdf_surface: " << bs_do_brdf_surface() << std::endl
1235  << " bs_do_surface_emission: " << bs_do_surface_emission() << std::endl
1236  << " bs_do_solar_sources: " << bs_do_solar_sources() << std::endl
1237  << " bs_do_user_obsgeoms: " << bs_do_user_obsgeoms() << std::endl
1238  << " bs_nstreams: " << bs_nstreams() << std::endl
1239  << " bs_nbeams: " << bs_nbeams() << std::endl
1240  << " bs_beam_szas: " << std::endl << bs_beam_szas() << std::endl
1241  << " bs_n_user_relazms: " << bs_n_user_relazms() << std::endl
1242  << " bs_user_relazms: " << std::endl << bs_user_relazms() << std::endl
1243  << " bs_n_user_streams: " << bs_n_user_streams() << std::endl
1244  << " bs_user_angles_input: " << std::endl << bs_user_angles_input() << std::endl
1245  << " bs_n_user_obsgeoms: " << bs_n_user_obsgeoms() << std::endl
1246  << " bs_user_obsgeoms: " << std::endl << bs_user_obsgeoms() << std::endl
1247  << " bs_n_brdf_kernels: " << bs_n_brdf_kernels() << std::endl
1248  << " bs_brdf_names: " << std::endl;
1249  std::vector< std::string > bs_brdf_names_lcl = bs_brdf_names();
1250  for(unsigned int idx = 0; idx < bs_brdf_names_lcl.size(); idx++)
1251  if ( bs_brdf_names_lcl[idx].length() > 0 )
1252  output_stream << " [" << idx << "]: \"" << bs_brdf_names_lcl[idx] << "\"" << std::endl;
1253  output_stream
1254  << " bs_which_brdf: " << std::endl << bs_which_brdf() << std::endl
1255  << " bs_n_brdf_parameters: " << std::endl << bs_n_brdf_parameters() << std::endl
1256  << " bs_brdf_parameters: " << std::endl << bs_brdf_parameters() << std::endl
1257  << " bs_lambertian_kernel_flag: " << std::endl << bs_lambertian_kernel_flag() << std::endl
1258  << " bs_brdf_factors: " << std::endl << bs_brdf_factors() << std::endl
1259  << " bs_nstreams_brdf: " << bs_nstreams_brdf() << std::endl
1260  << " bs_do_shadow_effect: " << bs_do_shadow_effect() << std::endl
1261  << " bs_do_directbounce_only: " << bs_do_directbounce_only() << std::endl
1262  << " bs_do_wsabsa_output: " << bs_do_wsabsa_output() << std::endl
1263  << " bs_do_wsa_scaling: " << bs_do_wsa_scaling() << std::endl
1264  << " bs_do_bsa_scaling: " << bs_do_bsa_scaling() << std::endl
1265  << " bs_wsa_value: " << bs_wsa_value() << std::endl
1266  << " bs_bsa_value: " << bs_bsa_value() << std::endl
1267  << " bs_do_newcmglint: " << bs_do_newcmglint() << std::endl
1268  << " bs_salinity: " << bs_salinity() << std::endl
1269  << " bs_wavelength: " << bs_wavelength() << std::endl
1270  << " bs_windspeed: " << bs_windspeed() << std::endl
1271  << " bs_winddir: " << std::endl << bs_winddir() << std::endl
1272  << " bs_do_glintshadow: " << bs_do_glintshadow() << std::endl
1273  << " bs_do_foamoption: " << bs_do_foamoption() << std::endl
1274  << " bs_do_facetisotropy: " << bs_do_facetisotropy() << std::endl
1275  << " bs_do_glitter_msrcorr: " << bs_do_glitter_msrcorr() << std::endl
1276  << "bs_do_glitter_msrcorr_dbonly: " << bs_do_glitter_msrcorr_dbonly() << std::endl
1277  << " bs_glitter_msrcorr_order: " << bs_glitter_msrcorr_order() << std::endl
1278  << " bs_glitter_msrcorr_nmuquad: " << bs_glitter_msrcorr_nmuquad() << std::endl
1279  << " bs_glitter_msrcorr_nphiquad: " << bs_glitter_msrcorr_nphiquad() << std::endl;
1280 
1281  }
1282 
1284  BYTE_SIZE_ERROR_CHECK("bs_do_user_streams_",sizeof(*transfer_struct_c.bs_do_user_streams_),transfer_struct_c.bs_do_user_streams__f_byte_size);
1285  BYTE_SIZE_ERROR_CHECK("bs_do_brdf_surface_",sizeof(*transfer_struct_c.bs_do_brdf_surface_),transfer_struct_c.bs_do_brdf_surface__f_byte_size);
1286  BYTE_SIZE_ERROR_CHECK("bs_do_surface_emission_",sizeof(*transfer_struct_c.bs_do_surface_emission_),transfer_struct_c.bs_do_surface_emission__f_byte_size);
1287  BYTE_SIZE_ERROR_CHECK("bs_do_solar_sources_",sizeof(*transfer_struct_c.bs_do_solar_sources_),transfer_struct_c.bs_do_solar_sources__f_byte_size);
1288  BYTE_SIZE_ERROR_CHECK("bs_do_user_obsgeoms_",sizeof(*transfer_struct_c.bs_do_user_obsgeoms_),transfer_struct_c.bs_do_user_obsgeoms__f_byte_size);
1289  BYTE_SIZE_ERROR_CHECK("bs_nstreams_",sizeof(*transfer_struct_c.bs_nstreams_),transfer_struct_c.bs_nstreams__f_byte_size);
1290  BYTE_SIZE_ERROR_CHECK("bs_nbeams_",sizeof(*transfer_struct_c.bs_nbeams_),transfer_struct_c.bs_nbeams__f_byte_size);
1291  BYTE_SIZE_ERROR_CHECK("bs_beam_szas_",sizeof(*transfer_struct_c.bs_beam_szas_),transfer_struct_c.bs_beam_szas__f_byte_size);
1292  BYTE_SIZE_ERROR_CHECK("bs_n_user_relazms_",sizeof(*transfer_struct_c.bs_n_user_relazms_),transfer_struct_c.bs_n_user_relazms__f_byte_size);
1293  BYTE_SIZE_ERROR_CHECK("bs_user_relazms_",sizeof(*transfer_struct_c.bs_user_relazms_),transfer_struct_c.bs_user_relazms__f_byte_size);
1294  BYTE_SIZE_ERROR_CHECK("bs_n_user_streams_",sizeof(*transfer_struct_c.bs_n_user_streams_),transfer_struct_c.bs_n_user_streams__f_byte_size);
1295  BYTE_SIZE_ERROR_CHECK("bs_user_angles_input_",sizeof(*transfer_struct_c.bs_user_angles_input_),transfer_struct_c.bs_user_angles_input__f_byte_size);
1296  BYTE_SIZE_ERROR_CHECK("bs_n_user_obsgeoms_",sizeof(*transfer_struct_c.bs_n_user_obsgeoms_),transfer_struct_c.bs_n_user_obsgeoms__f_byte_size);
1297  BYTE_SIZE_ERROR_CHECK("bs_user_obsgeoms_",sizeof(*transfer_struct_c.bs_user_obsgeoms_),transfer_struct_c.bs_user_obsgeoms__f_byte_size);
1298  BYTE_SIZE_ERROR_CHECK("bs_n_brdf_kernels_",sizeof(*transfer_struct_c.bs_n_brdf_kernels_),transfer_struct_c.bs_n_brdf_kernels__f_byte_size);
1299  BYTE_SIZE_ERROR_CHECK("bs_which_brdf_",sizeof(*transfer_struct_c.bs_which_brdf_),transfer_struct_c.bs_which_brdf__f_byte_size);
1300  BYTE_SIZE_ERROR_CHECK("bs_n_brdf_parameters_",sizeof(*transfer_struct_c.bs_n_brdf_parameters_),transfer_struct_c.bs_n_brdf_parameters__f_byte_size);
1301  BYTE_SIZE_ERROR_CHECK("bs_brdf_parameters_",sizeof(*transfer_struct_c.bs_brdf_parameters_),transfer_struct_c.bs_brdf_parameters__f_byte_size);
1302  BYTE_SIZE_ERROR_CHECK("bs_lambertian_kernel_flag_",sizeof(*transfer_struct_c.bs_lambertian_kernel_flag_),transfer_struct_c.bs_lambertian_kernel_flag__f_byte_size);
1303  BYTE_SIZE_ERROR_CHECK("bs_brdf_factors_",sizeof(*transfer_struct_c.bs_brdf_factors_),transfer_struct_c.bs_brdf_factors__f_byte_size);
1304  BYTE_SIZE_ERROR_CHECK("bs_nstreams_brdf_",sizeof(*transfer_struct_c.bs_nstreams_brdf_),transfer_struct_c.bs_nstreams_brdf__f_byte_size);
1305  BYTE_SIZE_ERROR_CHECK("bs_do_shadow_effect_",sizeof(*transfer_struct_c.bs_do_shadow_effect_),transfer_struct_c.bs_do_shadow_effect__f_byte_size);
1306  BYTE_SIZE_ERROR_CHECK("bs_do_directbounce_only_",sizeof(*transfer_struct_c.bs_do_directbounce_only_),transfer_struct_c.bs_do_directbounce_only__f_byte_size);
1307  BYTE_SIZE_ERROR_CHECK("bs_do_wsabsa_output_",sizeof(*transfer_struct_c.bs_do_wsabsa_output_),transfer_struct_c.bs_do_wsabsa_output__f_byte_size);
1308  BYTE_SIZE_ERROR_CHECK("bs_do_wsa_scaling_",sizeof(*transfer_struct_c.bs_do_wsa_scaling_),transfer_struct_c.bs_do_wsa_scaling__f_byte_size);
1309  BYTE_SIZE_ERROR_CHECK("bs_do_bsa_scaling_",sizeof(*transfer_struct_c.bs_do_bsa_scaling_),transfer_struct_c.bs_do_bsa_scaling__f_byte_size);
1310  BYTE_SIZE_ERROR_CHECK("bs_wsa_value_",sizeof(*transfer_struct_c.bs_wsa_value_),transfer_struct_c.bs_wsa_value__f_byte_size);
1311  BYTE_SIZE_ERROR_CHECK("bs_bsa_value_",sizeof(*transfer_struct_c.bs_bsa_value_),transfer_struct_c.bs_bsa_value__f_byte_size);
1312  BYTE_SIZE_ERROR_CHECK("bs_do_newcmglint_",sizeof(*transfer_struct_c.bs_do_newcmglint_),transfer_struct_c.bs_do_newcmglint__f_byte_size);
1313  BYTE_SIZE_ERROR_CHECK("bs_salinity_",sizeof(*transfer_struct_c.bs_salinity_),transfer_struct_c.bs_salinity__f_byte_size);
1314  BYTE_SIZE_ERROR_CHECK("bs_wavelength_",sizeof(*transfer_struct_c.bs_wavelength_),transfer_struct_c.bs_wavelength__f_byte_size);
1315  BYTE_SIZE_ERROR_CHECK("bs_windspeed_",sizeof(*transfer_struct_c.bs_windspeed_),transfer_struct_c.bs_windspeed__f_byte_size);
1316  BYTE_SIZE_ERROR_CHECK("bs_winddir_",sizeof(*transfer_struct_c.bs_winddir_),transfer_struct_c.bs_winddir__f_byte_size);
1317  BYTE_SIZE_ERROR_CHECK("bs_do_glintshadow_",sizeof(*transfer_struct_c.bs_do_glintshadow_),transfer_struct_c.bs_do_glintshadow__f_byte_size);
1318  BYTE_SIZE_ERROR_CHECK("bs_do_foamoption_",sizeof(*transfer_struct_c.bs_do_foamoption_),transfer_struct_c.bs_do_foamoption__f_byte_size);
1319  BYTE_SIZE_ERROR_CHECK("bs_do_facetisotropy_",sizeof(*transfer_struct_c.bs_do_facetisotropy_),transfer_struct_c.bs_do_facetisotropy__f_byte_size);
1320  BYTE_SIZE_ERROR_CHECK("bs_do_glitter_msrcorr_",sizeof(*transfer_struct_c.bs_do_glitter_msrcorr_),transfer_struct_c.bs_do_glitter_msrcorr__f_byte_size);
1321  BYTE_SIZE_ERROR_CHECK("bs_do_glitter_msrcorr_dbonly_",sizeof(*transfer_struct_c.bs_do_glitter_msrcorr_dbonly_),transfer_struct_c.bs_do_glitter_msrcorr_dbonly__f_byte_size);
1322  BYTE_SIZE_ERROR_CHECK("bs_glitter_msrcorr_order_",sizeof(*transfer_struct_c.bs_glitter_msrcorr_order_),transfer_struct_c.bs_glitter_msrcorr_order__f_byte_size);
1323  BYTE_SIZE_ERROR_CHECK("bs_glitter_msrcorr_nmuquad_",sizeof(*transfer_struct_c.bs_glitter_msrcorr_nmuquad_),transfer_struct_c.bs_glitter_msrcorr_nmuquad__f_byte_size);
1324  BYTE_SIZE_ERROR_CHECK("bs_glitter_msrcorr_nphiquad_",sizeof(*transfer_struct_c.bs_glitter_msrcorr_nphiquad_),transfer_struct_c.bs_glitter_msrcorr_nphiquad__f_byte_size);
1325 
1326  }
1327 
1328 private:
1329  void link_blitz_arrays() {
1330  bs_beam_szas_.reference(blitz::Array<double, 1>(transfer_struct_c.bs_beam_szas_,
1331  blitz::shape(transfer_struct_c.bs_beam_szas__f_shapes[0]),
1332  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
1333  bs_user_relazms_.reference(blitz::Array<double, 1>(transfer_struct_c.bs_user_relazms_,
1334  blitz::shape(transfer_struct_c.bs_user_relazms__f_shapes[0]),
1335  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
1336  bs_user_angles_input_.reference(blitz::Array<double, 1>(transfer_struct_c.bs_user_angles_input_,
1337  blitz::shape(transfer_struct_c.bs_user_angles_input__f_shapes[0]),
1338  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
1339  bs_user_obsgeoms_.reference(blitz::Array<double, 2>(transfer_struct_c.bs_user_obsgeoms_,
1340  blitz::shape(transfer_struct_c.bs_user_obsgeoms__f_shapes[0],
1341  transfer_struct_c.bs_user_obsgeoms__f_shapes[1]),
1342  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
1343  bs_which_brdf_.reference(blitz::Array<int, 1>(transfer_struct_c.bs_which_brdf_,
1344  blitz::shape(transfer_struct_c.bs_which_brdf__f_shapes[0]),
1345  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
1346  bs_n_brdf_parameters_.reference(blitz::Array<int, 1>(transfer_struct_c.bs_n_brdf_parameters_,
1347  blitz::shape(transfer_struct_c.bs_n_brdf_parameters__f_shapes[0]),
1348  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
1349  bs_brdf_parameters_.reference(blitz::Array<double, 2>(transfer_struct_c.bs_brdf_parameters_,
1350  blitz::shape(transfer_struct_c.bs_brdf_parameters__f_shapes[0],
1351  transfer_struct_c.bs_brdf_parameters__f_shapes[1]),
1352  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
1353  bs_lambertian_kernel_flag_.reference(blitz::Array<int, 1>(transfer_struct_c.bs_lambertian_kernel_flag_,
1354  blitz::shape(transfer_struct_c.bs_lambertian_kernel_flag__f_shapes[0]),
1355  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
1356  bs_brdf_factors_.reference(blitz::Array<double, 1>(transfer_struct_c.bs_brdf_factors_,
1357  blitz::shape(transfer_struct_c.bs_brdf_factors__f_shapes[0]),
1358  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
1359  bs_winddir_.reference(blitz::Array<double, 1>(transfer_struct_c.bs_winddir_,
1360  blitz::shape(transfer_struct_c.bs_winddir__f_shapes[0]),
1361  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
1362 
1363  }
1364 
1365  void link_nested_types() {
1366 
1367  }
1368 
1369  struct brdf_sup_inputs transfer_struct_c;
1370 
1371  blitz::Array<double, 1> bs_beam_szas_;
1372  blitz::Array<double, 1> bs_user_relazms_;
1373  blitz::Array<double, 1> bs_user_angles_input_;
1374  blitz::Array<double, 2> bs_user_obsgeoms_;
1375  blitz::Array<int, 1> bs_which_brdf_;
1376  blitz::Array<int, 1> bs_n_brdf_parameters_;
1377  blitz::Array<double, 2> bs_brdf_parameters_;
1378  blitz::Array<int, 1> bs_lambertian_kernel_flag_;
1379  blitz::Array<double, 1> bs_brdf_factors_;
1380  blitz::Array<double, 1> bs_winddir_;
1381 
1382 };
1383 
1384 // Links to type: "brdf_sup_outputs" from module: "brdf_sup_outputs_def" in file: "brdf_sup_outputs_def.f90"
1385 extern "C" {
1386  void brdf_sup_outputs_c_alloc_init(struct brdf_sup_outputs *transfer_struct_c, void **fortran_type_c);
1387  void brdf_sup_outputs_c_init_only(struct brdf_sup_outputs *transfer_struct_c, void **fortran_type_c);
1388  void brdf_sup_outputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
1389  void brdf_sup_outputs_c_destroy(void **fortran_type_c);
1390 
1391 }
1392 
1395  int bs_dbounce_brdfunc__f_shapes[3];
1397 
1398  double* bs_brdf_f_0_;
1399  int bs_brdf_f_0__f_shapes[3];
1401 
1402  double* bs_brdf_f_;
1403  int bs_brdf_f__f_shapes[3];
1405 
1407  int bs_user_brdf_f_0__f_shapes[3];
1409 
1411  int bs_user_brdf_f__f_shapes[3];
1413 
1415  int bs_emissivity__f_shapes[1];
1417 
1419  int bs_user_emissivity__f_shapes[1];
1421 
1424 
1426  int bs_wsa_kernels__f_shapes[1];
1428 
1431 
1433  int bs_bsa_kernels__f_shapes[1];
1435 
1436 
1437 };
1438 
1439 // Links to type: "brdf_sup_outputs" from module: "brdf_sup_outputs_def" in file: "brdf_sup_outputs_def.f90"
1441 public:
1442  // Allocating constructor
1444  brdf_sup_outputs_c_alloc_init(&transfer_struct_c, &fortran_type_c);
1445  link_blitz_arrays();
1446  link_nested_types();
1447  }
1448 
1449  // Linked to other data structure
1450  Brdf_Sup_Outputs(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
1451  brdf_sup_outputs_c_init_only(&transfer_struct_c, &fortran_type_c);
1452  link_blitz_arrays();
1453  link_nested_types();
1454  }
1455 
1456  // Deallocate
1458  if (owns_pointer)
1459  brdf_sup_outputs_c_destroy(&fortran_type_c);
1460  }
1461 
1462  const blitz::Array<double, 3>& bs_dbounce_brdfunc() const {
1463  return bs_dbounce_brdfunc_;
1464  }
1465 
1466  void bs_dbounce_brdfunc(const blitz::Array<double, 3>& bs_dbounce_brdfunc_in) {
1467  bs_dbounce_brdfunc_ = bs_dbounce_brdfunc_in;
1468  }
1469 
1470 
1471  const blitz::Array<double, 3>& bs_brdf_f_0() const {
1472  return bs_brdf_f_0_;
1473  }
1474 
1475  void bs_brdf_f_0(const blitz::Array<double, 3>& bs_brdf_f_0_in) {
1476  bs_brdf_f_0_ = bs_brdf_f_0_in;
1477  }
1478 
1479 
1480  const blitz::Array<double, 3>& bs_brdf_f() const {
1481  return bs_brdf_f_;
1482  }
1483 
1484  void bs_brdf_f(const blitz::Array<double, 3>& bs_brdf_f_in) {
1485  bs_brdf_f_ = bs_brdf_f_in;
1486  }
1487 
1488 
1489  const blitz::Array<double, 3>& bs_user_brdf_f_0() const {
1490  return bs_user_brdf_f_0_;
1491  }
1492 
1493  void bs_user_brdf_f_0(const blitz::Array<double, 3>& bs_user_brdf_f_0_in) {
1494  bs_user_brdf_f_0_ = bs_user_brdf_f_0_in;
1495  }
1496 
1497 
1498  const blitz::Array<double, 3>& bs_user_brdf_f() const {
1499  return bs_user_brdf_f_;
1500  }
1501 
1502  void bs_user_brdf_f(const blitz::Array<double, 3>& bs_user_brdf_f_in) {
1503  bs_user_brdf_f_ = bs_user_brdf_f_in;
1504  }
1505 
1506 
1507  const blitz::Array<double, 1>& bs_emissivity() const {
1508  return bs_emissivity_;
1509  }
1510 
1511  void bs_emissivity(const blitz::Array<double, 1>& bs_emissivity_in) {
1512  bs_emissivity_ = bs_emissivity_in;
1513  }
1514 
1515 
1516  const blitz::Array<double, 1>& bs_user_emissivity() const {
1517  return bs_user_emissivity_;
1518  }
1519 
1520  void bs_user_emissivity(const blitz::Array<double, 1>& bs_user_emissivity_in) {
1521  bs_user_emissivity_ = bs_user_emissivity_in;
1522  }
1523 
1524 
1525  const double& bs_wsa_calculated() const {
1526  return *transfer_struct_c.bs_wsa_calculated_;
1527  }
1528 
1529  void bs_wsa_calculated(const double& bs_wsa_calculated_in) {
1530  *transfer_struct_c.bs_wsa_calculated_ = bs_wsa_calculated_in;
1531  }
1532 
1533 
1534  const blitz::Array<double, 1>& bs_wsa_kernels() const {
1535  return bs_wsa_kernels_;
1536  }
1537 
1538  void bs_wsa_kernels(const blitz::Array<double, 1>& bs_wsa_kernels_in) {
1539  bs_wsa_kernels_ = bs_wsa_kernels_in;
1540  }
1541 
1542 
1543  const double& bs_bsa_calculated() const {
1544  return *transfer_struct_c.bs_bsa_calculated_;
1545  }
1546 
1547  void bs_bsa_calculated(const double& bs_bsa_calculated_in) {
1548  *transfer_struct_c.bs_bsa_calculated_ = bs_bsa_calculated_in;
1549  }
1550 
1551 
1552  const blitz::Array<double, 1>& bs_bsa_kernels() const {
1553  return bs_bsa_kernels_;
1554  }
1555 
1556  void bs_bsa_kernels(const blitz::Array<double, 1>& bs_bsa_kernels_in) {
1557  bs_bsa_kernels_ = bs_bsa_kernels_in;
1558  }
1559 
1560 
1561 
1562 
1563 
1564  virtual void print(std::ostream &output_stream) const {
1565  output_stream << "Brdf_Sup_Outputs:" << std::endl
1566  << "bs_dbounce_brdfunc: " << std::endl << bs_dbounce_brdfunc() << std::endl
1567  << " bs_brdf_f_0: " << std::endl << bs_brdf_f_0() << std::endl
1568  << " bs_brdf_f: " << std::endl << bs_brdf_f() << std::endl
1569  << " bs_user_brdf_f_0: " << std::endl << bs_user_brdf_f_0() << std::endl
1570  << " bs_user_brdf_f: " << std::endl << bs_user_brdf_f() << std::endl
1571  << " bs_emissivity: " << std::endl << bs_emissivity() << std::endl
1572  << "bs_user_emissivity: " << std::endl << bs_user_emissivity() << std::endl
1573  << " bs_wsa_calculated: " << bs_wsa_calculated() << std::endl
1574  << " bs_wsa_kernels: " << std::endl << bs_wsa_kernels() << std::endl
1575  << " bs_bsa_calculated: " << bs_bsa_calculated() << std::endl
1576  << " bs_bsa_kernels: " << std::endl << bs_bsa_kernels() << std::endl;
1577 
1578  }
1579 
1581  BYTE_SIZE_ERROR_CHECK("bs_dbounce_brdfunc_",sizeof(*transfer_struct_c.bs_dbounce_brdfunc_),transfer_struct_c.bs_dbounce_brdfunc__f_byte_size);
1582  BYTE_SIZE_ERROR_CHECK("bs_brdf_f_0_",sizeof(*transfer_struct_c.bs_brdf_f_0_),transfer_struct_c.bs_brdf_f_0__f_byte_size);
1583  BYTE_SIZE_ERROR_CHECK("bs_brdf_f_",sizeof(*transfer_struct_c.bs_brdf_f_),transfer_struct_c.bs_brdf_f__f_byte_size);
1584  BYTE_SIZE_ERROR_CHECK("bs_user_brdf_f_0_",sizeof(*transfer_struct_c.bs_user_brdf_f_0_),transfer_struct_c.bs_user_brdf_f_0__f_byte_size);
1585  BYTE_SIZE_ERROR_CHECK("bs_user_brdf_f_",sizeof(*transfer_struct_c.bs_user_brdf_f_),transfer_struct_c.bs_user_brdf_f__f_byte_size);
1586  BYTE_SIZE_ERROR_CHECK("bs_emissivity_",sizeof(*transfer_struct_c.bs_emissivity_),transfer_struct_c.bs_emissivity__f_byte_size);
1587  BYTE_SIZE_ERROR_CHECK("bs_user_emissivity_",sizeof(*transfer_struct_c.bs_user_emissivity_),transfer_struct_c.bs_user_emissivity__f_byte_size);
1588  BYTE_SIZE_ERROR_CHECK("bs_wsa_calculated_",sizeof(*transfer_struct_c.bs_wsa_calculated_),transfer_struct_c.bs_wsa_calculated__f_byte_size);
1589  BYTE_SIZE_ERROR_CHECK("bs_wsa_kernels_",sizeof(*transfer_struct_c.bs_wsa_kernels_),transfer_struct_c.bs_wsa_kernels__f_byte_size);
1590  BYTE_SIZE_ERROR_CHECK("bs_bsa_calculated_",sizeof(*transfer_struct_c.bs_bsa_calculated_),transfer_struct_c.bs_bsa_calculated__f_byte_size);
1591  BYTE_SIZE_ERROR_CHECK("bs_bsa_kernels_",sizeof(*transfer_struct_c.bs_bsa_kernels_),transfer_struct_c.bs_bsa_kernels__f_byte_size);
1592 
1593  }
1594 
1595 private:
1596  void link_blitz_arrays() {
1597  bs_dbounce_brdfunc_.reference(blitz::Array<double, 3>(transfer_struct_c.bs_dbounce_brdfunc_,
1598  blitz::shape(transfer_struct_c.bs_dbounce_brdfunc__f_shapes[0],
1599  transfer_struct_c.bs_dbounce_brdfunc__f_shapes[1],
1600  transfer_struct_c.bs_dbounce_brdfunc__f_shapes[2]),
1601  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
1602  bs_brdf_f_0_.reference(blitz::Array<double, 3>(transfer_struct_c.bs_brdf_f_0_,
1603  blitz::shape(transfer_struct_c.bs_brdf_f_0__f_shapes[0],
1604  transfer_struct_c.bs_brdf_f_0__f_shapes[1],
1605  transfer_struct_c.bs_brdf_f_0__f_shapes[2]),
1606  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
1607  bs_brdf_f_.reference(blitz::Array<double, 3>(transfer_struct_c.bs_brdf_f_,
1608  blitz::shape(transfer_struct_c.bs_brdf_f__f_shapes[0],
1609  transfer_struct_c.bs_brdf_f__f_shapes[1],
1610  transfer_struct_c.bs_brdf_f__f_shapes[2]),
1611  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
1612  bs_user_brdf_f_0_.reference(blitz::Array<double, 3>(transfer_struct_c.bs_user_brdf_f_0_,
1613  blitz::shape(transfer_struct_c.bs_user_brdf_f_0__f_shapes[0],
1614  transfer_struct_c.bs_user_brdf_f_0__f_shapes[1],
1615  transfer_struct_c.bs_user_brdf_f_0__f_shapes[2]),
1616  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
1617  bs_user_brdf_f_.reference(blitz::Array<double, 3>(transfer_struct_c.bs_user_brdf_f_,
1618  blitz::shape(transfer_struct_c.bs_user_brdf_f__f_shapes[0],
1619  transfer_struct_c.bs_user_brdf_f__f_shapes[1],
1620  transfer_struct_c.bs_user_brdf_f__f_shapes[2]),
1621  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
1622  bs_emissivity_.reference(blitz::Array<double, 1>(transfer_struct_c.bs_emissivity_,
1623  blitz::shape(transfer_struct_c.bs_emissivity__f_shapes[0]),
1624  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
1625  bs_user_emissivity_.reference(blitz::Array<double, 1>(transfer_struct_c.bs_user_emissivity_,
1626  blitz::shape(transfer_struct_c.bs_user_emissivity__f_shapes[0]),
1627  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
1628  bs_wsa_kernels_.reference(blitz::Array<double, 1>(transfer_struct_c.bs_wsa_kernels_,
1629  blitz::shape(transfer_struct_c.bs_wsa_kernels__f_shapes[0]),
1630  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
1631  bs_bsa_kernels_.reference(blitz::Array<double, 1>(transfer_struct_c.bs_bsa_kernels_,
1632  blitz::shape(transfer_struct_c.bs_bsa_kernels__f_shapes[0]),
1633  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
1634 
1635  }
1636 
1637  void link_nested_types() {
1638 
1639  }
1640 
1641  struct brdf_sup_outputs transfer_struct_c;
1642 
1643  blitz::Array<double, 3> bs_dbounce_brdfunc_;
1644  blitz::Array<double, 3> bs_brdf_f_0_;
1645  blitz::Array<double, 3> bs_brdf_f_;
1646  blitz::Array<double, 3> bs_user_brdf_f_0_;
1647  blitz::Array<double, 3> bs_user_brdf_f_;
1648  blitz::Array<double, 1> bs_emissivity_;
1649  blitz::Array<double, 1> bs_user_emissivity_;
1650  blitz::Array<double, 1> bs_wsa_kernels_;
1651  blitz::Array<double, 1> bs_bsa_kernels_;
1652 
1653 };
1654 
1655 // Links to type: "brdf_input_exception_handling" from module: "brdf_sup_outputs_def" in file: "brdf_sup_outputs_def.f90"
1656 extern "C" {
1657  void brdf_input_exception_handling_c_alloc_init(struct brdf_input_exception_handling *transfer_struct_c, void **fortran_type_c);
1658  void brdf_input_exception_handling_c_init_only(struct brdf_input_exception_handling *transfer_struct_c, void **fortran_type_c);
1659  void brdf_input_exception_handling_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
1660  void brdf_input_exception_handling_c_destroy(void **fortran_type_c);
1661  void brdf_input_exception_handling_bs_inputmessages_get(void **fortran_type_c, const int* bs_inputmessages_in_shape_1, const int* bs_inputmessages_in_len, const char* bs_inputmessages_in);
1662  void brdf_input_exception_handling_bs_inputactions_get(void **fortran_type_c, const int* bs_inputactions_in_shape_1, const int* bs_inputactions_in_len, const char* bs_inputactions_in);
1663 
1664 }
1665 
1669 
1672 
1673 
1674  int bs_inputmessages__f_shapes[1];
1676 
1677 
1678  int bs_inputactions__f_shapes[1];
1680 
1681 
1682 };
1683 
1684 // Links to type: "brdf_input_exception_handling" from module: "brdf_sup_outputs_def" in file: "brdf_sup_outputs_def.f90"
1686 public:
1687  // Allocating constructor
1689  brdf_input_exception_handling_c_alloc_init(&transfer_struct_c, &fortran_type_c);
1690  link_blitz_arrays();
1691  link_nested_types();
1692  }
1693 
1694  // Linked to other data structure
1695  Brdf_Input_Exception_Handling(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
1696  brdf_input_exception_handling_c_init_only(&transfer_struct_c, &fortran_type_c);
1697  link_blitz_arrays();
1698  link_nested_types();
1699  }
1700 
1701  // Deallocate
1703  if (owns_pointer)
1704  brdf_input_exception_handling_c_destroy(&fortran_type_c);
1705  }
1706 
1707  const int& bs_status_inputread() const {
1708  return *transfer_struct_c.bs_status_inputread_;
1709  }
1710 
1711  void bs_status_inputread(const int& bs_status_inputread_in) {
1712  *transfer_struct_c.bs_status_inputread_ = bs_status_inputread_in;
1713  }
1714 
1715 
1716  const int& bs_ninputmessages() const {
1717  return *transfer_struct_c.bs_ninputmessages_;
1718  }
1719 
1720  void bs_ninputmessages(const int& bs_ninputmessages_in) {
1721  *transfer_struct_c.bs_ninputmessages_ = bs_ninputmessages_in;
1722  }
1723 
1724 
1725  const std::vector< std::string > bs_inputmessages() const {
1726  std::vector< std::string > bs_inputmessages_ret;
1727  blitz::Array<char, 2> bs_inputmessages_lcl = blitz::Array<char, 2>(transfer_struct_c.bs_inputmessages__f_shapes[0], transfer_struct_c.bs_inputmessages__f_len+1, blitz::ColumnMajorArray<2>());
1728  brdf_input_exception_handling_bs_inputmessages_get(const_cast<void**>(&fortran_type_c), &transfer_struct_c.bs_inputmessages__f_shapes[0], &transfer_struct_c.bs_inputmessages__f_len, bs_inputmessages_lcl.dataFirst());
1729  for(int dim_0_idx = 0; dim_0_idx < bs_inputmessages_lcl.extent(0); dim_0_idx++)
1730  bs_inputmessages_ret.push_back( std::string(std::string(bs_inputmessages_lcl(dim_0_idx, blitz::Range::all()).begin(), bs_inputmessages_lcl(dim_0_idx, blitz::Range::all()).end()).c_str()) );
1731  return bs_inputmessages_ret;
1732  }
1733 
1734 
1735  const std::vector< std::string > bs_inputactions() const {
1736  std::vector< std::string > bs_inputactions_ret;
1737  blitz::Array<char, 2> bs_inputactions_lcl = blitz::Array<char, 2>(transfer_struct_c.bs_inputactions__f_shapes[0], transfer_struct_c.bs_inputactions__f_len+1, blitz::ColumnMajorArray<2>());
1738  brdf_input_exception_handling_bs_inputactions_get(const_cast<void**>(&fortran_type_c), &transfer_struct_c.bs_inputactions__f_shapes[0], &transfer_struct_c.bs_inputactions__f_len, bs_inputactions_lcl.dataFirst());
1739  for(int dim_0_idx = 0; dim_0_idx < bs_inputactions_lcl.extent(0); dim_0_idx++)
1740  bs_inputactions_ret.push_back( std::string(std::string(bs_inputactions_lcl(dim_0_idx, blitz::Range::all()).begin(), bs_inputactions_lcl(dim_0_idx, blitz::Range::all()).end()).c_str()) );
1741  return bs_inputactions_ret;
1742  }
1743 
1744 
1745 
1746 
1747 
1748  virtual void print(std::ostream &output_stream) const {
1749  output_stream << "Brdf_Input_Exception_Handling:" << std::endl
1750  << "bs_status_inputread: " << bs_status_inputread() << std::endl
1751  << " bs_ninputmessages: " << bs_ninputmessages() << std::endl
1752  << " bs_inputmessages: " << std::endl;
1753  std::vector< std::string > bs_inputmessages_lcl = bs_inputmessages();
1754  for(unsigned int idx = 0; idx < bs_inputmessages_lcl.size(); idx++)
1755  if ( bs_inputmessages_lcl[idx].length() > 0 )
1756  output_stream << " [" << idx << "]: \"" << bs_inputmessages_lcl[idx] << "\"" << std::endl;
1757  output_stream
1758  << " bs_inputactions: " << std::endl;
1759  std::vector< std::string > bs_inputactions_lcl = bs_inputactions();
1760  for(unsigned int idx = 0; idx < bs_inputactions_lcl.size(); idx++)
1761  if ( bs_inputactions_lcl[idx].length() > 0 )
1762  output_stream << " [" << idx << "]: \"" << bs_inputactions_lcl[idx] << "\"" << std::endl;
1763  }
1764 
1766  BYTE_SIZE_ERROR_CHECK("bs_status_inputread_",sizeof(*transfer_struct_c.bs_status_inputread_),transfer_struct_c.bs_status_inputread__f_byte_size);
1767  BYTE_SIZE_ERROR_CHECK("bs_ninputmessages_",sizeof(*transfer_struct_c.bs_ninputmessages_),transfer_struct_c.bs_ninputmessages__f_byte_size);
1768 
1769  }
1770 
1771 private:
1772  void link_blitz_arrays() {
1773 
1774  }
1775 
1776  void link_nested_types() {
1777 
1778  }
1779 
1780  struct brdf_input_exception_handling transfer_struct_c;
1781 
1782 
1783 };
1784 
1785 // Links to type: "brdf_output_exception_handling" from module: "brdf_sup_outputs_def" in file: "brdf_sup_outputs_def.f90"
1786 extern "C" {
1787  void brdf_output_exception_handling_c_alloc_init(struct brdf_output_exception_handling *transfer_struct_c, void **fortran_type_c);
1788  void brdf_output_exception_handling_c_init_only(struct brdf_output_exception_handling *transfer_struct_c, void **fortran_type_c);
1789  void brdf_output_exception_handling_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
1790  void brdf_output_exception_handling_c_destroy(void **fortran_type_c);
1791  void brdf_output_exception_handling_bs_outputmessages_get(void **fortran_type_c, const int* bs_outputmessages_in_shape_1, const int* bs_outputmessages_in_len, const char* bs_outputmessages_in);
1792 
1793 }
1794 
1798 
1801 
1802 
1803  int bs_outputmessages__f_shapes[1];
1805 
1806 
1807 };
1808 
1809 // Links to type: "brdf_output_exception_handling" from module: "brdf_sup_outputs_def" in file: "brdf_sup_outputs_def.f90"
1811 public:
1812  // Allocating constructor
1814  brdf_output_exception_handling_c_alloc_init(&transfer_struct_c, &fortran_type_c);
1815  link_blitz_arrays();
1816  link_nested_types();
1817  }
1818 
1819  // Linked to other data structure
1820  Brdf_Output_Exception_Handling(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
1821  brdf_output_exception_handling_c_init_only(&transfer_struct_c, &fortran_type_c);
1822  link_blitz_arrays();
1823  link_nested_types();
1824  }
1825 
1826  // Deallocate
1828  if (owns_pointer)
1830  }
1831 
1832  const int& bs_status_output() const {
1833  return *transfer_struct_c.bs_status_output_;
1834  }
1835 
1836  void bs_status_output(const int& bs_status_output_in) {
1837  *transfer_struct_c.bs_status_output_ = bs_status_output_in;
1838  }
1839 
1840 
1841  const int& bs_noutputmessages() const {
1842  return *transfer_struct_c.bs_noutputmessages_;
1843  }
1844 
1845  void bs_noutputmessages(const int& bs_noutputmessages_in) {
1846  *transfer_struct_c.bs_noutputmessages_ = bs_noutputmessages_in;
1847  }
1848 
1849 
1850  const std::vector< std::string > bs_outputmessages() const {
1851  std::vector< std::string > bs_outputmessages_ret;
1852  blitz::Array<char, 2> bs_outputmessages_lcl = blitz::Array<char, 2>(transfer_struct_c.bs_outputmessages__f_shapes[0], transfer_struct_c.bs_outputmessages__f_len+1, blitz::ColumnMajorArray<2>());
1853  brdf_output_exception_handling_bs_outputmessages_get(const_cast<void**>(&fortran_type_c), &transfer_struct_c.bs_outputmessages__f_shapes[0], &transfer_struct_c.bs_outputmessages__f_len, bs_outputmessages_lcl.dataFirst());
1854  for(int dim_0_idx = 0; dim_0_idx < bs_outputmessages_lcl.extent(0); dim_0_idx++)
1855  bs_outputmessages_ret.push_back( std::string(std::string(bs_outputmessages_lcl(dim_0_idx, blitz::Range::all()).begin(), bs_outputmessages_lcl(dim_0_idx, blitz::Range::all()).end()).c_str()) );
1856  return bs_outputmessages_ret;
1857  }
1858 
1859 
1860 
1861 
1862 
1863  virtual void print(std::ostream &output_stream) const {
1864  output_stream << "Brdf_Output_Exception_Handling:" << std::endl
1865  << " bs_status_output: " << bs_status_output() << std::endl
1866  << "bs_noutputmessages: " << bs_noutputmessages() << std::endl
1867  << " bs_outputmessages: " << std::endl;
1868  std::vector< std::string > bs_outputmessages_lcl = bs_outputmessages();
1869  for(unsigned int idx = 0; idx < bs_outputmessages_lcl.size(); idx++)
1870  if ( bs_outputmessages_lcl[idx].length() > 0 )
1871  output_stream << " [" << idx << "]: \"" << bs_outputmessages_lcl[idx] << "\"" << std::endl;
1872  }
1873 
1875  BYTE_SIZE_ERROR_CHECK("bs_status_output_",sizeof(*transfer_struct_c.bs_status_output_),transfer_struct_c.bs_status_output__f_byte_size);
1876  BYTE_SIZE_ERROR_CHECK("bs_noutputmessages_",sizeof(*transfer_struct_c.bs_noutputmessages_),transfer_struct_c.bs_noutputmessages__f_byte_size);
1877 
1878  }
1879 
1880 private:
1881  void link_blitz_arrays() {
1882 
1883  }
1884 
1885  void link_nested_types() {
1886 
1887  }
1888 
1889  struct brdf_output_exception_handling transfer_struct_c;
1890 
1891 
1892 };
1893 
1894 // Links to type: "sleave_sup_inputs" from module: "sleave_sup_inputs_def" in file: "sleave_sup_inputs_def.f90"
1895 extern "C" {
1896  void sleave_sup_inputs_c_alloc_init(struct sleave_sup_inputs *transfer_struct_c, void **fortran_type_c);
1897  void sleave_sup_inputs_c_init_only(struct sleave_sup_inputs *transfer_struct_c, void **fortran_type_c);
1898  void sleave_sup_inputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
1899  void sleave_sup_inputs_c_destroy(void **fortran_type_c);
1900 
1901 }
1902 
1906 
1909 
1912 
1915 
1918 
1921 
1924 
1927 
1930 
1931  double* sl_beam_szas_;
1932  int sl_beam_szas__f_shapes[1];
1934 
1937 
1939  int sl_user_relazms__f_shapes[1];
1941 
1944 
1947 
1949  int sl_user_angles_input__f_shapes[1];
1951 
1954 
1956  int sl_user_obsgeoms__f_shapes[2];
1958 
1959  double* sl_salinity_;
1961 
1962  double* sl_chlorconc_;
1964 
1967 
1968  double* sl_windspeed_;
1970 
1971  double* sl_winddir_;
1972  int sl_winddir__f_shapes[1];
1974 
1977 
1980 
1983 
1986 
1989 
1992 
1994  int sl_fl_epoch__f_shapes[1];
1996 
1999 
2002 
2004  int sl_fl_inputgaussians__f_shapes[2];
2006 
2007 
2008 };
2009 
2010 // Links to type: "sleave_sup_inputs" from module: "sleave_sup_inputs_def" in file: "sleave_sup_inputs_def.f90"
2012 public:
2013  // Allocating constructor
2015  sleave_sup_inputs_c_alloc_init(&transfer_struct_c, &fortran_type_c);
2016  link_blitz_arrays();
2017  link_nested_types();
2018  }
2019 
2020  // Linked to other data structure
2021  Sleave_Sup_Inputs(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
2022  sleave_sup_inputs_c_init_only(&transfer_struct_c, &fortran_type_c);
2023  link_blitz_arrays();
2024  link_nested_types();
2025  }
2026 
2027  // Deallocate
2029  if (owns_pointer)
2030  sleave_sup_inputs_c_destroy(&fortran_type_c);
2031  }
2032 
2033  const bool sl_do_sleaving() const {
2034  return *transfer_struct_c.sl_do_sleaving_ != 0;
2035  }
2036 
2037  void sl_do_sleaving(const bool& sl_do_sleaving_in) {
2038  *transfer_struct_c.sl_do_sleaving_ = sl_do_sleaving_in ? FORTRAN_TRUE_INT : 0;
2039  }
2040 
2041 
2042  const bool sl_do_isotropic() const {
2043  return *transfer_struct_c.sl_do_isotropic_ != 0;
2044  }
2045 
2046  void sl_do_isotropic(const bool& sl_do_isotropic_in) {
2047  *transfer_struct_c.sl_do_isotropic_ = sl_do_isotropic_in ? FORTRAN_TRUE_INT : 0;
2048  }
2049 
2050 
2051  const bool sl_do_exact() const {
2052  return *transfer_struct_c.sl_do_exact_ != 0;
2053  }
2054 
2055  void sl_do_exact(const bool& sl_do_exact_in) {
2056  *transfer_struct_c.sl_do_exact_ = sl_do_exact_in ? FORTRAN_TRUE_INT : 0;
2057  }
2058 
2059 
2060  const bool sl_do_exactonly() const {
2061  return *transfer_struct_c.sl_do_exactonly_ != 0;
2062  }
2063 
2064  void sl_do_exactonly(const bool& sl_do_exactonly_in) {
2065  *transfer_struct_c.sl_do_exactonly_ = sl_do_exactonly_in ? FORTRAN_TRUE_INT : 0;
2066  }
2067 
2068 
2069  const bool sl_do_fluorescence() const {
2070  return *transfer_struct_c.sl_do_fluorescence_ != 0;
2071  }
2072 
2073  void sl_do_fluorescence(const bool& sl_do_fluorescence_in) {
2074  *transfer_struct_c.sl_do_fluorescence_ = sl_do_fluorescence_in ? FORTRAN_TRUE_INT : 0;
2075  }
2076 
2077 
2078  const bool sl_do_solar_sources() const {
2079  return *transfer_struct_c.sl_do_solar_sources_ != 0;
2080  }
2081 
2082  void sl_do_solar_sources(const bool& sl_do_solar_sources_in) {
2083  *transfer_struct_c.sl_do_solar_sources_ = sl_do_solar_sources_in ? FORTRAN_TRUE_INT : 0;
2084  }
2085 
2086 
2087  const bool sl_do_user_obsgeoms() const {
2088  return *transfer_struct_c.sl_do_user_obsgeoms_ != 0;
2089  }
2090 
2091  void sl_do_user_obsgeoms(const bool& sl_do_user_obsgeoms_in) {
2092  *transfer_struct_c.sl_do_user_obsgeoms_ = sl_do_user_obsgeoms_in ? FORTRAN_TRUE_INT : 0;
2093  }
2094 
2095 
2096  const int& sl_nstreams() const {
2097  return *transfer_struct_c.sl_nstreams_;
2098  }
2099 
2100  void sl_nstreams(const int& sl_nstreams_in) {
2101  *transfer_struct_c.sl_nstreams_ = sl_nstreams_in;
2102  }
2103 
2104 
2105  const int& sl_nbeams() const {
2106  return *transfer_struct_c.sl_nbeams_;
2107  }
2108 
2109  void sl_nbeams(const int& sl_nbeams_in) {
2110  *transfer_struct_c.sl_nbeams_ = sl_nbeams_in;
2111  }
2112 
2113 
2114  const blitz::Array<double, 1>& sl_beam_szas() const {
2115  return sl_beam_szas_;
2116  }
2117 
2118  void sl_beam_szas(const blitz::Array<double, 1>& sl_beam_szas_in) {
2119  sl_beam_szas_ = sl_beam_szas_in;
2120  }
2121 
2122 
2123  const int& sl_n_user_relazms() const {
2124  return *transfer_struct_c.sl_n_user_relazms_;
2125  }
2126 
2127  void sl_n_user_relazms(const int& sl_n_user_relazms_in) {
2128  *transfer_struct_c.sl_n_user_relazms_ = sl_n_user_relazms_in;
2129  }
2130 
2131 
2132  const blitz::Array<double, 1>& sl_user_relazms() const {
2133  return sl_user_relazms_;
2134  }
2135 
2136  void sl_user_relazms(const blitz::Array<double, 1>& sl_user_relazms_in) {
2137  sl_user_relazms_ = sl_user_relazms_in;
2138  }
2139 
2140 
2141  const bool sl_do_user_streams() const {
2142  return *transfer_struct_c.sl_do_user_streams_ != 0;
2143  }
2144 
2145  void sl_do_user_streams(const bool& sl_do_user_streams_in) {
2146  *transfer_struct_c.sl_do_user_streams_ = sl_do_user_streams_in ? FORTRAN_TRUE_INT : 0;
2147  }
2148 
2149 
2150  const int& sl_n_user_streams() const {
2151  return *transfer_struct_c.sl_n_user_streams_;
2152  }
2153 
2154  void sl_n_user_streams(const int& sl_n_user_streams_in) {
2155  *transfer_struct_c.sl_n_user_streams_ = sl_n_user_streams_in;
2156  }
2157 
2158 
2159  const blitz::Array<double, 1>& sl_user_angles_input() const {
2160  return sl_user_angles_input_;
2161  }
2162 
2163  void sl_user_angles_input(const blitz::Array<double, 1>& sl_user_angles_input_in) {
2164  sl_user_angles_input_ = sl_user_angles_input_in;
2165  }
2166 
2167 
2168  const int& sl_n_user_obsgeoms() const {
2169  return *transfer_struct_c.sl_n_user_obsgeoms_;
2170  }
2171 
2172  void sl_n_user_obsgeoms(const int& sl_n_user_obsgeoms_in) {
2173  *transfer_struct_c.sl_n_user_obsgeoms_ = sl_n_user_obsgeoms_in;
2174  }
2175 
2176 
2177  const blitz::Array<double, 2>& sl_user_obsgeoms() const {
2178  return sl_user_obsgeoms_;
2179  }
2180 
2181  void sl_user_obsgeoms(const blitz::Array<double, 2>& sl_user_obsgeoms_in) {
2182  sl_user_obsgeoms_ = sl_user_obsgeoms_in;
2183  }
2184 
2185 
2186  const double& sl_salinity() const {
2187  return *transfer_struct_c.sl_salinity_;
2188  }
2189 
2190  void sl_salinity(const double& sl_salinity_in) {
2191  *transfer_struct_c.sl_salinity_ = sl_salinity_in;
2192  }
2193 
2194 
2195  const double& sl_chlorconc() const {
2196  return *transfer_struct_c.sl_chlorconc_;
2197  }
2198 
2199  void sl_chlorconc(const double& sl_chlorconc_in) {
2200  *transfer_struct_c.sl_chlorconc_ = sl_chlorconc_in;
2201  }
2202 
2203 
2204  const double& sl_wavelength() const {
2205  return *transfer_struct_c.sl_wavelength_;
2206  }
2207 
2208  void sl_wavelength(const double& sl_wavelength_in) {
2209  *transfer_struct_c.sl_wavelength_ = sl_wavelength_in;
2210  }
2211 
2212 
2213  const double& sl_windspeed() const {
2214  return *transfer_struct_c.sl_windspeed_;
2215  }
2216 
2217  void sl_windspeed(const double& sl_windspeed_in) {
2218  *transfer_struct_c.sl_windspeed_ = sl_windspeed_in;
2219  }
2220 
2221 
2222  const blitz::Array<double, 1>& sl_winddir() const {
2223  return sl_winddir_;
2224  }
2225 
2226  void sl_winddir(const blitz::Array<double, 1>& sl_winddir_in) {
2227  sl_winddir_ = sl_winddir_in;
2228  }
2229 
2230 
2231  const bool sl_do_glintshadow() const {
2232  return *transfer_struct_c.sl_do_glintshadow_ != 0;
2233  }
2234 
2235  void sl_do_glintshadow(const bool& sl_do_glintshadow_in) {
2236  *transfer_struct_c.sl_do_glintshadow_ = sl_do_glintshadow_in ? FORTRAN_TRUE_INT : 0;
2237  }
2238 
2239 
2240  const bool sl_do_foamoption() const {
2241  return *transfer_struct_c.sl_do_foamoption_ != 0;
2242  }
2243 
2244  void sl_do_foamoption(const bool& sl_do_foamoption_in) {
2245  *transfer_struct_c.sl_do_foamoption_ = sl_do_foamoption_in ? FORTRAN_TRUE_INT : 0;
2246  }
2247 
2248 
2249  const bool sl_do_facetisotropy() const {
2250  return *transfer_struct_c.sl_do_facetisotropy_ != 0;
2251  }
2252 
2253  void sl_do_facetisotropy(const bool& sl_do_facetisotropy_in) {
2254  *transfer_struct_c.sl_do_facetisotropy_ = sl_do_facetisotropy_in ? FORTRAN_TRUE_INT : 0;
2255  }
2256 
2257 
2258  const double& sl_fl_wavelength() const {
2259  return *transfer_struct_c.sl_fl_wavelength_;
2260  }
2261 
2262  void sl_fl_wavelength(const double& sl_fl_wavelength_in) {
2263  *transfer_struct_c.sl_fl_wavelength_ = sl_fl_wavelength_in;
2264  }
2265 
2266 
2267  const double& sl_fl_latitude() const {
2268  return *transfer_struct_c.sl_fl_latitude_;
2269  }
2270 
2271  void sl_fl_latitude(const double& sl_fl_latitude_in) {
2272  *transfer_struct_c.sl_fl_latitude_ = sl_fl_latitude_in;
2273  }
2274 
2275 
2276  const double& sl_fl_longitude() const {
2277  return *transfer_struct_c.sl_fl_longitude_;
2278  }
2279 
2280  void sl_fl_longitude(const double& sl_fl_longitude_in) {
2281  *transfer_struct_c.sl_fl_longitude_ = sl_fl_longitude_in;
2282  }
2283 
2284 
2285  const blitz::Array<int, 1>& sl_fl_epoch() const {
2286  return sl_fl_epoch_;
2287  }
2288 
2289  void sl_fl_epoch(const blitz::Array<int, 1>& sl_fl_epoch_in) {
2290  sl_fl_epoch_ = sl_fl_epoch_in;
2291  }
2292 
2293 
2294  const double& sl_fl_amplitude755() const {
2295  return *transfer_struct_c.sl_fl_amplitude755_;
2296  }
2297 
2298  void sl_fl_amplitude755(const double& sl_fl_amplitude755_in) {
2299  *transfer_struct_c.sl_fl_amplitude755_ = sl_fl_amplitude755_in;
2300  }
2301 
2302 
2303  const bool sl_fl_do_datagaussian() const {
2304  return *transfer_struct_c.sl_fl_do_datagaussian_ != 0;
2305  }
2306 
2307  void sl_fl_do_datagaussian(const bool& sl_fl_do_datagaussian_in) {
2308  *transfer_struct_c.sl_fl_do_datagaussian_ = sl_fl_do_datagaussian_in ? FORTRAN_TRUE_INT : 0;
2309  }
2310 
2311 
2312  const blitz::Array<double, 2>& sl_fl_inputgaussians() const {
2313  return sl_fl_inputgaussians_;
2314  }
2315 
2316  void sl_fl_inputgaussians(const blitz::Array<double, 2>& sl_fl_inputgaussians_in) {
2317  sl_fl_inputgaussians_ = sl_fl_inputgaussians_in;
2318  }
2319 
2320 
2321 
2322 
2323 
2324  virtual void print(std::ostream &output_stream) const {
2325  output_stream << "Sleave_Sup_Inputs:" << std::endl
2326  << " sl_do_sleaving: " << sl_do_sleaving() << std::endl
2327  << " sl_do_isotropic: " << sl_do_isotropic() << std::endl
2328  << " sl_do_exact: " << sl_do_exact() << std::endl
2329  << " sl_do_exactonly: " << sl_do_exactonly() << std::endl
2330  << " sl_do_fluorescence: " << sl_do_fluorescence() << std::endl
2331  << " sl_do_solar_sources: " << sl_do_solar_sources() << std::endl
2332  << " sl_do_user_obsgeoms: " << sl_do_user_obsgeoms() << std::endl
2333  << " sl_nstreams: " << sl_nstreams() << std::endl
2334  << " sl_nbeams: " << sl_nbeams() << std::endl
2335  << " sl_beam_szas: " << std::endl << sl_beam_szas() << std::endl
2336  << " sl_n_user_relazms: " << sl_n_user_relazms() << std::endl
2337  << " sl_user_relazms: " << std::endl << sl_user_relazms() << std::endl
2338  << " sl_do_user_streams: " << sl_do_user_streams() << std::endl
2339  << " sl_n_user_streams: " << sl_n_user_streams() << std::endl
2340  << " sl_user_angles_input: " << std::endl << sl_user_angles_input() << std::endl
2341  << " sl_n_user_obsgeoms: " << sl_n_user_obsgeoms() << std::endl
2342  << " sl_user_obsgeoms: " << std::endl << sl_user_obsgeoms() << std::endl
2343  << " sl_salinity: " << sl_salinity() << std::endl
2344  << " sl_chlorconc: " << sl_chlorconc() << std::endl
2345  << " sl_wavelength: " << sl_wavelength() << std::endl
2346  << " sl_windspeed: " << sl_windspeed() << std::endl
2347  << " sl_winddir: " << std::endl << sl_winddir() << std::endl
2348  << " sl_do_glintshadow: " << sl_do_glintshadow() << std::endl
2349  << " sl_do_foamoption: " << sl_do_foamoption() << std::endl
2350  << " sl_do_facetisotropy: " << sl_do_facetisotropy() << std::endl
2351  << " sl_fl_wavelength: " << sl_fl_wavelength() << std::endl
2352  << " sl_fl_latitude: " << sl_fl_latitude() << std::endl
2353  << " sl_fl_longitude: " << sl_fl_longitude() << std::endl
2354  << " sl_fl_epoch: " << std::endl << sl_fl_epoch() << std::endl
2355  << " sl_fl_amplitude755: " << sl_fl_amplitude755() << std::endl
2356  << "sl_fl_do_datagaussian: " << sl_fl_do_datagaussian() << std::endl
2357  << " sl_fl_inputgaussians: " << std::endl << sl_fl_inputgaussians() << std::endl;
2358 
2359  }
2360 
2362  BYTE_SIZE_ERROR_CHECK("sl_do_sleaving_",sizeof(*transfer_struct_c.sl_do_sleaving_),transfer_struct_c.sl_do_sleaving__f_byte_size);
2363  BYTE_SIZE_ERROR_CHECK("sl_do_isotropic_",sizeof(*transfer_struct_c.sl_do_isotropic_),transfer_struct_c.sl_do_isotropic__f_byte_size);
2364  BYTE_SIZE_ERROR_CHECK("sl_do_exact_",sizeof(*transfer_struct_c.sl_do_exact_),transfer_struct_c.sl_do_exact__f_byte_size);
2365  BYTE_SIZE_ERROR_CHECK("sl_do_exactonly_",sizeof(*transfer_struct_c.sl_do_exactonly_),transfer_struct_c.sl_do_exactonly__f_byte_size);
2366  BYTE_SIZE_ERROR_CHECK("sl_do_fluorescence_",sizeof(*transfer_struct_c.sl_do_fluorescence_),transfer_struct_c.sl_do_fluorescence__f_byte_size);
2367  BYTE_SIZE_ERROR_CHECK("sl_do_solar_sources_",sizeof(*transfer_struct_c.sl_do_solar_sources_),transfer_struct_c.sl_do_solar_sources__f_byte_size);
2368  BYTE_SIZE_ERROR_CHECK("sl_do_user_obsgeoms_",sizeof(*transfer_struct_c.sl_do_user_obsgeoms_),transfer_struct_c.sl_do_user_obsgeoms__f_byte_size);
2369  BYTE_SIZE_ERROR_CHECK("sl_nstreams_",sizeof(*transfer_struct_c.sl_nstreams_),transfer_struct_c.sl_nstreams__f_byte_size);
2370  BYTE_SIZE_ERROR_CHECK("sl_nbeams_",sizeof(*transfer_struct_c.sl_nbeams_),transfer_struct_c.sl_nbeams__f_byte_size);
2371  BYTE_SIZE_ERROR_CHECK("sl_beam_szas_",sizeof(*transfer_struct_c.sl_beam_szas_),transfer_struct_c.sl_beam_szas__f_byte_size);
2372  BYTE_SIZE_ERROR_CHECK("sl_n_user_relazms_",sizeof(*transfer_struct_c.sl_n_user_relazms_),transfer_struct_c.sl_n_user_relazms__f_byte_size);
2373  BYTE_SIZE_ERROR_CHECK("sl_user_relazms_",sizeof(*transfer_struct_c.sl_user_relazms_),transfer_struct_c.sl_user_relazms__f_byte_size);
2374  BYTE_SIZE_ERROR_CHECK("sl_do_user_streams_",sizeof(*transfer_struct_c.sl_do_user_streams_),transfer_struct_c.sl_do_user_streams__f_byte_size);
2375  BYTE_SIZE_ERROR_CHECK("sl_n_user_streams_",sizeof(*transfer_struct_c.sl_n_user_streams_),transfer_struct_c.sl_n_user_streams__f_byte_size);
2376  BYTE_SIZE_ERROR_CHECK("sl_user_angles_input_",sizeof(*transfer_struct_c.sl_user_angles_input_),transfer_struct_c.sl_user_angles_input__f_byte_size);
2377  BYTE_SIZE_ERROR_CHECK("sl_n_user_obsgeoms_",sizeof(*transfer_struct_c.sl_n_user_obsgeoms_),transfer_struct_c.sl_n_user_obsgeoms__f_byte_size);
2378  BYTE_SIZE_ERROR_CHECK("sl_user_obsgeoms_",sizeof(*transfer_struct_c.sl_user_obsgeoms_),transfer_struct_c.sl_user_obsgeoms__f_byte_size);
2379  BYTE_SIZE_ERROR_CHECK("sl_salinity_",sizeof(*transfer_struct_c.sl_salinity_),transfer_struct_c.sl_salinity__f_byte_size);
2380  BYTE_SIZE_ERROR_CHECK("sl_chlorconc_",sizeof(*transfer_struct_c.sl_chlorconc_),transfer_struct_c.sl_chlorconc__f_byte_size);
2381  BYTE_SIZE_ERROR_CHECK("sl_wavelength_",sizeof(*transfer_struct_c.sl_wavelength_),transfer_struct_c.sl_wavelength__f_byte_size);
2382  BYTE_SIZE_ERROR_CHECK("sl_windspeed_",sizeof(*transfer_struct_c.sl_windspeed_),transfer_struct_c.sl_windspeed__f_byte_size);
2383  BYTE_SIZE_ERROR_CHECK("sl_winddir_",sizeof(*transfer_struct_c.sl_winddir_),transfer_struct_c.sl_winddir__f_byte_size);
2384  BYTE_SIZE_ERROR_CHECK("sl_do_glintshadow_",sizeof(*transfer_struct_c.sl_do_glintshadow_),transfer_struct_c.sl_do_glintshadow__f_byte_size);
2385  BYTE_SIZE_ERROR_CHECK("sl_do_foamoption_",sizeof(*transfer_struct_c.sl_do_foamoption_),transfer_struct_c.sl_do_foamoption__f_byte_size);
2386  BYTE_SIZE_ERROR_CHECK("sl_do_facetisotropy_",sizeof(*transfer_struct_c.sl_do_facetisotropy_),transfer_struct_c.sl_do_facetisotropy__f_byte_size);
2387  BYTE_SIZE_ERROR_CHECK("sl_fl_wavelength_",sizeof(*transfer_struct_c.sl_fl_wavelength_),transfer_struct_c.sl_fl_wavelength__f_byte_size);
2388  BYTE_SIZE_ERROR_CHECK("sl_fl_latitude_",sizeof(*transfer_struct_c.sl_fl_latitude_),transfer_struct_c.sl_fl_latitude__f_byte_size);
2389  BYTE_SIZE_ERROR_CHECK("sl_fl_longitude_",sizeof(*transfer_struct_c.sl_fl_longitude_),transfer_struct_c.sl_fl_longitude__f_byte_size);
2390  BYTE_SIZE_ERROR_CHECK("sl_fl_epoch_",sizeof(*transfer_struct_c.sl_fl_epoch_),transfer_struct_c.sl_fl_epoch__f_byte_size);
2391  BYTE_SIZE_ERROR_CHECK("sl_fl_amplitude755_",sizeof(*transfer_struct_c.sl_fl_amplitude755_),transfer_struct_c.sl_fl_amplitude755__f_byte_size);
2392  BYTE_SIZE_ERROR_CHECK("sl_fl_do_datagaussian_",sizeof(*transfer_struct_c.sl_fl_do_datagaussian_),transfer_struct_c.sl_fl_do_datagaussian__f_byte_size);
2393  BYTE_SIZE_ERROR_CHECK("sl_fl_inputgaussians_",sizeof(*transfer_struct_c.sl_fl_inputgaussians_),transfer_struct_c.sl_fl_inputgaussians__f_byte_size);
2394 
2395  }
2396 
2397 private:
2398  void link_blitz_arrays() {
2399  sl_beam_szas_.reference(blitz::Array<double, 1>(transfer_struct_c.sl_beam_szas_,
2400  blitz::shape(transfer_struct_c.sl_beam_szas__f_shapes[0]),
2401  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
2402  sl_user_relazms_.reference(blitz::Array<double, 1>(transfer_struct_c.sl_user_relazms_,
2403  blitz::shape(transfer_struct_c.sl_user_relazms__f_shapes[0]),
2404  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
2405  sl_user_angles_input_.reference(blitz::Array<double, 1>(transfer_struct_c.sl_user_angles_input_,
2406  blitz::shape(transfer_struct_c.sl_user_angles_input__f_shapes[0]),
2407  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
2408  sl_user_obsgeoms_.reference(blitz::Array<double, 2>(transfer_struct_c.sl_user_obsgeoms_,
2409  blitz::shape(transfer_struct_c.sl_user_obsgeoms__f_shapes[0],
2410  transfer_struct_c.sl_user_obsgeoms__f_shapes[1]),
2411  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
2412  sl_winddir_.reference(blitz::Array<double, 1>(transfer_struct_c.sl_winddir_,
2413  blitz::shape(transfer_struct_c.sl_winddir__f_shapes[0]),
2414  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
2415  sl_fl_epoch_.reference(blitz::Array<int, 1>(transfer_struct_c.sl_fl_epoch_,
2416  blitz::shape(transfer_struct_c.sl_fl_epoch__f_shapes[0]),
2417  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
2418  sl_fl_inputgaussians_.reference(blitz::Array<double, 2>(transfer_struct_c.sl_fl_inputgaussians_,
2419  blitz::shape(transfer_struct_c.sl_fl_inputgaussians__f_shapes[0],
2420  transfer_struct_c.sl_fl_inputgaussians__f_shapes[1]),
2421  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
2422 
2423  }
2424 
2425  void link_nested_types() {
2426 
2427  }
2428 
2429  struct sleave_sup_inputs transfer_struct_c;
2430 
2431  blitz::Array<double, 1> sl_beam_szas_;
2432  blitz::Array<double, 1> sl_user_relazms_;
2433  blitz::Array<double, 1> sl_user_angles_input_;
2434  blitz::Array<double, 2> sl_user_obsgeoms_;
2435  blitz::Array<double, 1> sl_winddir_;
2436  blitz::Array<int, 1> sl_fl_epoch_;
2437  blitz::Array<double, 2> sl_fl_inputgaussians_;
2438 
2439 };
2440 
2441 // Links to type: "lidort_fixed_lincontrol" from module: "lidort_lininputs_def" in file: "lidort_lin_inputs_def.f90"
2442 extern "C" {
2443  void lidort_fixed_lincontrol_c_alloc_init(struct lidort_fixed_lincontrol *transfer_struct_c, void **fortran_type_c);
2444  void lidort_fixed_lincontrol_c_init_only(struct lidort_fixed_lincontrol *transfer_struct_c, void **fortran_type_c);
2445  void lidort_fixed_lincontrol_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
2446  void lidort_fixed_lincontrol_c_destroy(void **fortran_type_c);
2447 
2448 }
2449 
2453 
2456 
2459 
2462 
2464  int ts_layer_vary_flag__f_shapes[1];
2466 
2468  int ts_layer_vary_number__f_shapes[1];
2470 
2473 
2476 
2479 
2482 
2485 
2486 
2487 };
2488 
2489 // Links to type: "lidort_fixed_lincontrol" from module: "lidort_lininputs_def" in file: "lidort_lin_inputs_def.f90"
2491 public:
2492  // Allocating constructor
2494  lidort_fixed_lincontrol_c_alloc_init(&transfer_struct_c, &fortran_type_c);
2495  link_blitz_arrays();
2496  link_nested_types();
2497  }
2498 
2499  // Linked to other data structure
2500  Lidort_Fixed_Lincontrol(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
2501  lidort_fixed_lincontrol_c_init_only(&transfer_struct_c, &fortran_type_c);
2502  link_blitz_arrays();
2503  link_nested_types();
2504  }
2505 
2506  // Deallocate
2508  if (owns_pointer)
2509  lidort_fixed_lincontrol_c_destroy(&fortran_type_c);
2510  }
2511 
2512  const bool ts_do_column_linearization() const {
2513  return *transfer_struct_c.ts_do_column_linearization_ != 0;
2514  }
2515 
2516  void ts_do_column_linearization(const bool& ts_do_column_linearization_in) {
2517  *transfer_struct_c.ts_do_column_linearization_ = ts_do_column_linearization_in ? FORTRAN_TRUE_INT : 0;
2518  }
2519 
2520 
2521  const bool ts_do_profile_linearization() const {
2522  return *transfer_struct_c.ts_do_profile_linearization_ != 0;
2523  }
2524 
2525  void ts_do_profile_linearization(const bool& ts_do_profile_linearization_in) {
2526  *transfer_struct_c.ts_do_profile_linearization_ = ts_do_profile_linearization_in ? FORTRAN_TRUE_INT : 0;
2527  }
2528 
2529 
2530  const bool ts_do_surface_linearization() const {
2531  return *transfer_struct_c.ts_do_surface_linearization_ != 0;
2532  }
2533 
2534  void ts_do_surface_linearization(const bool& ts_do_surface_linearization_in) {
2535  *transfer_struct_c.ts_do_surface_linearization_ = ts_do_surface_linearization_in ? FORTRAN_TRUE_INT : 0;
2536  }
2537 
2538 
2539  const bool ts_do_sleave_wfs() const {
2540  return *transfer_struct_c.ts_do_sleave_wfs_ != 0;
2541  }
2542 
2543  void ts_do_sleave_wfs(const bool& ts_do_sleave_wfs_in) {
2544  *transfer_struct_c.ts_do_sleave_wfs_ = ts_do_sleave_wfs_in ? FORTRAN_TRUE_INT : 0;
2545  }
2546 
2547 
2548  const blitz::Array<bool, 1> ts_layer_vary_flag() const {
2549  blitz::Array<bool,1> as_bool(ts_layer_vary_flag_.shape());
2550  as_bool = blitz::where(ts_layer_vary_flag_ != 0, true, false);
2551  return as_bool;
2552  }
2553 
2554  void ts_layer_vary_flag(const blitz::Array<bool, 1>& ts_layer_vary_flag_in) {
2555  blitz::Array<int,1> as_int(ts_layer_vary_flag_.shape());
2556  as_int = blitz::where(ts_layer_vary_flag_in == true, FORTRAN_TRUE_INT, 0);
2557  ts_layer_vary_flag_ = as_int;
2558  }
2559 
2560 
2561  const blitz::Array<int, 1>& ts_layer_vary_number() const {
2562  return ts_layer_vary_number_;
2563  }
2564 
2565  void ts_layer_vary_number(const blitz::Array<int, 1>& ts_layer_vary_number_in) {
2566  ts_layer_vary_number_ = ts_layer_vary_number_in;
2567  }
2568 
2569 
2570  const int& ts_n_totalcolumn_wfs() const {
2571  return *transfer_struct_c.ts_n_totalcolumn_wfs_;
2572  }
2573 
2574  void ts_n_totalcolumn_wfs(const int& ts_n_totalcolumn_wfs_in) {
2575  *transfer_struct_c.ts_n_totalcolumn_wfs_ = ts_n_totalcolumn_wfs_in;
2576  }
2577 
2578 
2579  const int& ts_n_surface_wfs() const {
2580  return *transfer_struct_c.ts_n_surface_wfs_;
2581  }
2582 
2583  void ts_n_surface_wfs(const int& ts_n_surface_wfs_in) {
2584  *transfer_struct_c.ts_n_surface_wfs_ = ts_n_surface_wfs_in;
2585  }
2586 
2587 
2588  const int& ts_n_sleave_wfs() const {
2589  return *transfer_struct_c.ts_n_sleave_wfs_;
2590  }
2591 
2592  void ts_n_sleave_wfs(const int& ts_n_sleave_wfs_in) {
2593  *transfer_struct_c.ts_n_sleave_wfs_ = ts_n_sleave_wfs_in;
2594  }
2595 
2596 
2597  const bool ts_do_atmos_lbbf() const {
2598  return *transfer_struct_c.ts_do_atmos_lbbf_ != 0;
2599  }
2600 
2601  void ts_do_atmos_lbbf(const bool& ts_do_atmos_lbbf_in) {
2602  *transfer_struct_c.ts_do_atmos_lbbf_ = ts_do_atmos_lbbf_in ? FORTRAN_TRUE_INT : 0;
2603  }
2604 
2605 
2606  const bool ts_do_surface_lbbf() const {
2607  return *transfer_struct_c.ts_do_surface_lbbf_ != 0;
2608  }
2609 
2610  void ts_do_surface_lbbf(const bool& ts_do_surface_lbbf_in) {
2611  *transfer_struct_c.ts_do_surface_lbbf_ = ts_do_surface_lbbf_in ? FORTRAN_TRUE_INT : 0;
2612  }
2613 
2614 
2615 
2616 
2617 
2618  virtual void print(std::ostream &output_stream) const {
2619  output_stream << "Lidort_Fixed_Lincontrol:" << std::endl
2620  << " ts_do_column_linearization: " << ts_do_column_linearization() << std::endl
2621  << "ts_do_profile_linearization: " << ts_do_profile_linearization() << std::endl
2622  << "ts_do_surface_linearization: " << ts_do_surface_linearization() << std::endl
2623  << " ts_do_sleave_wfs: " << ts_do_sleave_wfs() << std::endl
2624  << " ts_layer_vary_flag: " << std::endl << ts_layer_vary_flag() << std::endl
2625  << " ts_layer_vary_number: " << std::endl << ts_layer_vary_number() << std::endl
2626  << " ts_n_totalcolumn_wfs: " << ts_n_totalcolumn_wfs() << std::endl
2627  << " ts_n_surface_wfs: " << ts_n_surface_wfs() << std::endl
2628  << " ts_n_sleave_wfs: " << ts_n_sleave_wfs() << std::endl
2629  << " ts_do_atmos_lbbf: " << ts_do_atmos_lbbf() << std::endl
2630  << " ts_do_surface_lbbf: " << ts_do_surface_lbbf() << std::endl;
2631 
2632  }
2633 
2635  BYTE_SIZE_ERROR_CHECK("ts_do_column_linearization_",sizeof(*transfer_struct_c.ts_do_column_linearization_),transfer_struct_c.ts_do_column_linearization__f_byte_size);
2636  BYTE_SIZE_ERROR_CHECK("ts_do_profile_linearization_",sizeof(*transfer_struct_c.ts_do_profile_linearization_),transfer_struct_c.ts_do_profile_linearization__f_byte_size);
2637  BYTE_SIZE_ERROR_CHECK("ts_do_surface_linearization_",sizeof(*transfer_struct_c.ts_do_surface_linearization_),transfer_struct_c.ts_do_surface_linearization__f_byte_size);
2638  BYTE_SIZE_ERROR_CHECK("ts_do_sleave_wfs_",sizeof(*transfer_struct_c.ts_do_sleave_wfs_),transfer_struct_c.ts_do_sleave_wfs__f_byte_size);
2639  BYTE_SIZE_ERROR_CHECK("ts_layer_vary_flag_",sizeof(*transfer_struct_c.ts_layer_vary_flag_),transfer_struct_c.ts_layer_vary_flag__f_byte_size);
2640  BYTE_SIZE_ERROR_CHECK("ts_layer_vary_number_",sizeof(*transfer_struct_c.ts_layer_vary_number_),transfer_struct_c.ts_layer_vary_number__f_byte_size);
2641  BYTE_SIZE_ERROR_CHECK("ts_n_totalcolumn_wfs_",sizeof(*transfer_struct_c.ts_n_totalcolumn_wfs_),transfer_struct_c.ts_n_totalcolumn_wfs__f_byte_size);
2642  BYTE_SIZE_ERROR_CHECK("ts_n_surface_wfs_",sizeof(*transfer_struct_c.ts_n_surface_wfs_),transfer_struct_c.ts_n_surface_wfs__f_byte_size);
2643  BYTE_SIZE_ERROR_CHECK("ts_n_sleave_wfs_",sizeof(*transfer_struct_c.ts_n_sleave_wfs_),transfer_struct_c.ts_n_sleave_wfs__f_byte_size);
2644  BYTE_SIZE_ERROR_CHECK("ts_do_atmos_lbbf_",sizeof(*transfer_struct_c.ts_do_atmos_lbbf_),transfer_struct_c.ts_do_atmos_lbbf__f_byte_size);
2645  BYTE_SIZE_ERROR_CHECK("ts_do_surface_lbbf_",sizeof(*transfer_struct_c.ts_do_surface_lbbf_),transfer_struct_c.ts_do_surface_lbbf__f_byte_size);
2646 
2647  }
2648 
2649 private:
2650  void link_blitz_arrays() {
2651  ts_layer_vary_flag_.reference(blitz::Array<int, 1>(transfer_struct_c.ts_layer_vary_flag_,
2652  blitz::shape(transfer_struct_c.ts_layer_vary_flag__f_shapes[0]),
2653  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
2654  ts_layer_vary_number_.reference(blitz::Array<int, 1>(transfer_struct_c.ts_layer_vary_number_,
2655  blitz::shape(transfer_struct_c.ts_layer_vary_number__f_shapes[0]),
2656  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
2657 
2658  }
2659 
2660  void link_nested_types() {
2661 
2662  }
2663 
2664  struct lidort_fixed_lincontrol transfer_struct_c;
2665 
2666  blitz::Array<int, 1> ts_layer_vary_flag_;
2667  blitz::Array<int, 1> ts_layer_vary_number_;
2668 
2669 };
2670 
2671 // Links to type: "lidort_fixed_linoptical" from module: "lidort_lininputs_def" in file: "lidort_lin_inputs_def.f90"
2672 extern "C" {
2673  void lidort_fixed_linoptical_c_alloc_init(struct lidort_fixed_linoptical *transfer_struct_c, void **fortran_type_c);
2674  void lidort_fixed_linoptical_c_init_only(struct lidort_fixed_linoptical *transfer_struct_c, void **fortran_type_c);
2675  void lidort_fixed_linoptical_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
2676  void lidort_fixed_linoptical_c_destroy(void **fortran_type_c);
2677 
2678 }
2679 
2682  int ts_l_deltau_vert_input__f_shapes[2];
2684 
2686  int ts_l_omega_total_input__f_shapes[2];
2688 
2690  int ts_l_phasmoms_total_input__f_shapes[3];
2692 
2693 
2694 };
2695 
2696 // Links to type: "lidort_fixed_linoptical" from module: "lidort_lininputs_def" in file: "lidort_lin_inputs_def.f90"
2698 public:
2699  // Allocating constructor
2701  lidort_fixed_linoptical_c_alloc_init(&transfer_struct_c, &fortran_type_c);
2702  link_blitz_arrays();
2703  link_nested_types();
2704  }
2705 
2706  // Linked to other data structure
2707  Lidort_Fixed_Linoptical(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
2708  lidort_fixed_linoptical_c_init_only(&transfer_struct_c, &fortran_type_c);
2709  link_blitz_arrays();
2710  link_nested_types();
2711  }
2712 
2713  // Deallocate
2715  if (owns_pointer)
2716  lidort_fixed_linoptical_c_destroy(&fortran_type_c);
2717  }
2718 
2719  const blitz::Array<double, 2>& ts_l_deltau_vert_input() const {
2720  return ts_l_deltau_vert_input_;
2721  }
2722 
2723  void ts_l_deltau_vert_input(const blitz::Array<double, 2>& ts_l_deltau_vert_input_in) {
2724  ts_l_deltau_vert_input_ = ts_l_deltau_vert_input_in;
2725  }
2726 
2727 
2728  const blitz::Array<double, 2>& ts_l_omega_total_input() const {
2729  return ts_l_omega_total_input_;
2730  }
2731 
2732  void ts_l_omega_total_input(const blitz::Array<double, 2>& ts_l_omega_total_input_in) {
2733  ts_l_omega_total_input_ = ts_l_omega_total_input_in;
2734  }
2735 
2736 
2737  const blitz::Array<double, 3>& ts_l_phasmoms_total_input() const {
2738  return ts_l_phasmoms_total_input_;
2739  }
2740 
2741  void ts_l_phasmoms_total_input(const blitz::Array<double, 3>& ts_l_phasmoms_total_input_in) {
2742  ts_l_phasmoms_total_input_ = ts_l_phasmoms_total_input_in;
2743  }
2744 
2745 
2746 
2747 
2748 
2749  virtual void print(std::ostream &output_stream) const {
2750  output_stream << "Lidort_Fixed_Linoptical:" << std::endl
2751  << " ts_l_deltau_vert_input: " << std::endl << ts_l_deltau_vert_input() << std::endl
2752  << " ts_l_omega_total_input: " << std::endl << ts_l_omega_total_input() << std::endl
2753  << "ts_l_phasmoms_total_input: " << std::endl << ts_l_phasmoms_total_input() << std::endl;
2754 
2755  }
2756 
2758  BYTE_SIZE_ERROR_CHECK("ts_l_deltau_vert_input_",sizeof(*transfer_struct_c.ts_l_deltau_vert_input_),transfer_struct_c.ts_l_deltau_vert_input__f_byte_size);
2759  BYTE_SIZE_ERROR_CHECK("ts_l_omega_total_input_",sizeof(*transfer_struct_c.ts_l_omega_total_input_),transfer_struct_c.ts_l_omega_total_input__f_byte_size);
2760  BYTE_SIZE_ERROR_CHECK("ts_l_phasmoms_total_input_",sizeof(*transfer_struct_c.ts_l_phasmoms_total_input_),transfer_struct_c.ts_l_phasmoms_total_input__f_byte_size);
2761 
2762  }
2763 
2764 private:
2765  void link_blitz_arrays() {
2766  ts_l_deltau_vert_input_.reference(blitz::Array<double, 2>(transfer_struct_c.ts_l_deltau_vert_input_,
2767  blitz::shape(transfer_struct_c.ts_l_deltau_vert_input__f_shapes[0],
2768  transfer_struct_c.ts_l_deltau_vert_input__f_shapes[1]),
2769  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
2770  ts_l_omega_total_input_.reference(blitz::Array<double, 2>(transfer_struct_c.ts_l_omega_total_input_,
2771  blitz::shape(transfer_struct_c.ts_l_omega_total_input__f_shapes[0],
2772  transfer_struct_c.ts_l_omega_total_input__f_shapes[1]),
2773  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
2774  ts_l_phasmoms_total_input_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_l_phasmoms_total_input_,
2775  blitz::shape(transfer_struct_c.ts_l_phasmoms_total_input__f_shapes[0],
2776  transfer_struct_c.ts_l_phasmoms_total_input__f_shapes[1],
2777  transfer_struct_c.ts_l_phasmoms_total_input__f_shapes[2]),
2778  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
2779 
2780  }
2781 
2782  void link_nested_types() {
2783 
2784  }
2785 
2786  struct lidort_fixed_linoptical transfer_struct_c;
2787 
2788  blitz::Array<double, 2> ts_l_deltau_vert_input_;
2789  blitz::Array<double, 2> ts_l_omega_total_input_;
2790  blitz::Array<double, 3> ts_l_phasmoms_total_input_;
2791 
2792 };
2793 
2794 // Links to type: "lidort_fixed_lininputs" from module: "lidort_lininputs_def" in file: "lidort_lin_inputs_def.f90"
2795 extern "C" {
2796  void lidort_fixed_lininputs_c_alloc_init(struct lidort_fixed_lininputs *transfer_struct_c, void **fortran_type_c);
2797  void lidort_fixed_lininputs_c_init_only(struct lidort_fixed_lininputs *transfer_struct_c, void **fortran_type_c);
2798  void lidort_fixed_lininputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
2799  void lidort_fixed_lininputs_c_destroy(void **fortran_type_c);
2800 
2801 }
2802 
2804  void* cont_;
2806 
2807  void* optical_;
2809 
2810 
2811 };
2812 
2813 // Links to type: "lidort_fixed_lininputs" from module: "lidort_lininputs_def" in file: "lidort_lin_inputs_def.f90"
2815 public:
2816  // Allocating constructor
2818  lidort_fixed_lininputs_c_alloc_init(&transfer_struct_c, &fortran_type_c);
2819  link_blitz_arrays();
2820  link_nested_types();
2821  }
2822 
2823  // Linked to other data structure
2824  Lidort_Fixed_Lininputs(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
2825  lidort_fixed_lininputs_c_init_only(&transfer_struct_c, &fortran_type_c);
2826  link_blitz_arrays();
2827  link_nested_types();
2828  }
2829 
2830  // Deallocate
2832  if (owns_pointer)
2833  lidort_fixed_lininputs_c_destroy(&fortran_type_c);
2834  }
2835 
2837  return *cont_;
2838  }
2839 
2841  return *cont_;
2842  }
2843 
2845  void* src_ptr = cont_in.fortran_type_ptr();
2846  void* dst_ptr = cont_->fortran_type_ptr();
2847  lidort_fixed_lincontrol_c_copy(&src_ptr, &dst_ptr);
2848  }
2849 
2850 
2852  return *optical_;
2853  }
2854 
2856  return *optical_;
2857  }
2858 
2859  void optical(Lidort_Fixed_Linoptical& optical_in) {
2860  void* src_ptr = optical_in.fortran_type_ptr();
2861  void* dst_ptr = optical_->fortran_type_ptr();
2862  lidort_fixed_linoptical_c_copy(&src_ptr, &dst_ptr);
2863  }
2864 
2865 
2866 
2867 
2868 
2869  virtual void print(std::ostream &output_stream) const {
2870  output_stream << "Lidort_Fixed_Lininputs:" << std::endl
2871  << " cont: " << cont() << std::endl
2872  << "optical: " << optical() << std::endl;
2873 
2874  }
2875 
2877 
2878  }
2879 
2880 private:
2881  void link_blitz_arrays() {
2882 
2883  }
2884 
2885  void link_nested_types() {
2886  cont_.reset( new Lidort_Fixed_Lincontrol(transfer_struct_c.cont_) );
2887  optical_.reset( new Lidort_Fixed_Linoptical(transfer_struct_c.optical_) );
2888 
2889  }
2890 
2891  struct lidort_fixed_lininputs transfer_struct_c;
2892 
2895 
2896 };
2897 
2898 // Links to type: "lidort_modified_lininputs" from module: "lidort_lininputs_def" in file: "lidort_lin_inputs_def.f90"
2899 extern "C" {
2900  void lidort_modified_lininputs_c_alloc_init(struct lidort_modified_lininputs *transfer_struct_c, void **fortran_type_c);
2901  void lidort_modified_lininputs_c_init_only(struct lidort_modified_lininputs *transfer_struct_c, void **fortran_type_c);
2902  void lidort_modified_lininputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
2903  void lidort_modified_lininputs_c_destroy(void **fortran_type_c);
2904 
2905 }
2906 
2908  int* dummy_;
2910 
2911 
2912 };
2913 
2914 // Links to type: "lidort_modified_lininputs" from module: "lidort_lininputs_def" in file: "lidort_lin_inputs_def.f90"
2916 public:
2917  // Allocating constructor
2919  lidort_modified_lininputs_c_alloc_init(&transfer_struct_c, &fortran_type_c);
2920  link_blitz_arrays();
2921  link_nested_types();
2922  }
2923 
2924  // Linked to other data structure
2925  Lidort_Modified_Lininputs(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
2926  lidort_modified_lininputs_c_init_only(&transfer_struct_c, &fortran_type_c);
2927  link_blitz_arrays();
2928  link_nested_types();
2929  }
2930 
2931  // Deallocate
2933  if (owns_pointer)
2934  lidort_modified_lininputs_c_destroy(&fortran_type_c);
2935  }
2936 
2937  const int& dummy() const {
2938  return *transfer_struct_c.dummy_;
2939  }
2940 
2941  void dummy(const int& dummy_in) {
2942  *transfer_struct_c.dummy_ = dummy_in;
2943  }
2944 
2945 
2946 
2947 
2948 
2949  virtual void print(std::ostream &output_stream) const {
2950  output_stream << "Lidort_Modified_Lininputs:" << std::endl
2951  << "dummy: " << dummy() << std::endl;
2952 
2953  }
2954 
2956  BYTE_SIZE_ERROR_CHECK("dummy_",sizeof(*transfer_struct_c.dummy_),transfer_struct_c.dummy__f_byte_size);
2957 
2958  }
2959 
2960 private:
2961  void link_blitz_arrays() {
2962 
2963  }
2964 
2965  void link_nested_types() {
2966 
2967  }
2968 
2969  struct lidort_modified_lininputs transfer_struct_c;
2970 
2971 
2972 };
2973 
2974 // Links to type: "lidort_linatmos" from module: "lidort_linoutputs_def" in file: "lidort_lin_outputs_def.f90"
2975 extern "C" {
2976  void lidort_linatmos_c_alloc_init(struct lidort_linatmos *transfer_struct_c, void **fortran_type_c);
2977  void lidort_linatmos_c_init_only(struct lidort_linatmos *transfer_struct_c, void **fortran_type_c);
2978  void lidort_linatmos_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
2979  void lidort_linatmos_c_destroy(void **fortran_type_c);
2980 
2981 }
2982 
2984  double* ts_columnwf_;
2985  int ts_columnwf__f_shapes[4];
2987 
2989  int ts_mint_columnwf__f_shapes[4];
2991 
2993  int ts_flux_columnwf__f_shapes[4];
2995 
2996  double* ts_profilewf_;
2997  int ts_profilewf__f_shapes[5];
2999 
3001  int ts_mint_profilewf__f_shapes[5];
3003 
3005  int ts_flux_profilewf__f_shapes[5];
3007 
3009  int ts_abbwfs_jacobians__f_shapes[4];
3011 
3013  int ts_abbwfs_fluxes__f_shapes[4];
3015 
3016 
3017 };
3018 
3019 // Links to type: "lidort_linatmos" from module: "lidort_linoutputs_def" in file: "lidort_lin_outputs_def.f90"
3021 public:
3022  // Allocating constructor
3024  lidort_linatmos_c_alloc_init(&transfer_struct_c, &fortran_type_c);
3025  link_blitz_arrays();
3026  link_nested_types();
3027  }
3028 
3029  // Linked to other data structure
3030  Lidort_Linatmos(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
3031  lidort_linatmos_c_init_only(&transfer_struct_c, &fortran_type_c);
3032  link_blitz_arrays();
3033  link_nested_types();
3034  }
3035 
3036  // Deallocate
3038  if (owns_pointer)
3039  lidort_linatmos_c_destroy(&fortran_type_c);
3040  }
3041 
3042  const blitz::Array<double, 4>& ts_columnwf() const {
3043  return ts_columnwf_;
3044  }
3045 
3046  void ts_columnwf(const blitz::Array<double, 4>& ts_columnwf_in) {
3047  ts_columnwf_ = ts_columnwf_in;
3048  }
3049 
3050 
3051  const blitz::Array<double, 4>& ts_mint_columnwf() const {
3052  return ts_mint_columnwf_;
3053  }
3054 
3055  void ts_mint_columnwf(const blitz::Array<double, 4>& ts_mint_columnwf_in) {
3056  ts_mint_columnwf_ = ts_mint_columnwf_in;
3057  }
3058 
3059 
3060  const blitz::Array<double, 4>& ts_flux_columnwf() const {
3061  return ts_flux_columnwf_;
3062  }
3063 
3064  void ts_flux_columnwf(const blitz::Array<double, 4>& ts_flux_columnwf_in) {
3065  ts_flux_columnwf_ = ts_flux_columnwf_in;
3066  }
3067 
3068 
3069  const blitz::Array<double, 5>& ts_profilewf() const {
3070  return ts_profilewf_;
3071  }
3072 
3073  void ts_profilewf(const blitz::Array<double, 5>& ts_profilewf_in) {
3074  ts_profilewf_ = ts_profilewf_in;
3075  }
3076 
3077 
3078  const blitz::Array<double, 5>& ts_mint_profilewf() const {
3079  return ts_mint_profilewf_;
3080  }
3081 
3082  void ts_mint_profilewf(const blitz::Array<double, 5>& ts_mint_profilewf_in) {
3083  ts_mint_profilewf_ = ts_mint_profilewf_in;
3084  }
3085 
3086 
3087  const blitz::Array<double, 5>& ts_flux_profilewf() const {
3088  return ts_flux_profilewf_;
3089  }
3090 
3091  void ts_flux_profilewf(const blitz::Array<double, 5>& ts_flux_profilewf_in) {
3092  ts_flux_profilewf_ = ts_flux_profilewf_in;
3093  }
3094 
3095 
3096  const blitz::Array<double, 4>& ts_abbwfs_jacobians() const {
3097  return ts_abbwfs_jacobians_;
3098  }
3099 
3100  void ts_abbwfs_jacobians(const blitz::Array<double, 4>& ts_abbwfs_jacobians_in) {
3101  ts_abbwfs_jacobians_ = ts_abbwfs_jacobians_in;
3102  }
3103 
3104 
3105  const blitz::Array<double, 4>& ts_abbwfs_fluxes() const {
3106  return ts_abbwfs_fluxes_;
3107  }
3108 
3109  void ts_abbwfs_fluxes(const blitz::Array<double, 4>& ts_abbwfs_fluxes_in) {
3110  ts_abbwfs_fluxes_ = ts_abbwfs_fluxes_in;
3111  }
3112 
3113 
3114 
3115 
3116 
3117  virtual void print(std::ostream &output_stream) const {
3118  output_stream << "Lidort_Linatmos:" << std::endl
3119  << " ts_columnwf: " << std::endl << ts_columnwf() << std::endl
3120  << " ts_mint_columnwf: " << std::endl << ts_mint_columnwf() << std::endl
3121  << " ts_flux_columnwf: " << std::endl << ts_flux_columnwf() << std::endl
3122  << " ts_profilewf: " << std::endl << ts_profilewf() << std::endl
3123  << " ts_mint_profilewf: " << std::endl << ts_mint_profilewf() << std::endl
3124  << " ts_flux_profilewf: " << std::endl << ts_flux_profilewf() << std::endl
3125  << "ts_abbwfs_jacobians: " << std::endl << ts_abbwfs_jacobians() << std::endl
3126  << " ts_abbwfs_fluxes: " << std::endl << ts_abbwfs_fluxes() << std::endl;
3127 
3128  }
3129 
3131  BYTE_SIZE_ERROR_CHECK("ts_columnwf_",sizeof(*transfer_struct_c.ts_columnwf_),transfer_struct_c.ts_columnwf__f_byte_size);
3132  BYTE_SIZE_ERROR_CHECK("ts_mint_columnwf_",sizeof(*transfer_struct_c.ts_mint_columnwf_),transfer_struct_c.ts_mint_columnwf__f_byte_size);
3133  BYTE_SIZE_ERROR_CHECK("ts_flux_columnwf_",sizeof(*transfer_struct_c.ts_flux_columnwf_),transfer_struct_c.ts_flux_columnwf__f_byte_size);
3134  BYTE_SIZE_ERROR_CHECK("ts_profilewf_",sizeof(*transfer_struct_c.ts_profilewf_),transfer_struct_c.ts_profilewf__f_byte_size);
3135  BYTE_SIZE_ERROR_CHECK("ts_mint_profilewf_",sizeof(*transfer_struct_c.ts_mint_profilewf_),transfer_struct_c.ts_mint_profilewf__f_byte_size);
3136  BYTE_SIZE_ERROR_CHECK("ts_flux_profilewf_",sizeof(*transfer_struct_c.ts_flux_profilewf_),transfer_struct_c.ts_flux_profilewf__f_byte_size);
3137  BYTE_SIZE_ERROR_CHECK("ts_abbwfs_jacobians_",sizeof(*transfer_struct_c.ts_abbwfs_jacobians_),transfer_struct_c.ts_abbwfs_jacobians__f_byte_size);
3138  BYTE_SIZE_ERROR_CHECK("ts_abbwfs_fluxes_",sizeof(*transfer_struct_c.ts_abbwfs_fluxes_),transfer_struct_c.ts_abbwfs_fluxes__f_byte_size);
3139 
3140  }
3141 
3142 private:
3143  void link_blitz_arrays() {
3144  ts_columnwf_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_columnwf_,
3145  blitz::shape(transfer_struct_c.ts_columnwf__f_shapes[0],
3146  transfer_struct_c.ts_columnwf__f_shapes[1],
3147  transfer_struct_c.ts_columnwf__f_shapes[2],
3148  transfer_struct_c.ts_columnwf__f_shapes[3]),
3149  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3150  ts_mint_columnwf_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_mint_columnwf_,
3151  blitz::shape(transfer_struct_c.ts_mint_columnwf__f_shapes[0],
3152  transfer_struct_c.ts_mint_columnwf__f_shapes[1],
3153  transfer_struct_c.ts_mint_columnwf__f_shapes[2],
3154  transfer_struct_c.ts_mint_columnwf__f_shapes[3]),
3155  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3156  ts_flux_columnwf_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_flux_columnwf_,
3157  blitz::shape(transfer_struct_c.ts_flux_columnwf__f_shapes[0],
3158  transfer_struct_c.ts_flux_columnwf__f_shapes[1],
3159  transfer_struct_c.ts_flux_columnwf__f_shapes[2],
3160  transfer_struct_c.ts_flux_columnwf__f_shapes[3]),
3161  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3162  ts_profilewf_.reference(blitz::Array<double, 5>(transfer_struct_c.ts_profilewf_,
3163  blitz::shape(transfer_struct_c.ts_profilewf__f_shapes[0],
3164  transfer_struct_c.ts_profilewf__f_shapes[1],
3165  transfer_struct_c.ts_profilewf__f_shapes[2],
3166  transfer_struct_c.ts_profilewf__f_shapes[3],
3167  transfer_struct_c.ts_profilewf__f_shapes[4]),
3168  blitz::neverDeleteData, blitz::ColumnMajorArray<5>()));
3169  ts_mint_profilewf_.reference(blitz::Array<double, 5>(transfer_struct_c.ts_mint_profilewf_,
3170  blitz::shape(transfer_struct_c.ts_mint_profilewf__f_shapes[0],
3171  transfer_struct_c.ts_mint_profilewf__f_shapes[1],
3172  transfer_struct_c.ts_mint_profilewf__f_shapes[2],
3173  transfer_struct_c.ts_mint_profilewf__f_shapes[3],
3174  transfer_struct_c.ts_mint_profilewf__f_shapes[4]),
3175  blitz::neverDeleteData, blitz::ColumnMajorArray<5>()));
3176  ts_flux_profilewf_.reference(blitz::Array<double, 5>(transfer_struct_c.ts_flux_profilewf_,
3177  blitz::shape(transfer_struct_c.ts_flux_profilewf__f_shapes[0],
3178  transfer_struct_c.ts_flux_profilewf__f_shapes[1],
3179  transfer_struct_c.ts_flux_profilewf__f_shapes[2],
3180  transfer_struct_c.ts_flux_profilewf__f_shapes[3],
3181  transfer_struct_c.ts_flux_profilewf__f_shapes[4]),
3182  blitz::neverDeleteData, blitz::ColumnMajorArray<5>()));
3183  ts_abbwfs_jacobians_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_abbwfs_jacobians_,
3184  blitz::shape(transfer_struct_c.ts_abbwfs_jacobians__f_shapes[0],
3185  transfer_struct_c.ts_abbwfs_jacobians__f_shapes[1],
3186  transfer_struct_c.ts_abbwfs_jacobians__f_shapes[2],
3187  transfer_struct_c.ts_abbwfs_jacobians__f_shapes[3]),
3188  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3189  ts_abbwfs_fluxes_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_abbwfs_fluxes_,
3190  blitz::shape(transfer_struct_c.ts_abbwfs_fluxes__f_shapes[0],
3191  transfer_struct_c.ts_abbwfs_fluxes__f_shapes[1],
3192  transfer_struct_c.ts_abbwfs_fluxes__f_shapes[2],
3193  transfer_struct_c.ts_abbwfs_fluxes__f_shapes[3]),
3194  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3195 
3196  }
3197 
3198  void link_nested_types() {
3199 
3200  }
3201 
3202  struct lidort_linatmos transfer_struct_c;
3203 
3204  blitz::Array<double, 4> ts_columnwf_;
3205  blitz::Array<double, 4> ts_mint_columnwf_;
3206  blitz::Array<double, 4> ts_flux_columnwf_;
3207  blitz::Array<double, 5> ts_profilewf_;
3208  blitz::Array<double, 5> ts_mint_profilewf_;
3209  blitz::Array<double, 5> ts_flux_profilewf_;
3210  blitz::Array<double, 4> ts_abbwfs_jacobians_;
3211  blitz::Array<double, 4> ts_abbwfs_fluxes_;
3212 
3213 };
3214 
3215 // Links to type: "lidort_linsurf" from module: "lidort_linoutputs_def" in file: "lidort_lin_outputs_def.f90"
3216 extern "C" {
3217  void lidort_linsurf_c_alloc_init(struct lidort_linsurf *transfer_struct_c, void **fortran_type_c);
3218  void lidort_linsurf_c_init_only(struct lidort_linsurf *transfer_struct_c, void **fortran_type_c);
3219  void lidort_linsurf_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
3220  void lidort_linsurf_c_destroy(void **fortran_type_c);
3221 
3222 }
3223 
3225  double* ts_surfacewf_;
3226  int ts_surfacewf__f_shapes[4];
3228 
3230  int ts_mint_surfacewf__f_shapes[4];
3232 
3234  int ts_flux_surfacewf__f_shapes[4];
3236 
3238  int ts_sbbwfs_jacobians__f_shapes[3];
3240 
3242  int ts_sbbwfs_fluxes__f_shapes[3];
3244 
3245 
3246 };
3247 
3248 // Links to type: "lidort_linsurf" from module: "lidort_linoutputs_def" in file: "lidort_lin_outputs_def.f90"
3250 public:
3251  // Allocating constructor
3253  lidort_linsurf_c_alloc_init(&transfer_struct_c, &fortran_type_c);
3254  link_blitz_arrays();
3255  link_nested_types();
3256  }
3257 
3258  // Linked to other data structure
3259  Lidort_Linsurf(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
3260  lidort_linsurf_c_init_only(&transfer_struct_c, &fortran_type_c);
3261  link_blitz_arrays();
3262  link_nested_types();
3263  }
3264 
3265  // Deallocate
3267  if (owns_pointer)
3268  lidort_linsurf_c_destroy(&fortran_type_c);
3269  }
3270 
3271  const blitz::Array<double, 4>& ts_surfacewf() const {
3272  return ts_surfacewf_;
3273  }
3274 
3275  void ts_surfacewf(const blitz::Array<double, 4>& ts_surfacewf_in) {
3276  ts_surfacewf_ = ts_surfacewf_in;
3277  }
3278 
3279 
3280  const blitz::Array<double, 4>& ts_mint_surfacewf() const {
3281  return ts_mint_surfacewf_;
3282  }
3283 
3284  void ts_mint_surfacewf(const blitz::Array<double, 4>& ts_mint_surfacewf_in) {
3285  ts_mint_surfacewf_ = ts_mint_surfacewf_in;
3286  }
3287 
3288 
3289  const blitz::Array<double, 4>& ts_flux_surfacewf() const {
3290  return ts_flux_surfacewf_;
3291  }
3292 
3293  void ts_flux_surfacewf(const blitz::Array<double, 4>& ts_flux_surfacewf_in) {
3294  ts_flux_surfacewf_ = ts_flux_surfacewf_in;
3295  }
3296 
3297 
3298  const blitz::Array<double, 3>& ts_sbbwfs_jacobians() const {
3299  return ts_sbbwfs_jacobians_;
3300  }
3301 
3302  void ts_sbbwfs_jacobians(const blitz::Array<double, 3>& ts_sbbwfs_jacobians_in) {
3303  ts_sbbwfs_jacobians_ = ts_sbbwfs_jacobians_in;
3304  }
3305 
3306 
3307  const blitz::Array<double, 3>& ts_sbbwfs_fluxes() const {
3308  return ts_sbbwfs_fluxes_;
3309  }
3310 
3311  void ts_sbbwfs_fluxes(const blitz::Array<double, 3>& ts_sbbwfs_fluxes_in) {
3312  ts_sbbwfs_fluxes_ = ts_sbbwfs_fluxes_in;
3313  }
3314 
3315 
3316 
3317 
3318 
3319  virtual void print(std::ostream &output_stream) const {
3320  output_stream << "Lidort_Linsurf:" << std::endl
3321  << " ts_surfacewf: " << std::endl << ts_surfacewf() << std::endl
3322  << " ts_mint_surfacewf: " << std::endl << ts_mint_surfacewf() << std::endl
3323  << " ts_flux_surfacewf: " << std::endl << ts_flux_surfacewf() << std::endl
3324  << "ts_sbbwfs_jacobians: " << std::endl << ts_sbbwfs_jacobians() << std::endl
3325  << " ts_sbbwfs_fluxes: " << std::endl << ts_sbbwfs_fluxes() << std::endl;
3326 
3327  }
3328 
3330  BYTE_SIZE_ERROR_CHECK("ts_surfacewf_",sizeof(*transfer_struct_c.ts_surfacewf_),transfer_struct_c.ts_surfacewf__f_byte_size);
3331  BYTE_SIZE_ERROR_CHECK("ts_mint_surfacewf_",sizeof(*transfer_struct_c.ts_mint_surfacewf_),transfer_struct_c.ts_mint_surfacewf__f_byte_size);
3332  BYTE_SIZE_ERROR_CHECK("ts_flux_surfacewf_",sizeof(*transfer_struct_c.ts_flux_surfacewf_),transfer_struct_c.ts_flux_surfacewf__f_byte_size);
3333  BYTE_SIZE_ERROR_CHECK("ts_sbbwfs_jacobians_",sizeof(*transfer_struct_c.ts_sbbwfs_jacobians_),transfer_struct_c.ts_sbbwfs_jacobians__f_byte_size);
3334  BYTE_SIZE_ERROR_CHECK("ts_sbbwfs_fluxes_",sizeof(*transfer_struct_c.ts_sbbwfs_fluxes_),transfer_struct_c.ts_sbbwfs_fluxes__f_byte_size);
3335 
3336  }
3337 
3338 private:
3339  void link_blitz_arrays() {
3340  ts_surfacewf_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_surfacewf_,
3341  blitz::shape(transfer_struct_c.ts_surfacewf__f_shapes[0],
3342  transfer_struct_c.ts_surfacewf__f_shapes[1],
3343  transfer_struct_c.ts_surfacewf__f_shapes[2],
3344  transfer_struct_c.ts_surfacewf__f_shapes[3]),
3345  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3346  ts_mint_surfacewf_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_mint_surfacewf_,
3347  blitz::shape(transfer_struct_c.ts_mint_surfacewf__f_shapes[0],
3348  transfer_struct_c.ts_mint_surfacewf__f_shapes[1],
3349  transfer_struct_c.ts_mint_surfacewf__f_shapes[2],
3350  transfer_struct_c.ts_mint_surfacewf__f_shapes[3]),
3351  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3352  ts_flux_surfacewf_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_flux_surfacewf_,
3353  blitz::shape(transfer_struct_c.ts_flux_surfacewf__f_shapes[0],
3354  transfer_struct_c.ts_flux_surfacewf__f_shapes[1],
3355  transfer_struct_c.ts_flux_surfacewf__f_shapes[2],
3356  transfer_struct_c.ts_flux_surfacewf__f_shapes[3]),
3357  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3358  ts_sbbwfs_jacobians_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_sbbwfs_jacobians_,
3359  blitz::shape(transfer_struct_c.ts_sbbwfs_jacobians__f_shapes[0],
3360  transfer_struct_c.ts_sbbwfs_jacobians__f_shapes[1],
3361  transfer_struct_c.ts_sbbwfs_jacobians__f_shapes[2]),
3362  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
3363  ts_sbbwfs_fluxes_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_sbbwfs_fluxes_,
3364  blitz::shape(transfer_struct_c.ts_sbbwfs_fluxes__f_shapes[0],
3365  transfer_struct_c.ts_sbbwfs_fluxes__f_shapes[1],
3366  transfer_struct_c.ts_sbbwfs_fluxes__f_shapes[2]),
3367  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
3368 
3369  }
3370 
3371  void link_nested_types() {
3372 
3373  }
3374 
3375  struct lidort_linsurf transfer_struct_c;
3376 
3377  blitz::Array<double, 4> ts_surfacewf_;
3378  blitz::Array<double, 4> ts_mint_surfacewf_;
3379  blitz::Array<double, 4> ts_flux_surfacewf_;
3380  blitz::Array<double, 3> ts_sbbwfs_jacobians_;
3381  blitz::Array<double, 3> ts_sbbwfs_fluxes_;
3382 
3383 };
3384 
3385 // Links to type: "lidort_linoutputs" from module: "lidort_linoutputs_def" in file: "lidort_lin_outputs_def.f90"
3386 extern "C" {
3387  void lidort_linoutputs_c_alloc_init(struct lidort_linoutputs *transfer_struct_c, void **fortran_type_c);
3388  void lidort_linoutputs_c_init_only(struct lidort_linoutputs *transfer_struct_c, void **fortran_type_c);
3389  void lidort_linoutputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
3390  void lidort_linoutputs_c_destroy(void **fortran_type_c);
3391 
3392 }
3393 
3395  void* atmos_;
3397 
3398  void* surf_;
3400 
3401 
3402 };
3403 
3404 // Links to type: "lidort_linoutputs" from module: "lidort_linoutputs_def" in file: "lidort_lin_outputs_def.f90"
3406 public:
3407  // Allocating constructor
3409  lidort_linoutputs_c_alloc_init(&transfer_struct_c, &fortran_type_c);
3410  link_blitz_arrays();
3411  link_nested_types();
3412  }
3413 
3414  // Linked to other data structure
3415  Lidort_Linoutputs(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
3416  lidort_linoutputs_c_init_only(&transfer_struct_c, &fortran_type_c);
3417  link_blitz_arrays();
3418  link_nested_types();
3419  }
3420 
3421  // Deallocate
3423  if (owns_pointer)
3424  lidort_linoutputs_c_destroy(&fortran_type_c);
3425  }
3426 
3428  return *atmos_;
3429  }
3430 
3431  const Lidort_Linatmos& atmos() const {
3432  return *atmos_;
3433  }
3434 
3435  void atmos(Lidort_Linatmos& atmos_in) {
3436  void* src_ptr = atmos_in.fortran_type_ptr();
3437  void* dst_ptr = atmos_->fortran_type_ptr();
3438  lidort_linatmos_c_copy(&src_ptr, &dst_ptr);
3439  }
3440 
3441 
3443  return *surf_;
3444  }
3445 
3446  const Lidort_Linsurf& surf() const {
3447  return *surf_;
3448  }
3449 
3450  void surf(Lidort_Linsurf& surf_in) {
3451  void* src_ptr = surf_in.fortran_type_ptr();
3452  void* dst_ptr = surf_->fortran_type_ptr();
3453  lidort_linsurf_c_copy(&src_ptr, &dst_ptr);
3454  }
3455 
3456 
3457 
3458 
3459 
3460  virtual void print(std::ostream &output_stream) const {
3461  output_stream << "Lidort_Linoutputs:" << std::endl
3462  << "atmos: " << atmos() << std::endl
3463  << " surf: " << surf() << std::endl;
3464 
3465  }
3466 
3468 
3469  }
3470 
3471 private:
3472  void link_blitz_arrays() {
3473 
3474  }
3475 
3476  void link_nested_types() {
3477  atmos_.reset( new Lidort_Linatmos(transfer_struct_c.atmos_) );
3478  surf_.reset( new Lidort_Linsurf(transfer_struct_c.surf_) );
3479 
3480  }
3481 
3482  struct lidort_linoutputs transfer_struct_c;
3483 
3486 
3487 };
3488 
3489 // Links to type: "lidort_linsup_brdf" from module: "lidort_linsup_brdf_def" in file: "lidort_lin_sup_brdf_def.f90"
3490 extern "C" {
3491  void lidort_linsup_brdf_c_alloc_init(struct lidort_linsup_brdf *transfer_struct_c, void **fortran_type_c);
3492  void lidort_linsup_brdf_c_init_only(struct lidort_linsup_brdf *transfer_struct_c, void **fortran_type_c);
3493  void lidort_linsup_brdf_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
3494  void lidort_linsup_brdf_c_destroy(void **fortran_type_c);
3495 
3496 }
3497 
3500  int ts_ls_exactdb_brdfunc__f_shapes[4];
3502 
3504  int ts_ls_brdf_f_0__f_shapes[4];
3506 
3507  double* ts_ls_brdf_f_;
3508  int ts_ls_brdf_f__f_shapes[4];
3510 
3512  int ts_ls_user_brdf_f_0__f_shapes[4];
3514 
3516  int ts_ls_user_brdf_f__f_shapes[4];
3518 
3520  int ts_ls_emissivity__f_shapes[2];
3522 
3524  int ts_ls_user_emissivity__f_shapes[2];
3526 
3527 
3528 };
3529 
3530 // Links to type: "lidort_linsup_brdf" from module: "lidort_linsup_brdf_def" in file: "lidort_lin_sup_brdf_def.f90"
3532 public:
3533  // Allocating constructor
3535  lidort_linsup_brdf_c_alloc_init(&transfer_struct_c, &fortran_type_c);
3536  link_blitz_arrays();
3537  link_nested_types();
3538  }
3539 
3540  // Linked to other data structure
3541  Lidort_Linsup_Brdf(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
3542  lidort_linsup_brdf_c_init_only(&transfer_struct_c, &fortran_type_c);
3543  link_blitz_arrays();
3544  link_nested_types();
3545  }
3546 
3547  // Deallocate
3549  if (owns_pointer)
3550  lidort_linsup_brdf_c_destroy(&fortran_type_c);
3551  }
3552 
3553  const blitz::Array<double, 4>& ts_ls_exactdb_brdfunc() const {
3554  return ts_ls_exactdb_brdfunc_;
3555  }
3556 
3557  void ts_ls_exactdb_brdfunc(const blitz::Array<double, 4>& ts_ls_exactdb_brdfunc_in) {
3558  ts_ls_exactdb_brdfunc_ = ts_ls_exactdb_brdfunc_in;
3559  }
3560 
3561 
3562  const blitz::Array<double, 4>& ts_ls_brdf_f_0() const {
3563  return ts_ls_brdf_f_0_;
3564  }
3565 
3566  void ts_ls_brdf_f_0(const blitz::Array<double, 4>& ts_ls_brdf_f_0_in) {
3567  ts_ls_brdf_f_0_ = ts_ls_brdf_f_0_in;
3568  }
3569 
3570 
3571  const blitz::Array<double, 4>& ts_ls_brdf_f() const {
3572  return ts_ls_brdf_f_;
3573  }
3574 
3575  void ts_ls_brdf_f(const blitz::Array<double, 4>& ts_ls_brdf_f_in) {
3576  ts_ls_brdf_f_ = ts_ls_brdf_f_in;
3577  }
3578 
3579 
3580  const blitz::Array<double, 4>& ts_ls_user_brdf_f_0() const {
3581  return ts_ls_user_brdf_f_0_;
3582  }
3583 
3584  void ts_ls_user_brdf_f_0(const blitz::Array<double, 4>& ts_ls_user_brdf_f_0_in) {
3585  ts_ls_user_brdf_f_0_ = ts_ls_user_brdf_f_0_in;
3586  }
3587 
3588 
3589  const blitz::Array<double, 4>& ts_ls_user_brdf_f() const {
3590  return ts_ls_user_brdf_f_;
3591  }
3592 
3593  void ts_ls_user_brdf_f(const blitz::Array<double, 4>& ts_ls_user_brdf_f_in) {
3594  ts_ls_user_brdf_f_ = ts_ls_user_brdf_f_in;
3595  }
3596 
3597 
3598  const blitz::Array<double, 2>& ts_ls_emissivity() const {
3599  return ts_ls_emissivity_;
3600  }
3601 
3602  void ts_ls_emissivity(const blitz::Array<double, 2>& ts_ls_emissivity_in) {
3603  ts_ls_emissivity_ = ts_ls_emissivity_in;
3604  }
3605 
3606 
3607  const blitz::Array<double, 2>& ts_ls_user_emissivity() const {
3608  return ts_ls_user_emissivity_;
3609  }
3610 
3611  void ts_ls_user_emissivity(const blitz::Array<double, 2>& ts_ls_user_emissivity_in) {
3612  ts_ls_user_emissivity_ = ts_ls_user_emissivity_in;
3613  }
3614 
3615 
3616 
3617 
3618 
3619  virtual void print(std::ostream &output_stream) const {
3620  output_stream << "Lidort_Linsup_Brdf:" << std::endl
3621  << "ts_ls_exactdb_brdfunc: " << std::endl << ts_ls_exactdb_brdfunc() << std::endl
3622  << " ts_ls_brdf_f_0: " << std::endl << ts_ls_brdf_f_0() << std::endl
3623  << " ts_ls_brdf_f: " << std::endl << ts_ls_brdf_f() << std::endl
3624  << " ts_ls_user_brdf_f_0: " << std::endl << ts_ls_user_brdf_f_0() << std::endl
3625  << " ts_ls_user_brdf_f: " << std::endl << ts_ls_user_brdf_f() << std::endl
3626  << " ts_ls_emissivity: " << std::endl << ts_ls_emissivity() << std::endl
3627  << "ts_ls_user_emissivity: " << std::endl << ts_ls_user_emissivity() << std::endl;
3628 
3629  }
3630 
3632  BYTE_SIZE_ERROR_CHECK("ts_ls_exactdb_brdfunc_",sizeof(*transfer_struct_c.ts_ls_exactdb_brdfunc_),transfer_struct_c.ts_ls_exactdb_brdfunc__f_byte_size);
3633  BYTE_SIZE_ERROR_CHECK("ts_ls_brdf_f_0_",sizeof(*transfer_struct_c.ts_ls_brdf_f_0_),transfer_struct_c.ts_ls_brdf_f_0__f_byte_size);
3634  BYTE_SIZE_ERROR_CHECK("ts_ls_brdf_f_",sizeof(*transfer_struct_c.ts_ls_brdf_f_),transfer_struct_c.ts_ls_brdf_f__f_byte_size);
3635  BYTE_SIZE_ERROR_CHECK("ts_ls_user_brdf_f_0_",sizeof(*transfer_struct_c.ts_ls_user_brdf_f_0_),transfer_struct_c.ts_ls_user_brdf_f_0__f_byte_size);
3636  BYTE_SIZE_ERROR_CHECK("ts_ls_user_brdf_f_",sizeof(*transfer_struct_c.ts_ls_user_brdf_f_),transfer_struct_c.ts_ls_user_brdf_f__f_byte_size);
3637  BYTE_SIZE_ERROR_CHECK("ts_ls_emissivity_",sizeof(*transfer_struct_c.ts_ls_emissivity_),transfer_struct_c.ts_ls_emissivity__f_byte_size);
3638  BYTE_SIZE_ERROR_CHECK("ts_ls_user_emissivity_",sizeof(*transfer_struct_c.ts_ls_user_emissivity_),transfer_struct_c.ts_ls_user_emissivity__f_byte_size);
3639 
3640  }
3641 
3643  // This is only safe for LIDORT 3.6 because the BRDF and LIDORT
3644  // sup structures are the exact same structure, but with different
3645  // names. This MUST be reevaluated on future LIDORT versions
3646  void* sup_ptr = supp_obj.fortran_type_ptr();
3647  lidort_linsup_brdf_c_copy(&sup_ptr, &fortran_type_c);
3648  }
3649 
3650 
3651 private:
3652  void link_blitz_arrays() {
3653  ts_ls_exactdb_brdfunc_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_ls_exactdb_brdfunc_,
3654  blitz::shape(transfer_struct_c.ts_ls_exactdb_brdfunc__f_shapes[0],
3655  transfer_struct_c.ts_ls_exactdb_brdfunc__f_shapes[1],
3656  transfer_struct_c.ts_ls_exactdb_brdfunc__f_shapes[2],
3657  transfer_struct_c.ts_ls_exactdb_brdfunc__f_shapes[3]),
3658  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3659  ts_ls_brdf_f_0_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_ls_brdf_f_0_,
3660  blitz::shape(transfer_struct_c.ts_ls_brdf_f_0__f_shapes[0],
3661  transfer_struct_c.ts_ls_brdf_f_0__f_shapes[1],
3662  transfer_struct_c.ts_ls_brdf_f_0__f_shapes[2],
3663  transfer_struct_c.ts_ls_brdf_f_0__f_shapes[3]),
3664  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3665  ts_ls_brdf_f_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_ls_brdf_f_,
3666  blitz::shape(transfer_struct_c.ts_ls_brdf_f__f_shapes[0],
3667  transfer_struct_c.ts_ls_brdf_f__f_shapes[1],
3668  transfer_struct_c.ts_ls_brdf_f__f_shapes[2],
3669  transfer_struct_c.ts_ls_brdf_f__f_shapes[3]),
3670  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3671  ts_ls_user_brdf_f_0_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_ls_user_brdf_f_0_,
3672  blitz::shape(transfer_struct_c.ts_ls_user_brdf_f_0__f_shapes[0],
3673  transfer_struct_c.ts_ls_user_brdf_f_0__f_shapes[1],
3674  transfer_struct_c.ts_ls_user_brdf_f_0__f_shapes[2],
3675  transfer_struct_c.ts_ls_user_brdf_f_0__f_shapes[3]),
3676  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3677  ts_ls_user_brdf_f_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_ls_user_brdf_f_,
3678  blitz::shape(transfer_struct_c.ts_ls_user_brdf_f__f_shapes[0],
3679  transfer_struct_c.ts_ls_user_brdf_f__f_shapes[1],
3680  transfer_struct_c.ts_ls_user_brdf_f__f_shapes[2],
3681  transfer_struct_c.ts_ls_user_brdf_f__f_shapes[3]),
3682  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3683  ts_ls_emissivity_.reference(blitz::Array<double, 2>(transfer_struct_c.ts_ls_emissivity_,
3684  blitz::shape(transfer_struct_c.ts_ls_emissivity__f_shapes[0],
3685  transfer_struct_c.ts_ls_emissivity__f_shapes[1]),
3686  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
3687  ts_ls_user_emissivity_.reference(blitz::Array<double, 2>(transfer_struct_c.ts_ls_user_emissivity_,
3688  blitz::shape(transfer_struct_c.ts_ls_user_emissivity__f_shapes[0],
3689  transfer_struct_c.ts_ls_user_emissivity__f_shapes[1]),
3690  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
3691 
3692  }
3693 
3694  void link_nested_types() {
3695 
3696  }
3697 
3698  struct lidort_linsup_brdf transfer_struct_c;
3699 
3700  blitz::Array<double, 4> ts_ls_exactdb_brdfunc_;
3701  blitz::Array<double, 4> ts_ls_brdf_f_0_;
3702  blitz::Array<double, 4> ts_ls_brdf_f_;
3703  blitz::Array<double, 4> ts_ls_user_brdf_f_0_;
3704  blitz::Array<double, 4> ts_ls_user_brdf_f_;
3705  blitz::Array<double, 2> ts_ls_emissivity_;
3706  blitz::Array<double, 2> ts_ls_user_emissivity_;
3707 
3708 };
3709 
3710 // Links to type: "lidort_linsup_ss_atmos" from module: "lidort_linsup_ss_def" in file: "lidort_lin_sup_ss_def.f90"
3711 extern "C" {
3712  void lidort_linsup_ss_atmos_c_alloc_init(struct lidort_linsup_ss_atmos *transfer_struct_c, void **fortran_type_c);
3713  void lidort_linsup_ss_atmos_c_init_only(struct lidort_linsup_ss_atmos *transfer_struct_c, void **fortran_type_c);
3714  void lidort_linsup_ss_atmos_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
3715  void lidort_linsup_ss_atmos_c_destroy(void **fortran_type_c);
3716 
3717 }
3718 
3721  int ts_columnwf_ss__f_shapes[4];
3723 
3725  int ts_columnwf_db__f_shapes[3];
3727 
3729  int ts_profilewf_ss__f_shapes[5];
3731 
3733  int ts_profilewf_db__f_shapes[4];
3735 
3736 
3737 };
3738 
3739 // Links to type: "lidort_linsup_ss_atmos" from module: "lidort_linsup_ss_def" in file: "lidort_lin_sup_ss_def.f90"
3741 public:
3742  // Allocating constructor
3744  lidort_linsup_ss_atmos_c_alloc_init(&transfer_struct_c, &fortran_type_c);
3745  link_blitz_arrays();
3746  link_nested_types();
3747  }
3748 
3749  // Linked to other data structure
3750  Lidort_Linsup_Ss_Atmos(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
3751  lidort_linsup_ss_atmos_c_init_only(&transfer_struct_c, &fortran_type_c);
3752  link_blitz_arrays();
3753  link_nested_types();
3754  }
3755 
3756  // Deallocate
3758  if (owns_pointer)
3759  lidort_linsup_ss_atmos_c_destroy(&fortran_type_c);
3760  }
3761 
3762  const blitz::Array<double, 4>& ts_columnwf_ss() const {
3763  return ts_columnwf_ss_;
3764  }
3765 
3766  void ts_columnwf_ss(const blitz::Array<double, 4>& ts_columnwf_ss_in) {
3767  ts_columnwf_ss_ = ts_columnwf_ss_in;
3768  }
3769 
3770 
3771  const blitz::Array<double, 3>& ts_columnwf_db() const {
3772  return ts_columnwf_db_;
3773  }
3774 
3775  void ts_columnwf_db(const blitz::Array<double, 3>& ts_columnwf_db_in) {
3776  ts_columnwf_db_ = ts_columnwf_db_in;
3777  }
3778 
3779 
3780  const blitz::Array<double, 5>& ts_profilewf_ss() const {
3781  return ts_profilewf_ss_;
3782  }
3783 
3784  void ts_profilewf_ss(const blitz::Array<double, 5>& ts_profilewf_ss_in) {
3785  ts_profilewf_ss_ = ts_profilewf_ss_in;
3786  }
3787 
3788 
3789  const blitz::Array<double, 4>& ts_profilewf_db() const {
3790  return ts_profilewf_db_;
3791  }
3792 
3793  void ts_profilewf_db(const blitz::Array<double, 4>& ts_profilewf_db_in) {
3794  ts_profilewf_db_ = ts_profilewf_db_in;
3795  }
3796 
3797 
3798 
3799 
3800 
3801  virtual void print(std::ostream &output_stream) const {
3802  output_stream << "Lidort_Linsup_Ss_Atmos:" << std::endl
3803  << " ts_columnwf_ss: " << std::endl << ts_columnwf_ss() << std::endl
3804  << " ts_columnwf_db: " << std::endl << ts_columnwf_db() << std::endl
3805  << "ts_profilewf_ss: " << std::endl << ts_profilewf_ss() << std::endl
3806  << "ts_profilewf_db: " << std::endl << ts_profilewf_db() << std::endl;
3807 
3808  }
3809 
3811  BYTE_SIZE_ERROR_CHECK("ts_columnwf_ss_",sizeof(*transfer_struct_c.ts_columnwf_ss_),transfer_struct_c.ts_columnwf_ss__f_byte_size);
3812  BYTE_SIZE_ERROR_CHECK("ts_columnwf_db_",sizeof(*transfer_struct_c.ts_columnwf_db_),transfer_struct_c.ts_columnwf_db__f_byte_size);
3813  BYTE_SIZE_ERROR_CHECK("ts_profilewf_ss_",sizeof(*transfer_struct_c.ts_profilewf_ss_),transfer_struct_c.ts_profilewf_ss__f_byte_size);
3814  BYTE_SIZE_ERROR_CHECK("ts_profilewf_db_",sizeof(*transfer_struct_c.ts_profilewf_db_),transfer_struct_c.ts_profilewf_db__f_byte_size);
3815 
3816  }
3817 
3818 private:
3819  void link_blitz_arrays() {
3820  ts_columnwf_ss_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_columnwf_ss_,
3821  blitz::shape(transfer_struct_c.ts_columnwf_ss__f_shapes[0],
3822  transfer_struct_c.ts_columnwf_ss__f_shapes[1],
3823  transfer_struct_c.ts_columnwf_ss__f_shapes[2],
3824  transfer_struct_c.ts_columnwf_ss__f_shapes[3]),
3825  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3826  ts_columnwf_db_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_columnwf_db_,
3827  blitz::shape(transfer_struct_c.ts_columnwf_db__f_shapes[0],
3828  transfer_struct_c.ts_columnwf_db__f_shapes[1],
3829  transfer_struct_c.ts_columnwf_db__f_shapes[2]),
3830  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
3831  ts_profilewf_ss_.reference(blitz::Array<double, 5>(transfer_struct_c.ts_profilewf_ss_,
3832  blitz::shape(transfer_struct_c.ts_profilewf_ss__f_shapes[0],
3833  transfer_struct_c.ts_profilewf_ss__f_shapes[1],
3834  transfer_struct_c.ts_profilewf_ss__f_shapes[2],
3835  transfer_struct_c.ts_profilewf_ss__f_shapes[3],
3836  transfer_struct_c.ts_profilewf_ss__f_shapes[4]),
3837  blitz::neverDeleteData, blitz::ColumnMajorArray<5>()));
3838  ts_profilewf_db_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_profilewf_db_,
3839  blitz::shape(transfer_struct_c.ts_profilewf_db__f_shapes[0],
3840  transfer_struct_c.ts_profilewf_db__f_shapes[1],
3841  transfer_struct_c.ts_profilewf_db__f_shapes[2],
3842  transfer_struct_c.ts_profilewf_db__f_shapes[3]),
3843  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
3844 
3845  }
3846 
3847  void link_nested_types() {
3848 
3849  }
3850 
3851  struct lidort_linsup_ss_atmos transfer_struct_c;
3852 
3853  blitz::Array<double, 4> ts_columnwf_ss_;
3854  blitz::Array<double, 3> ts_columnwf_db_;
3855  blitz::Array<double, 5> ts_profilewf_ss_;
3856  blitz::Array<double, 4> ts_profilewf_db_;
3857 
3858 };
3859 
3860 // Links to type: "lidort_linsup_ss_surf" from module: "lidort_linsup_ss_def" in file: "lidort_lin_sup_ss_def.f90"
3861 extern "C" {
3862  void lidort_linsup_ss_surf_c_alloc_init(struct lidort_linsup_ss_surf *transfer_struct_c, void **fortran_type_c);
3863  void lidort_linsup_ss_surf_c_init_only(struct lidort_linsup_ss_surf *transfer_struct_c, void **fortran_type_c);
3864  void lidort_linsup_ss_surf_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
3865  void lidort_linsup_ss_surf_c_destroy(void **fortran_type_c);
3866 
3867 }
3868 
3871  int ts_surfacewf_db__f_shapes[3];
3873 
3874 
3875 };
3876 
3877 // Links to type: "lidort_linsup_ss_surf" from module: "lidort_linsup_ss_def" in file: "lidort_lin_sup_ss_def.f90"
3879 public:
3880  // Allocating constructor
3882  lidort_linsup_ss_surf_c_alloc_init(&transfer_struct_c, &fortran_type_c);
3883  link_blitz_arrays();
3884  link_nested_types();
3885  }
3886 
3887  // Linked to other data structure
3888  Lidort_Linsup_Ss_Surf(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
3889  lidort_linsup_ss_surf_c_init_only(&transfer_struct_c, &fortran_type_c);
3890  link_blitz_arrays();
3891  link_nested_types();
3892  }
3893 
3894  // Deallocate
3896  if (owns_pointer)
3897  lidort_linsup_ss_surf_c_destroy(&fortran_type_c);
3898  }
3899 
3900  const blitz::Array<double, 3>& ts_surfacewf_db() const {
3901  return ts_surfacewf_db_;
3902  }
3903 
3904  void ts_surfacewf_db(const blitz::Array<double, 3>& ts_surfacewf_db_in) {
3905  ts_surfacewf_db_ = ts_surfacewf_db_in;
3906  }
3907 
3908 
3909 
3910 
3911 
3912  virtual void print(std::ostream &output_stream) const {
3913  output_stream << "Lidort_Linsup_Ss_Surf:" << std::endl
3914  << "ts_surfacewf_db: " << std::endl << ts_surfacewf_db() << std::endl;
3915 
3916  }
3917 
3919  BYTE_SIZE_ERROR_CHECK("ts_surfacewf_db_",sizeof(*transfer_struct_c.ts_surfacewf_db_),transfer_struct_c.ts_surfacewf_db__f_byte_size);
3920 
3921  }
3922 
3923 private:
3924  void link_blitz_arrays() {
3925  ts_surfacewf_db_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_surfacewf_db_,
3926  blitz::shape(transfer_struct_c.ts_surfacewf_db__f_shapes[0],
3927  transfer_struct_c.ts_surfacewf_db__f_shapes[1],
3928  transfer_struct_c.ts_surfacewf_db__f_shapes[2]),
3929  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
3930 
3931  }
3932 
3933  void link_nested_types() {
3934 
3935  }
3936 
3937  struct lidort_linsup_ss_surf transfer_struct_c;
3938 
3939  blitz::Array<double, 3> ts_surfacewf_db_;
3940 
3941 };
3942 
3943 // Links to type: "lidort_linsup_ss" from module: "lidort_linsup_ss_def" in file: "lidort_lin_sup_ss_def.f90"
3944 extern "C" {
3945  void lidort_linsup_ss_c_alloc_init(struct lidort_linsup_ss *transfer_struct_c, void **fortran_type_c);
3946  void lidort_linsup_ss_c_init_only(struct lidort_linsup_ss *transfer_struct_c, void **fortran_type_c);
3947  void lidort_linsup_ss_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
3948  void lidort_linsup_ss_c_destroy(void **fortran_type_c);
3949 
3950 }
3951 
3953  void* atmos_;
3955 
3956  void* surf_;
3958 
3959 
3960 };
3961 
3962 // Links to type: "lidort_linsup_ss" from module: "lidort_linsup_ss_def" in file: "lidort_lin_sup_ss_def.f90"
3964 public:
3965  // Allocating constructor
3967  lidort_linsup_ss_c_alloc_init(&transfer_struct_c, &fortran_type_c);
3968  link_blitz_arrays();
3969  link_nested_types();
3970  }
3971 
3972  // Linked to other data structure
3973  Lidort_Linsup_Ss(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
3974  lidort_linsup_ss_c_init_only(&transfer_struct_c, &fortran_type_c);
3975  link_blitz_arrays();
3976  link_nested_types();
3977  }
3978 
3979  // Deallocate
3981  if (owns_pointer)
3982  lidort_linsup_ss_c_destroy(&fortran_type_c);
3983  }
3984 
3986  return *atmos_;
3987  }
3988 
3990  return *atmos_;
3991  }
3992 
3993  void atmos(Lidort_Linsup_Ss_Atmos& atmos_in) {
3994  void* src_ptr = atmos_in.fortran_type_ptr();
3995  void* dst_ptr = atmos_->fortran_type_ptr();
3996  lidort_linsup_ss_atmos_c_copy(&src_ptr, &dst_ptr);
3997  }
3998 
3999 
4001  return *surf_;
4002  }
4003 
4004  const Lidort_Linsup_Ss_Surf& surf() const {
4005  return *surf_;
4006  }
4007 
4008  void surf(Lidort_Linsup_Ss_Surf& surf_in) {
4009  void* src_ptr = surf_in.fortran_type_ptr();
4010  void* dst_ptr = surf_->fortran_type_ptr();
4011  lidort_linsup_ss_surf_c_copy(&src_ptr, &dst_ptr);
4012  }
4013 
4014 
4015 
4016 
4017 
4018  virtual void print(std::ostream &output_stream) const {
4019  output_stream << "Lidort_Linsup_Ss:" << std::endl
4020  << "atmos: " << atmos() << std::endl
4021  << " surf: " << surf() << std::endl;
4022 
4023  }
4024 
4026 
4027  }
4028 
4029 private:
4030  void link_blitz_arrays() {
4031 
4032  }
4033 
4034  void link_nested_types() {
4035  atmos_.reset( new Lidort_Linsup_Ss_Atmos(transfer_struct_c.atmos_) );
4036  surf_.reset( new Lidort_Linsup_Ss_Surf(transfer_struct_c.surf_) );
4037 
4038  }
4039 
4040  struct lidort_linsup_ss transfer_struct_c;
4041 
4044 
4045 };
4046 
4047 // Links to type: "lidort_linsup_sleave" from module: "lidort_linsup_sleave_def" in file: "lidort_lin_sup_sleave_def.f90"
4048 extern "C" {
4049  void lidort_linsup_sleave_c_alloc_init(struct lidort_linsup_sleave *transfer_struct_c, void **fortran_type_c);
4050  void lidort_linsup_sleave_c_init_only(struct lidort_linsup_sleave *transfer_struct_c, void **fortran_type_c);
4051  void lidort_linsup_sleave_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
4052  void lidort_linsup_sleave_c_destroy(void **fortran_type_c);
4053 
4054 }
4055 
4058  int ts_lssl_slterm_isotropic__f_shapes[2];
4060 
4062  int ts_lssl_slterm_userangles__f_shapes[4];
4064 
4066  int ts_lssl_slterm_f_0__f_shapes[4];
4068 
4070  int ts_lssl_user_slterm_f_0__f_shapes[4];
4072 
4073 
4074 };
4075 
4076 // Links to type: "lidort_linsup_sleave" from module: "lidort_linsup_sleave_def" in file: "lidort_lin_sup_sleave_def.f90"
4078 public:
4079  // Allocating constructor
4081  lidort_linsup_sleave_c_alloc_init(&transfer_struct_c, &fortran_type_c);
4082  link_blitz_arrays();
4083  link_nested_types();
4084  }
4085 
4086  // Linked to other data structure
4087  Lidort_Linsup_Sleave(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
4088  lidort_linsup_sleave_c_init_only(&transfer_struct_c, &fortran_type_c);
4089  link_blitz_arrays();
4090  link_nested_types();
4091  }
4092 
4093  // Deallocate
4095  if (owns_pointer)
4096  lidort_linsup_sleave_c_destroy(&fortran_type_c);
4097  }
4098 
4099  const blitz::Array<double, 2>& ts_lssl_slterm_isotropic() const {
4100  return ts_lssl_slterm_isotropic_;
4101  }
4102 
4103  void ts_lssl_slterm_isotropic(const blitz::Array<double, 2>& ts_lssl_slterm_isotropic_in) {
4104  ts_lssl_slterm_isotropic_ = ts_lssl_slterm_isotropic_in;
4105  }
4106 
4107 
4108  const blitz::Array<double, 4>& ts_lssl_slterm_userangles() const {
4109  return ts_lssl_slterm_userangles_;
4110  }
4111 
4112  void ts_lssl_slterm_userangles(const blitz::Array<double, 4>& ts_lssl_slterm_userangles_in) {
4113  ts_lssl_slterm_userangles_ = ts_lssl_slterm_userangles_in;
4114  }
4115 
4116 
4117  const blitz::Array<double, 4>& ts_lssl_slterm_f_0() const {
4118  return ts_lssl_slterm_f_0_;
4119  }
4120 
4121  void ts_lssl_slterm_f_0(const blitz::Array<double, 4>& ts_lssl_slterm_f_0_in) {
4122  ts_lssl_slterm_f_0_ = ts_lssl_slterm_f_0_in;
4123  }
4124 
4125 
4126  const blitz::Array<double, 4>& ts_lssl_user_slterm_f_0() const {
4127  return ts_lssl_user_slterm_f_0_;
4128  }
4129 
4130  void ts_lssl_user_slterm_f_0(const blitz::Array<double, 4>& ts_lssl_user_slterm_f_0_in) {
4131  ts_lssl_user_slterm_f_0_ = ts_lssl_user_slterm_f_0_in;
4132  }
4133 
4134 
4135 
4136 
4137 
4138  virtual void print(std::ostream &output_stream) const {
4139  output_stream << "Lidort_Linsup_Sleave:" << std::endl
4140  << " ts_lssl_slterm_isotropic: " << std::endl << ts_lssl_slterm_isotropic() << std::endl
4141  << "ts_lssl_slterm_userangles: " << std::endl << ts_lssl_slterm_userangles() << std::endl
4142  << " ts_lssl_slterm_f_0: " << std::endl << ts_lssl_slterm_f_0() << std::endl
4143  << " ts_lssl_user_slterm_f_0: " << std::endl << ts_lssl_user_slterm_f_0() << std::endl;
4144 
4145  }
4146 
4148  BYTE_SIZE_ERROR_CHECK("ts_lssl_slterm_isotropic_",sizeof(*transfer_struct_c.ts_lssl_slterm_isotropic_),transfer_struct_c.ts_lssl_slterm_isotropic__f_byte_size);
4149  BYTE_SIZE_ERROR_CHECK("ts_lssl_slterm_userangles_",sizeof(*transfer_struct_c.ts_lssl_slterm_userangles_),transfer_struct_c.ts_lssl_slterm_userangles__f_byte_size);
4150  BYTE_SIZE_ERROR_CHECK("ts_lssl_slterm_f_0_",sizeof(*transfer_struct_c.ts_lssl_slterm_f_0_),transfer_struct_c.ts_lssl_slterm_f_0__f_byte_size);
4151  BYTE_SIZE_ERROR_CHECK("ts_lssl_user_slterm_f_0_",sizeof(*transfer_struct_c.ts_lssl_user_slterm_f_0_),transfer_struct_c.ts_lssl_user_slterm_f_0__f_byte_size);
4152 
4153  }
4154 
4155 private:
4156  void link_blitz_arrays() {
4157  ts_lssl_slterm_isotropic_.reference(blitz::Array<double, 2>(transfer_struct_c.ts_lssl_slterm_isotropic_,
4158  blitz::shape(transfer_struct_c.ts_lssl_slterm_isotropic__f_shapes[0],
4159  transfer_struct_c.ts_lssl_slterm_isotropic__f_shapes[1]),
4160  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
4161  ts_lssl_slterm_userangles_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_lssl_slterm_userangles_,
4162  blitz::shape(transfer_struct_c.ts_lssl_slterm_userangles__f_shapes[0],
4163  transfer_struct_c.ts_lssl_slterm_userangles__f_shapes[1],
4164  transfer_struct_c.ts_lssl_slterm_userangles__f_shapes[2],
4165  transfer_struct_c.ts_lssl_slterm_userangles__f_shapes[3]),
4166  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
4167  ts_lssl_slterm_f_0_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_lssl_slterm_f_0_,
4168  blitz::shape(transfer_struct_c.ts_lssl_slterm_f_0__f_shapes[0],
4169  transfer_struct_c.ts_lssl_slterm_f_0__f_shapes[1],
4170  transfer_struct_c.ts_lssl_slterm_f_0__f_shapes[2],
4171  transfer_struct_c.ts_lssl_slterm_f_0__f_shapes[3]),
4172  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
4173  ts_lssl_user_slterm_f_0_.reference(blitz::Array<double, 4>(transfer_struct_c.ts_lssl_user_slterm_f_0_,
4174  blitz::shape(transfer_struct_c.ts_lssl_user_slterm_f_0__f_shapes[0],
4175  transfer_struct_c.ts_lssl_user_slterm_f_0__f_shapes[1],
4176  transfer_struct_c.ts_lssl_user_slterm_f_0__f_shapes[2],
4177  transfer_struct_c.ts_lssl_user_slterm_f_0__f_shapes[3]),
4178  blitz::neverDeleteData, blitz::ColumnMajorArray<4>()));
4179 
4180  }
4181 
4182  void link_nested_types() {
4183 
4184  }
4185 
4186  struct lidort_linsup_sleave transfer_struct_c;
4187 
4188  blitz::Array<double, 2> ts_lssl_slterm_isotropic_;
4189  blitz::Array<double, 4> ts_lssl_slterm_userangles_;
4190  blitz::Array<double, 4> ts_lssl_slterm_f_0_;
4191  blitz::Array<double, 4> ts_lssl_user_slterm_f_0_;
4192 
4193 };
4194 
4195 // Links to type: "lidort_linsup_inout" from module: "lidort_linsup_inout_def" in file: "lidort_lin_sup_def.f90"
4196 extern "C" {
4197  void lidort_linsup_inout_c_alloc_init(struct lidort_linsup_inout *transfer_struct_c, void **fortran_type_c);
4198  void lidort_linsup_inout_c_init_only(struct lidort_linsup_inout *transfer_struct_c, void **fortran_type_c);
4199  void lidort_linsup_inout_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
4200  void lidort_linsup_inout_c_destroy(void **fortran_type_c);
4201 
4202 }
4203 
4205  void* brdf_;
4207 
4208  void* ss_;
4210 
4211  void* sleave_;
4213 
4214 
4215 };
4216 
4217 // Links to type: "lidort_linsup_inout" from module: "lidort_linsup_inout_def" in file: "lidort_lin_sup_def.f90"
4219 public:
4220  // Allocating constructor
4222  lidort_linsup_inout_c_alloc_init(&transfer_struct_c, &fortran_type_c);
4223  link_blitz_arrays();
4224  link_nested_types();
4225  }
4226 
4227  // Linked to other data structure
4228  Lidort_Linsup_Inout(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
4229  lidort_linsup_inout_c_init_only(&transfer_struct_c, &fortran_type_c);
4230  link_blitz_arrays();
4231  link_nested_types();
4232  }
4233 
4234  // Deallocate
4236  if (owns_pointer)
4237  lidort_linsup_inout_c_destroy(&fortran_type_c);
4238  }
4239 
4241  return *brdf_;
4242  }
4243 
4244  const Lidort_Linsup_Brdf& brdf() const {
4245  return *brdf_;
4246  }
4247 
4248  void brdf(Lidort_Linsup_Brdf& brdf_in) {
4249  void* src_ptr = brdf_in.fortran_type_ptr();
4250  void* dst_ptr = brdf_->fortran_type_ptr();
4251  lidort_linsup_brdf_c_copy(&src_ptr, &dst_ptr);
4252  }
4253 
4254 
4256  return *ss_;
4257  }
4258 
4259  const Lidort_Linsup_Ss& ss() const {
4260  return *ss_;
4261  }
4262 
4263  void ss(Lidort_Linsup_Ss& ss_in) {
4264  void* src_ptr = ss_in.fortran_type_ptr();
4265  void* dst_ptr = ss_->fortran_type_ptr();
4266  lidort_linsup_ss_c_copy(&src_ptr, &dst_ptr);
4267  }
4268 
4269 
4271  return *sleave_;
4272  }
4273 
4274  const Lidort_Linsup_Sleave& sleave() const {
4275  return *sleave_;
4276  }
4277 
4278  void sleave(Lidort_Linsup_Sleave& sleave_in) {
4279  void* src_ptr = sleave_in.fortran_type_ptr();
4280  void* dst_ptr = sleave_->fortran_type_ptr();
4281  lidort_linsup_sleave_c_copy(&src_ptr, &dst_ptr);
4282  }
4283 
4284 
4285 
4286 
4287 
4288  virtual void print(std::ostream &output_stream) const {
4289  output_stream << "Lidort_Linsup_Inout:" << std::endl
4290  << " brdf: " << brdf() << std::endl
4291  << " ss: " << ss() << std::endl
4292  << "sleave: " << sleave() << std::endl;
4293 
4294  }
4295 
4297 
4298  }
4299 
4300 private:
4301  void link_blitz_arrays() {
4302 
4303  }
4304 
4305  void link_nested_types() {
4306  brdf_.reset( new Lidort_Linsup_Brdf(transfer_struct_c.brdf_) );
4307  ss_.reset( new Lidort_Linsup_Ss(transfer_struct_c.ss_) );
4308  sleave_.reset( new Lidort_Linsup_Sleave(transfer_struct_c.sleave_) );
4309 
4310  }
4311 
4312  struct lidort_linsup_inout transfer_struct_c;
4313 
4317 
4318 };
4319 
4320 // Links to type: "lidort_main_outputs" from module: "lidort_outputs_def" in file: "lidort_outputs_def.f90"
4321 extern "C" {
4322  void lidort_main_outputs_c_alloc_init(struct lidort_main_outputs *transfer_struct_c, void **fortran_type_c);
4323  void lidort_main_outputs_c_init_only(struct lidort_main_outputs *transfer_struct_c, void **fortran_type_c);
4324  void lidort_main_outputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
4325  void lidort_main_outputs_c_destroy(void **fortran_type_c);
4326 
4327 }
4328 
4330  double* ts_intensity_;
4331  int ts_intensity__f_shapes[3];
4333 
4335  int ts_mean_intensity__f_shapes[3];
4337 
4339  int ts_flux_integral__f_shapes[3];
4341 
4343  int ts_dnflux_direct__f_shapes[2];
4345 
4347  int ts_dnmean_direct__f_shapes[2];
4349 
4351  int ts_fourier_saved__f_shapes[1];
4353 
4356 
4358  int ts_solarbeam_boatrans__f_shapes[1];
4360 
4361 
4362 };
4363 
4364 // Links to type: "lidort_main_outputs" from module: "lidort_outputs_def" in file: "lidort_outputs_def.f90"
4366 public:
4367  // Allocating constructor
4369  lidort_main_outputs_c_alloc_init(&transfer_struct_c, &fortran_type_c);
4370  link_blitz_arrays();
4371  link_nested_types();
4372  }
4373 
4374  // Linked to other data structure
4375  Lidort_Main_Outputs(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
4376  lidort_main_outputs_c_init_only(&transfer_struct_c, &fortran_type_c);
4377  link_blitz_arrays();
4378  link_nested_types();
4379  }
4380 
4381  // Deallocate
4383  if (owns_pointer)
4384  lidort_main_outputs_c_destroy(&fortran_type_c);
4385  }
4386 
4387  const blitz::Array<double, 3>& ts_intensity() const {
4388  return ts_intensity_;
4389  }
4390 
4391  void ts_intensity(const blitz::Array<double, 3>& ts_intensity_in) {
4392  ts_intensity_ = ts_intensity_in;
4393  }
4394 
4395 
4396  const blitz::Array<double, 3>& ts_mean_intensity() const {
4397  return ts_mean_intensity_;
4398  }
4399 
4400  void ts_mean_intensity(const blitz::Array<double, 3>& ts_mean_intensity_in) {
4401  ts_mean_intensity_ = ts_mean_intensity_in;
4402  }
4403 
4404 
4405  const blitz::Array<double, 3>& ts_flux_integral() const {
4406  return ts_flux_integral_;
4407  }
4408 
4409  void ts_flux_integral(const blitz::Array<double, 3>& ts_flux_integral_in) {
4410  ts_flux_integral_ = ts_flux_integral_in;
4411  }
4412 
4413 
4414  const blitz::Array<double, 2>& ts_dnflux_direct() const {
4415  return ts_dnflux_direct_;
4416  }
4417 
4418  void ts_dnflux_direct(const blitz::Array<double, 2>& ts_dnflux_direct_in) {
4419  ts_dnflux_direct_ = ts_dnflux_direct_in;
4420  }
4421 
4422 
4423  const blitz::Array<double, 2>& ts_dnmean_direct() const {
4424  return ts_dnmean_direct_;
4425  }
4426 
4427  void ts_dnmean_direct(const blitz::Array<double, 2>& ts_dnmean_direct_in) {
4428  ts_dnmean_direct_ = ts_dnmean_direct_in;
4429  }
4430 
4431 
4432  const blitz::Array<int, 1>& ts_fourier_saved() const {
4433  return ts_fourier_saved_;
4434  }
4435 
4436  void ts_fourier_saved(const blitz::Array<int, 1>& ts_fourier_saved_in) {
4437  ts_fourier_saved_ = ts_fourier_saved_in;
4438  }
4439 
4440 
4441  const int& ts_n_geometries() const {
4442  return *transfer_struct_c.ts_n_geometries_;
4443  }
4444 
4445  void ts_n_geometries(const int& ts_n_geometries_in) {
4446  *transfer_struct_c.ts_n_geometries_ = ts_n_geometries_in;
4447  }
4448 
4449 
4450  const blitz::Array<double, 1>& ts_solarbeam_boatrans() const {
4451  return ts_solarbeam_boatrans_;
4452  }
4453 
4454  void ts_solarbeam_boatrans(const blitz::Array<double, 1>& ts_solarbeam_boatrans_in) {
4455  ts_solarbeam_boatrans_ = ts_solarbeam_boatrans_in;
4456  }
4457 
4458 
4459 
4460 
4461 
4462  virtual void print(std::ostream &output_stream) const {
4463  output_stream << "Lidort_Main_Outputs:" << std::endl
4464  << " ts_intensity: " << std::endl << ts_intensity() << std::endl
4465  << " ts_mean_intensity: " << std::endl << ts_mean_intensity() << std::endl
4466  << " ts_flux_integral: " << std::endl << ts_flux_integral() << std::endl
4467  << " ts_dnflux_direct: " << std::endl << ts_dnflux_direct() << std::endl
4468  << " ts_dnmean_direct: " << std::endl << ts_dnmean_direct() << std::endl
4469  << " ts_fourier_saved: " << std::endl << ts_fourier_saved() << std::endl
4470  << " ts_n_geometries: " << ts_n_geometries() << std::endl
4471  << "ts_solarbeam_boatrans: " << std::endl << ts_solarbeam_boatrans() << std::endl;
4472 
4473  }
4474 
4476  BYTE_SIZE_ERROR_CHECK("ts_intensity_",sizeof(*transfer_struct_c.ts_intensity_),transfer_struct_c.ts_intensity__f_byte_size);
4477  BYTE_SIZE_ERROR_CHECK("ts_mean_intensity_",sizeof(*transfer_struct_c.ts_mean_intensity_),transfer_struct_c.ts_mean_intensity__f_byte_size);
4478  BYTE_SIZE_ERROR_CHECK("ts_flux_integral_",sizeof(*transfer_struct_c.ts_flux_integral_),transfer_struct_c.ts_flux_integral__f_byte_size);
4479  BYTE_SIZE_ERROR_CHECK("ts_dnflux_direct_",sizeof(*transfer_struct_c.ts_dnflux_direct_),transfer_struct_c.ts_dnflux_direct__f_byte_size);
4480  BYTE_SIZE_ERROR_CHECK("ts_dnmean_direct_",sizeof(*transfer_struct_c.ts_dnmean_direct_),transfer_struct_c.ts_dnmean_direct__f_byte_size);
4481  BYTE_SIZE_ERROR_CHECK("ts_fourier_saved_",sizeof(*transfer_struct_c.ts_fourier_saved_),transfer_struct_c.ts_fourier_saved__f_byte_size);
4482  BYTE_SIZE_ERROR_CHECK("ts_n_geometries_",sizeof(*transfer_struct_c.ts_n_geometries_),transfer_struct_c.ts_n_geometries__f_byte_size);
4483  BYTE_SIZE_ERROR_CHECK("ts_solarbeam_boatrans_",sizeof(*transfer_struct_c.ts_solarbeam_boatrans_),transfer_struct_c.ts_solarbeam_boatrans__f_byte_size);
4484 
4485  }
4486 
4487 private:
4488  void link_blitz_arrays() {
4489  ts_intensity_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_intensity_,
4490  blitz::shape(transfer_struct_c.ts_intensity__f_shapes[0],
4491  transfer_struct_c.ts_intensity__f_shapes[1],
4492  transfer_struct_c.ts_intensity__f_shapes[2]),
4493  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
4494  ts_mean_intensity_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_mean_intensity_,
4495  blitz::shape(transfer_struct_c.ts_mean_intensity__f_shapes[0],
4496  transfer_struct_c.ts_mean_intensity__f_shapes[1],
4497  transfer_struct_c.ts_mean_intensity__f_shapes[2]),
4498  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
4499  ts_flux_integral_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_flux_integral_,
4500  blitz::shape(transfer_struct_c.ts_flux_integral__f_shapes[0],
4501  transfer_struct_c.ts_flux_integral__f_shapes[1],
4502  transfer_struct_c.ts_flux_integral__f_shapes[2]),
4503  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
4504  ts_dnflux_direct_.reference(blitz::Array<double, 2>(transfer_struct_c.ts_dnflux_direct_,
4505  blitz::shape(transfer_struct_c.ts_dnflux_direct__f_shapes[0],
4506  transfer_struct_c.ts_dnflux_direct__f_shapes[1]),
4507  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
4508  ts_dnmean_direct_.reference(blitz::Array<double, 2>(transfer_struct_c.ts_dnmean_direct_,
4509  blitz::shape(transfer_struct_c.ts_dnmean_direct__f_shapes[0],
4510  transfer_struct_c.ts_dnmean_direct__f_shapes[1]),
4511  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
4512  ts_fourier_saved_.reference(blitz::Array<int, 1>(transfer_struct_c.ts_fourier_saved_,
4513  blitz::shape(transfer_struct_c.ts_fourier_saved__f_shapes[0]),
4514  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
4515  ts_solarbeam_boatrans_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_solarbeam_boatrans_,
4516  blitz::shape(transfer_struct_c.ts_solarbeam_boatrans__f_shapes[0]),
4517  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
4518 
4519  }
4520 
4521  void link_nested_types() {
4522 
4523  }
4524 
4525  struct lidort_main_outputs transfer_struct_c;
4526 
4527  blitz::Array<double, 3> ts_intensity_;
4528  blitz::Array<double, 3> ts_mean_intensity_;
4529  blitz::Array<double, 3> ts_flux_integral_;
4530  blitz::Array<double, 2> ts_dnflux_direct_;
4531  blitz::Array<double, 2> ts_dnmean_direct_;
4532  blitz::Array<int, 1> ts_fourier_saved_;
4533  blitz::Array<double, 1> ts_solarbeam_boatrans_;
4534 
4535 };
4536 
4537 // Links to type: "lidort_exception_handling" from module: "lidort_outputs_def" in file: "lidort_outputs_def.f90"
4538 extern "C" {
4539  void lidort_exception_handling_c_alloc_init(struct lidort_exception_handling *transfer_struct_c, void **fortran_type_c);
4540  void lidort_exception_handling_c_init_only(struct lidort_exception_handling *transfer_struct_c, void **fortran_type_c);
4541  void lidort_exception_handling_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
4542  void lidort_exception_handling_c_destroy(void **fortran_type_c);
4543  void exception_handling_ts_checkmessages_get(void **fortran_type_c, const int* ts_checkmessages_in_shape_1, const int* ts_checkmessages_in_len, const char* ts_checkmessages_in);
4544  void exception_handling_ts_actions_get(void **fortran_type_c, const int* ts_actions_in_shape_1, const int* ts_actions_in_len, const char* ts_actions_in);
4545  void exception_handling_ts_message_get(void **fortran_type_c, const int* ts_message_in_len, const char* ts_message_in);
4546  void exception_handling_ts_trace_1_get(void **fortran_type_c, const int* ts_trace_1_in_len, const char* ts_trace_1_in);
4547  void exception_handling_ts_trace_2_get(void **fortran_type_c, const int* ts_trace_2_in_len, const char* ts_trace_2_in);
4548  void exception_handling_ts_trace_3_get(void **fortran_type_c, const int* ts_trace_3_in_len, const char* ts_trace_3_in);
4549 
4550 }
4551 
4555 
4558 
4559 
4560  int ts_checkmessages__f_shapes[1];
4562 
4563 
4564  int ts_actions__f_shapes[1];
4566 
4569 
4570 
4572 
4573 
4575 
4576 
4578 
4579 
4581 
4582 
4583 };
4584 
4585 // Links to type: "lidort_exception_handling" from module: "lidort_outputs_def" in file: "lidort_outputs_def.f90"
4587 public:
4588  // Allocating constructor
4590  lidort_exception_handling_c_alloc_init(&transfer_struct_c, &fortran_type_c);
4591  link_blitz_arrays();
4592  link_nested_types();
4593  }
4594 
4595  // Linked to other data structure
4596  Lidort_Exception_Handling(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
4597  lidort_exception_handling_c_init_only(&transfer_struct_c, &fortran_type_c);
4598  link_blitz_arrays();
4599  link_nested_types();
4600  }
4601 
4602  // Deallocate
4604  if (owns_pointer)
4605  lidort_exception_handling_c_destroy(&fortran_type_c);
4606  }
4607 
4608  const int& ts_status_inputcheck() const {
4609  return *transfer_struct_c.ts_status_inputcheck_;
4610  }
4611 
4612  void ts_status_inputcheck(const int& ts_status_inputcheck_in) {
4613  *transfer_struct_c.ts_status_inputcheck_ = ts_status_inputcheck_in;
4614  }
4615 
4616 
4617  const int& ts_ncheckmessages() const {
4618  return *transfer_struct_c.ts_ncheckmessages_;
4619  }
4620 
4621  void ts_ncheckmessages(const int& ts_ncheckmessages_in) {
4622  *transfer_struct_c.ts_ncheckmessages_ = ts_ncheckmessages_in;
4623  }
4624 
4625 
4626  const std::vector< std::string > ts_checkmessages() const {
4627  std::vector< std::string > ts_checkmessages_ret;
4628  blitz::Array<char, 2> ts_checkmessages_lcl = blitz::Array<char, 2>(transfer_struct_c.ts_checkmessages__f_shapes[0], transfer_struct_c.ts_checkmessages__f_len+1, blitz::ColumnMajorArray<2>());
4629  exception_handling_ts_checkmessages_get(const_cast<void**>(&fortran_type_c), &transfer_struct_c.ts_checkmessages__f_shapes[0], &transfer_struct_c.ts_checkmessages__f_len, ts_checkmessages_lcl.dataFirst());
4630  for(int dim_0_idx = 0; dim_0_idx < ts_checkmessages_lcl.extent(0); dim_0_idx++)
4631  ts_checkmessages_ret.push_back( std::string(std::string(ts_checkmessages_lcl(dim_0_idx, blitz::Range::all()).begin(), ts_checkmessages_lcl(dim_0_idx, blitz::Range::all()).end()).c_str()) );
4632  return ts_checkmessages_ret;
4633  }
4634 
4635 
4636  const std::vector< std::string > ts_actions() const {
4637  std::vector< std::string > ts_actions_ret;
4638  blitz::Array<char, 2> ts_actions_lcl = blitz::Array<char, 2>(transfer_struct_c.ts_actions__f_shapes[0], transfer_struct_c.ts_actions__f_len+1, blitz::ColumnMajorArray<2>());
4639  exception_handling_ts_actions_get(const_cast<void**>(&fortran_type_c), &transfer_struct_c.ts_actions__f_shapes[0], &transfer_struct_c.ts_actions__f_len, ts_actions_lcl.dataFirst());
4640  for(int dim_0_idx = 0; dim_0_idx < ts_actions_lcl.extent(0); dim_0_idx++)
4641  ts_actions_ret.push_back( std::string(std::string(ts_actions_lcl(dim_0_idx, blitz::Range::all()).begin(), ts_actions_lcl(dim_0_idx, blitz::Range::all()).end()).c_str()) );
4642  return ts_actions_ret;
4643  }
4644 
4645 
4646  const int& ts_status_calculation() const {
4647  return *transfer_struct_c.ts_status_calculation_;
4648  }
4649 
4650  void ts_status_calculation(const int& ts_status_calculation_in) {
4651  *transfer_struct_c.ts_status_calculation_ = ts_status_calculation_in;
4652  }
4653 
4654 
4655  const std::string ts_message() const {
4656  std::string ts_message_ret;
4657  blitz::Array<char, 1> ts_message_lcl = blitz::Array<char, 1>(transfer_struct_c.ts_message__f_len+1, blitz::ColumnMajorArray<1>());
4658  exception_handling_ts_message_get(const_cast<void**>(&fortran_type_c), &transfer_struct_c.ts_message__f_len, ts_message_lcl.dataFirst());
4659  ts_message_ret = ( std::string(std::string(ts_message_lcl(blitz::Range::all()).begin(), ts_message_lcl(blitz::Range::all()).end()).c_str()) );
4660  return ts_message_ret;
4661  }
4662 
4663 
4664  const std::string ts_trace_1() const {
4665  std::string ts_trace_1_ret;
4666  blitz::Array<char, 1> ts_trace_1_lcl = blitz::Array<char, 1>(transfer_struct_c.ts_trace_1__f_len+1, blitz::ColumnMajorArray<1>());
4667  exception_handling_ts_trace_1_get(const_cast<void**>(&fortran_type_c), &transfer_struct_c.ts_trace_1__f_len, ts_trace_1_lcl.dataFirst());
4668  ts_trace_1_ret = ( std::string(std::string(ts_trace_1_lcl(blitz::Range::all()).begin(), ts_trace_1_lcl(blitz::Range::all()).end()).c_str()) );
4669  return ts_trace_1_ret;
4670  }
4671 
4672 
4673  const std::string ts_trace_2() const {
4674  std::string ts_trace_2_ret;
4675  blitz::Array<char, 1> ts_trace_2_lcl = blitz::Array<char, 1>(transfer_struct_c.ts_trace_2__f_len+1, blitz::ColumnMajorArray<1>());
4676  exception_handling_ts_trace_2_get(const_cast<void**>(&fortran_type_c), &transfer_struct_c.ts_trace_2__f_len, ts_trace_2_lcl.dataFirst());
4677  ts_trace_2_ret = ( std::string(std::string(ts_trace_2_lcl(blitz::Range::all()).begin(), ts_trace_2_lcl(blitz::Range::all()).end()).c_str()) );
4678  return ts_trace_2_ret;
4679  }
4680 
4681 
4682  const std::string ts_trace_3() const {
4683  std::string ts_trace_3_ret;
4684  blitz::Array<char, 1> ts_trace_3_lcl = blitz::Array<char, 1>(transfer_struct_c.ts_trace_3__f_len+1, blitz::ColumnMajorArray<1>());
4685  exception_handling_ts_trace_3_get(const_cast<void**>(&fortran_type_c), &transfer_struct_c.ts_trace_3__f_len, ts_trace_3_lcl.dataFirst());
4686  ts_trace_3_ret = ( std::string(std::string(ts_trace_3_lcl(blitz::Range::all()).begin(), ts_trace_3_lcl(blitz::Range::all()).end()).c_str()) );
4687  return ts_trace_3_ret;
4688  }
4689 
4690 
4691 
4692 
4693 
4694  virtual void print(std::ostream &output_stream) const {
4695  output_stream << "Lidort_Exception_Handling:" << std::endl
4696  << " ts_status_inputcheck: " << ts_status_inputcheck() << std::endl
4697  << " ts_ncheckmessages: " << ts_ncheckmessages() << std::endl
4698  << " ts_checkmessages: " << std::endl;
4699  std::vector< std::string > ts_checkmessages_lcl = ts_checkmessages();
4700  for(unsigned int idx = 0; idx < ts_checkmessages_lcl.size(); idx++)
4701  if ( ts_checkmessages_lcl[idx].length() > 0 )
4702  output_stream << " [" << idx << "]: \"" << ts_checkmessages_lcl[idx] << "\"" << std::endl;
4703  output_stream
4704  << " ts_actions: " << std::endl;
4705  std::vector< std::string > ts_actions_lcl = ts_actions();
4706  for(unsigned int idx = 0; idx < ts_actions_lcl.size(); idx++)
4707  if ( ts_actions_lcl[idx].length() > 0 )
4708  output_stream << " [" << idx << "]: \"" << ts_actions_lcl[idx] << "\"" << std::endl;
4709  output_stream
4710  << "ts_status_calculation: " << ts_status_calculation() << std::endl
4711  << " ts_message: " << "\"" << ts_message() << "\"" << std::endl
4712  << " ts_trace_1: " << "\"" << ts_trace_1() << "\"" << std::endl
4713  << " ts_trace_2: " << "\"" << ts_trace_2() << "\"" << std::endl
4714  << " ts_trace_3: " << "\"" << ts_trace_3() << "\"" << std::endl;
4715 
4716  }
4717 
4719  BYTE_SIZE_ERROR_CHECK("ts_status_inputcheck_",sizeof(*transfer_struct_c.ts_status_inputcheck_),transfer_struct_c.ts_status_inputcheck__f_byte_size);
4720  BYTE_SIZE_ERROR_CHECK("ts_ncheckmessages_",sizeof(*transfer_struct_c.ts_ncheckmessages_),transfer_struct_c.ts_ncheckmessages__f_byte_size);
4721  BYTE_SIZE_ERROR_CHECK("ts_status_calculation_",sizeof(*transfer_struct_c.ts_status_calculation_),transfer_struct_c.ts_status_calculation__f_byte_size);
4722 
4723  }
4724 
4725 private:
4726  void link_blitz_arrays() {
4727 
4728  }
4729 
4730  void link_nested_types() {
4731 
4732  }
4733 
4734  struct lidort_exception_handling transfer_struct_c;
4735 
4736 
4737 };
4738 
4739 // Links to type: "lidort_input_exception_handling" from module: "lidort_outputs_def" in file: "lidort_outputs_def.f90"
4740 extern "C" {
4741  void lidort_input_exception_handling_c_alloc_init(struct lidort_input_exception_handling *transfer_struct_c, void **fortran_type_c);
4742  void lidort_input_exception_handling_c_init_only(struct lidort_input_exception_handling *transfer_struct_c, void **fortran_type_c);
4743  void lidort_input_exception_handling_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
4744  void lidort_input_exception_handling_c_destroy(void **fortran_type_c);
4745  void input_exception_handling_ts_inputmessages_get(void **fortran_type_c, const int* ts_inputmessages_in_shape_1, const int* ts_inputmessages_in_len, const char* ts_inputmessages_in);
4746  void input_exception_handling_ts_inputactions_get(void **fortran_type_c, const int* ts_inputactions_in_shape_1, const int* ts_inputactions_in_len, const char* ts_inputactions_in);
4747 
4748 }
4749 
4753 
4756 
4757 
4758  int ts_inputmessages__f_shapes[1];
4760 
4761 
4762  int ts_inputactions__f_shapes[1];
4764 
4765 
4766 };
4767 
4768 // Links to type: "lidort_input_exception_handling" from module: "lidort_outputs_def" in file: "lidort_outputs_def.f90"
4770 public:
4771  // Allocating constructor
4773  lidort_input_exception_handling_c_alloc_init(&transfer_struct_c, &fortran_type_c);
4774  link_blitz_arrays();
4775  link_nested_types();
4776  }
4777 
4778  // Linked to other data structure
4779  Lidort_Input_Exception_Handling(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
4780  lidort_input_exception_handling_c_init_only(&transfer_struct_c, &fortran_type_c);
4781  link_blitz_arrays();
4782  link_nested_types();
4783  }
4784 
4785  // Deallocate
4787  if (owns_pointer)
4789  }
4790 
4791  const int& ts_status_inputread() const {
4792  return *transfer_struct_c.ts_status_inputread_;
4793  }
4794 
4795  void ts_status_inputread(const int& ts_status_inputread_in) {
4796  *transfer_struct_c.ts_status_inputread_ = ts_status_inputread_in;
4797  }
4798 
4799 
4800  const int& ts_ninputmessages() const {
4801  return *transfer_struct_c.ts_ninputmessages_;
4802  }
4803 
4804  void ts_ninputmessages(const int& ts_ninputmessages_in) {
4805  *transfer_struct_c.ts_ninputmessages_ = ts_ninputmessages_in;
4806  }
4807 
4808 
4809  const std::vector< std::string > ts_inputmessages() const {
4810  std::vector< std::string > ts_inputmessages_ret;
4811  blitz::Array<char, 2> ts_inputmessages_lcl = blitz::Array<char, 2>(transfer_struct_c.ts_inputmessages__f_shapes[0], transfer_struct_c.ts_inputmessages__f_len+1, blitz::ColumnMajorArray<2>());
4812  input_exception_handling_ts_inputmessages_get(const_cast<void**>(&fortran_type_c), &transfer_struct_c.ts_inputmessages__f_shapes[0], &transfer_struct_c.ts_inputmessages__f_len, ts_inputmessages_lcl.dataFirst());
4813  for(int dim_0_idx = 0; dim_0_idx < ts_inputmessages_lcl.extent(0); dim_0_idx++)
4814  ts_inputmessages_ret.push_back( std::string(std::string(ts_inputmessages_lcl(dim_0_idx, blitz::Range::all()).begin(), ts_inputmessages_lcl(dim_0_idx, blitz::Range::all()).end()).c_str()) );
4815  return ts_inputmessages_ret;
4816  }
4817 
4818 
4819  const std::vector< std::string > ts_inputactions() const {
4820  std::vector< std::string > ts_inputactions_ret;
4821  blitz::Array<char, 2> ts_inputactions_lcl = blitz::Array<char, 2>(transfer_struct_c.ts_inputactions__f_shapes[0], transfer_struct_c.ts_inputactions__f_len+1, blitz::ColumnMajorArray<2>());
4822  input_exception_handling_ts_inputactions_get(const_cast<void**>(&fortran_type_c), &transfer_struct_c.ts_inputactions__f_shapes[0], &transfer_struct_c.ts_inputactions__f_len, ts_inputactions_lcl.dataFirst());
4823  for(int dim_0_idx = 0; dim_0_idx < ts_inputactions_lcl.extent(0); dim_0_idx++)
4824  ts_inputactions_ret.push_back( std::string(std::string(ts_inputactions_lcl(dim_0_idx, blitz::Range::all()).begin(), ts_inputactions_lcl(dim_0_idx, blitz::Range::all()).end()).c_str()) );
4825  return ts_inputactions_ret;
4826  }
4827 
4828 
4829 
4830 
4831 
4832  virtual void print(std::ostream &output_stream) const {
4833  output_stream << "Lidort_Input_Exception_Handling:" << std::endl
4834  << "ts_status_inputread: " << ts_status_inputread() << std::endl
4835  << " ts_ninputmessages: " << ts_ninputmessages() << std::endl
4836  << " ts_inputmessages: " << std::endl;
4837  std::vector< std::string > ts_inputmessages_lcl = ts_inputmessages();
4838  for(unsigned int idx = 0; idx < ts_inputmessages_lcl.size(); idx++)
4839  if ( ts_inputmessages_lcl[idx].length() > 0 )
4840  output_stream << " [" << idx << "]: \"" << ts_inputmessages_lcl[idx] << "\"" << std::endl;
4841  output_stream
4842  << " ts_inputactions: " << std::endl;
4843  std::vector< std::string > ts_inputactions_lcl = ts_inputactions();
4844  for(unsigned int idx = 0; idx < ts_inputactions_lcl.size(); idx++)
4845  if ( ts_inputactions_lcl[idx].length() > 0 )
4846  output_stream << " [" << idx << "]: \"" << ts_inputactions_lcl[idx] << "\"" << std::endl;
4847  }
4848 
4850  BYTE_SIZE_ERROR_CHECK("ts_status_inputread_",sizeof(*transfer_struct_c.ts_status_inputread_),transfer_struct_c.ts_status_inputread__f_byte_size);
4851  BYTE_SIZE_ERROR_CHECK("ts_ninputmessages_",sizeof(*transfer_struct_c.ts_ninputmessages_),transfer_struct_c.ts_ninputmessages__f_byte_size);
4852 
4853  }
4854 
4855 private:
4856  void link_blitz_arrays() {
4857 
4858  }
4859 
4860  void link_nested_types() {
4861 
4862  }
4863 
4864  struct lidort_input_exception_handling transfer_struct_c;
4865 
4866 
4867 };
4868 
4869 // Links to type: "lidort_outputs" from module: "lidort_outputs_def" in file: "lidort_outputs_def.f90"
4870 extern "C" {
4871  void lidort_outputs_c_alloc_init(struct lidort_outputs *transfer_struct_c, void **fortran_type_c);
4872  void lidort_outputs_c_init_only(struct lidort_outputs *transfer_struct_c, void **fortran_type_c);
4873  void lidort_outputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
4874  void lidort_outputs_c_destroy(void **fortran_type_c);
4875 
4876 }
4877 
4879  void* main_;
4881 
4882  void* status_;
4884 
4885 
4886 };
4887 
4888 // Links to type: "lidort_outputs" from module: "lidort_outputs_def" in file: "lidort_outputs_def.f90"
4890 public:
4891  // Allocating constructor
4893  lidort_outputs_c_alloc_init(&transfer_struct_c, &fortran_type_c);
4894  link_blitz_arrays();
4895  link_nested_types();
4896  }
4897 
4898  // Linked to other data structure
4899  Lidort_Outputs(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
4900  lidort_outputs_c_init_only(&transfer_struct_c, &fortran_type_c);
4901  link_blitz_arrays();
4902  link_nested_types();
4903  }
4904 
4905  // Deallocate
4907  if (owns_pointer)
4908  lidort_outputs_c_destroy(&fortran_type_c);
4909  }
4910 
4912  return *main_;
4913  }
4914 
4915  const Lidort_Main_Outputs& main() const {
4916  return *main_;
4917  }
4918 
4919  void main(Lidort_Main_Outputs& main_in) {
4920  void* src_ptr = main_in.fortran_type_ptr();
4921  void* dst_ptr = main_->fortran_type_ptr();
4922  lidort_main_outputs_c_copy(&src_ptr, &dst_ptr);
4923  }
4924 
4925 
4927  return *status_;
4928  }
4929 
4931  return *status_;
4932  }
4933 
4935  void* src_ptr = status_in.fortran_type_ptr();
4936  void* dst_ptr = status_->fortran_type_ptr();
4937  lidort_exception_handling_c_copy(&src_ptr, &dst_ptr);
4938  }
4939 
4940 
4941 
4942 
4943 
4944  virtual void print(std::ostream &output_stream) const {
4945  output_stream << "Lidort_Outputs:" << std::endl
4946  << " main: " << main() << std::endl
4947  << "status: " << status() << std::endl;
4948 
4949  }
4950 
4952 
4953  }
4954 
4955 private:
4956  void link_blitz_arrays() {
4957 
4958  }
4959 
4960  void link_nested_types() {
4961  main_.reset( new Lidort_Main_Outputs(transfer_struct_c.main_) );
4962  status_.reset( new Lidort_Exception_Handling(transfer_struct_c.status_) );
4963 
4964  }
4965 
4966  struct lidort_outputs transfer_struct_c;
4967 
4970 
4971 };
4972 
4973 // Links to type: "lidort_sup_brdf" from module: "lidort_sup_brdf_def" in file: "lidort_sup_brdf_def.f90"
4974 extern "C" {
4975  void lidort_sup_brdf_c_alloc_init(struct lidort_sup_brdf *transfer_struct_c, void **fortran_type_c);
4976  void lidort_sup_brdf_c_init_only(struct lidort_sup_brdf *transfer_struct_c, void **fortran_type_c);
4977  void lidort_sup_brdf_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
4978  void lidort_sup_brdf_c_destroy(void **fortran_type_c);
4979 
4980 }
4981 
4984  int ts_exactdb_brdfunc__f_shapes[3];
4986 
4987  double* ts_brdf_f_0_;
4988  int ts_brdf_f_0__f_shapes[3];
4990 
4991  double* ts_brdf_f_;
4992  int ts_brdf_f__f_shapes[3];
4994 
4996  int ts_user_brdf_f_0__f_shapes[3];
4998 
5000  int ts_user_brdf_f__f_shapes[3];
5002 
5004  int ts_emissivity__f_shapes[1];
5006 
5008  int ts_user_emissivity__f_shapes[1];
5010 
5011 
5012 };
5013 
5014 // Links to type: "lidort_sup_brdf" from module: "lidort_sup_brdf_def" in file: "lidort_sup_brdf_def.f90"
5016 public:
5017  // Allocating constructor
5019  lidort_sup_brdf_c_alloc_init(&transfer_struct_c, &fortran_type_c);
5020  link_blitz_arrays();
5021  link_nested_types();
5022  }
5023 
5024  // Linked to other data structure
5025  Lidort_Sup_Brdf(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
5026  lidort_sup_brdf_c_init_only(&transfer_struct_c, &fortran_type_c);
5027  link_blitz_arrays();
5028  link_nested_types();
5029  }
5030 
5031  // Deallocate
5033  if (owns_pointer)
5034  lidort_sup_brdf_c_destroy(&fortran_type_c);
5035  }
5036 
5037  const blitz::Array<double, 3>& ts_exactdb_brdfunc() const {
5038  return ts_exactdb_brdfunc_;
5039  }
5040 
5041  void ts_exactdb_brdfunc(const blitz::Array<double, 3>& ts_exactdb_brdfunc_in) {
5042  ts_exactdb_brdfunc_ = ts_exactdb_brdfunc_in;
5043  }
5044 
5045 
5046  const blitz::Array<double, 3>& ts_brdf_f_0() const {
5047  return ts_brdf_f_0_;
5048  }
5049 
5050  void ts_brdf_f_0(const blitz::Array<double, 3>& ts_brdf_f_0_in) {
5051  ts_brdf_f_0_ = ts_brdf_f_0_in;
5052  }
5053 
5054 
5055  const blitz::Array<double, 3>& ts_brdf_f() const {
5056  return ts_brdf_f_;
5057  }
5058 
5059  void ts_brdf_f(const blitz::Array<double, 3>& ts_brdf_f_in) {
5060  ts_brdf_f_ = ts_brdf_f_in;
5061  }
5062 
5063 
5064  const blitz::Array<double, 3>& ts_user_brdf_f_0() const {
5065  return ts_user_brdf_f_0_;
5066  }
5067 
5068  void ts_user_brdf_f_0(const blitz::Array<double, 3>& ts_user_brdf_f_0_in) {
5069  ts_user_brdf_f_0_ = ts_user_brdf_f_0_in;
5070  }
5071 
5072 
5073  const blitz::Array<double, 3>& ts_user_brdf_f() const {
5074  return ts_user_brdf_f_;
5075  }
5076 
5077  void ts_user_brdf_f(const blitz::Array<double, 3>& ts_user_brdf_f_in) {
5078  ts_user_brdf_f_ = ts_user_brdf_f_in;
5079  }
5080 
5081 
5082  const blitz::Array<double, 1>& ts_emissivity() const {
5083  return ts_emissivity_;
5084  }
5085 
5086  void ts_emissivity(const blitz::Array<double, 1>& ts_emissivity_in) {
5087  ts_emissivity_ = ts_emissivity_in;
5088  }
5089 
5090 
5091  const blitz::Array<double, 1>& ts_user_emissivity() const {
5092  return ts_user_emissivity_;
5093  }
5094 
5095  void ts_user_emissivity(const blitz::Array<double, 1>& ts_user_emissivity_in) {
5096  ts_user_emissivity_ = ts_user_emissivity_in;
5097  }
5098 
5099 
5100 
5101 
5102 
5103  virtual void print(std::ostream &output_stream) const {
5104  output_stream << "Lidort_Sup_Brdf:" << std::endl
5105  << "ts_exactdb_brdfunc: " << std::endl << ts_exactdb_brdfunc() << std::endl
5106  << " ts_brdf_f_0: " << std::endl << ts_brdf_f_0() << std::endl
5107  << " ts_brdf_f: " << std::endl << ts_brdf_f() << std::endl
5108  << " ts_user_brdf_f_0: " << std::endl << ts_user_brdf_f_0() << std::endl
5109  << " ts_user_brdf_f: " << std::endl << ts_user_brdf_f() << std::endl
5110  << " ts_emissivity: " << std::endl << ts_emissivity() << std::endl
5111  << "ts_user_emissivity: " << std::endl << ts_user_emissivity() << std::endl;
5112 
5113  }
5114 
5116  BYTE_SIZE_ERROR_CHECK("ts_exactdb_brdfunc_",sizeof(*transfer_struct_c.ts_exactdb_brdfunc_),transfer_struct_c.ts_exactdb_brdfunc__f_byte_size);
5117  BYTE_SIZE_ERROR_CHECK("ts_brdf_f_0_",sizeof(*transfer_struct_c.ts_brdf_f_0_),transfer_struct_c.ts_brdf_f_0__f_byte_size);
5118  BYTE_SIZE_ERROR_CHECK("ts_brdf_f_",sizeof(*transfer_struct_c.ts_brdf_f_),transfer_struct_c.ts_brdf_f__f_byte_size);
5119  BYTE_SIZE_ERROR_CHECK("ts_user_brdf_f_0_",sizeof(*transfer_struct_c.ts_user_brdf_f_0_),transfer_struct_c.ts_user_brdf_f_0__f_byte_size);
5120  BYTE_SIZE_ERROR_CHECK("ts_user_brdf_f_",sizeof(*transfer_struct_c.ts_user_brdf_f_),transfer_struct_c.ts_user_brdf_f__f_byte_size);
5121  BYTE_SIZE_ERROR_CHECK("ts_emissivity_",sizeof(*transfer_struct_c.ts_emissivity_),transfer_struct_c.ts_emissivity__f_byte_size);
5122  BYTE_SIZE_ERROR_CHECK("ts_user_emissivity_",sizeof(*transfer_struct_c.ts_user_emissivity_),transfer_struct_c.ts_user_emissivity__f_byte_size);
5123 
5124  }
5125 
5126  void copy_from_sup(Brdf_Sup_Outputs& supp_obj) {
5127  // This is only safe for LIDORT 3.6 because the BRDF and LIDORT
5128  // sup structures are the exact same structure, but with different
5129  // names. This MUST be reevaluated on future LIDORT versions
5130  void* sup_ptr = supp_obj.fortran_type_ptr();
5131  lidort_sup_brdf_c_copy(&sup_ptr, &fortran_type_c);
5132  }
5133 
5134 
5135 private:
5136  void link_blitz_arrays() {
5137  ts_exactdb_brdfunc_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_exactdb_brdfunc_,
5138  blitz::shape(transfer_struct_c.ts_exactdb_brdfunc__f_shapes[0],
5139  transfer_struct_c.ts_exactdb_brdfunc__f_shapes[1],
5140  transfer_struct_c.ts_exactdb_brdfunc__f_shapes[2]),
5141  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
5142  ts_brdf_f_0_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_brdf_f_0_,
5143  blitz::shape(transfer_struct_c.ts_brdf_f_0__f_shapes[0],
5144  transfer_struct_c.ts_brdf_f_0__f_shapes[1],
5145  transfer_struct_c.ts_brdf_f_0__f_shapes[2]),
5146  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
5147  ts_brdf_f_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_brdf_f_,
5148  blitz::shape(transfer_struct_c.ts_brdf_f__f_shapes[0],
5149  transfer_struct_c.ts_brdf_f__f_shapes[1],
5150  transfer_struct_c.ts_brdf_f__f_shapes[2]),
5151  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
5152  ts_user_brdf_f_0_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_user_brdf_f_0_,
5153  blitz::shape(transfer_struct_c.ts_user_brdf_f_0__f_shapes[0],
5154  transfer_struct_c.ts_user_brdf_f_0__f_shapes[1],
5155  transfer_struct_c.ts_user_brdf_f_0__f_shapes[2]),
5156  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
5157  ts_user_brdf_f_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_user_brdf_f_,
5158  blitz::shape(transfer_struct_c.ts_user_brdf_f__f_shapes[0],
5159  transfer_struct_c.ts_user_brdf_f__f_shapes[1],
5160  transfer_struct_c.ts_user_brdf_f__f_shapes[2]),
5161  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
5162  ts_emissivity_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_emissivity_,
5163  blitz::shape(transfer_struct_c.ts_emissivity__f_shapes[0]),
5164  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
5165  ts_user_emissivity_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_user_emissivity_,
5166  blitz::shape(transfer_struct_c.ts_user_emissivity__f_shapes[0]),
5167  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
5168 
5169  }
5170 
5171  void link_nested_types() {
5172 
5173  }
5174 
5175  struct lidort_sup_brdf transfer_struct_c;
5176 
5177  blitz::Array<double, 3> ts_exactdb_brdfunc_;
5178  blitz::Array<double, 3> ts_brdf_f_0_;
5179  blitz::Array<double, 3> ts_brdf_f_;
5180  blitz::Array<double, 3> ts_user_brdf_f_0_;
5181  blitz::Array<double, 3> ts_user_brdf_f_;
5182  blitz::Array<double, 1> ts_emissivity_;
5183  blitz::Array<double, 1> ts_user_emissivity_;
5184 
5185 };
5186 
5187 // Links to type: "lidort_sup_sleave" from module: "lidort_sup_sleave_def" in file: "lidort_sup_sleave_def.f90"
5188 extern "C" {
5189  void lidort_sup_sleave_c_alloc_init(struct lidort_sup_sleave *transfer_struct_c, void **fortran_type_c);
5190  void lidort_sup_sleave_c_init_only(struct lidort_sup_sleave *transfer_struct_c, void **fortran_type_c);
5191  void lidort_sup_sleave_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
5192  void lidort_sup_sleave_c_destroy(void **fortran_type_c);
5193 
5194 }
5195 
5198  int ts_slterm_isotropic__f_shapes[1];
5200 
5202  int ts_slterm_userangles__f_shapes[3];
5204 
5206  int ts_slterm_f_0__f_shapes[3];
5208 
5210  int ts_user_slterm_f_0__f_shapes[3];
5212 
5213 
5214 };
5215 
5216 // Links to type: "lidort_sup_sleave" from module: "lidort_sup_sleave_def" in file: "lidort_sup_sleave_def.f90"
5218 public:
5219  // Allocating constructor
5221  lidort_sup_sleave_c_alloc_init(&transfer_struct_c, &fortran_type_c);
5222  link_blitz_arrays();
5223  link_nested_types();
5224  }
5225 
5226  // Linked to other data structure
5227  Lidort_Sup_Sleave(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
5228  lidort_sup_sleave_c_init_only(&transfer_struct_c, &fortran_type_c);
5229  link_blitz_arrays();
5230  link_nested_types();
5231  }
5232 
5233  // Deallocate
5235  if (owns_pointer)
5236  lidort_sup_sleave_c_destroy(&fortran_type_c);
5237  }
5238 
5239  const blitz::Array<double, 1>& ts_slterm_isotropic() const {
5240  return ts_slterm_isotropic_;
5241  }
5242 
5243  void ts_slterm_isotropic(const blitz::Array<double, 1>& ts_slterm_isotropic_in) {
5244  ts_slterm_isotropic_ = ts_slterm_isotropic_in;
5245  }
5246 
5247 
5248  const blitz::Array<double, 3>& ts_slterm_userangles() const {
5249  return ts_slterm_userangles_;
5250  }
5251 
5252  void ts_slterm_userangles(const blitz::Array<double, 3>& ts_slterm_userangles_in) {
5253  ts_slterm_userangles_ = ts_slterm_userangles_in;
5254  }
5255 
5256 
5257  const blitz::Array<double, 3>& ts_slterm_f_0() const {
5258  return ts_slterm_f_0_;
5259  }
5260 
5261  void ts_slterm_f_0(const blitz::Array<double, 3>& ts_slterm_f_0_in) {
5262  ts_slterm_f_0_ = ts_slterm_f_0_in;
5263  }
5264 
5265 
5266  const blitz::Array<double, 3>& ts_user_slterm_f_0() const {
5267  return ts_user_slterm_f_0_;
5268  }
5269 
5270  void ts_user_slterm_f_0(const blitz::Array<double, 3>& ts_user_slterm_f_0_in) {
5271  ts_user_slterm_f_0_ = ts_user_slterm_f_0_in;
5272  }
5273 
5274 
5275 
5276 
5277 
5278  virtual void print(std::ostream &output_stream) const {
5279  output_stream << "Lidort_Sup_Sleave:" << std::endl
5280  << " ts_slterm_isotropic: " << std::endl << ts_slterm_isotropic() << std::endl
5281  << "ts_slterm_userangles: " << std::endl << ts_slterm_userangles() << std::endl
5282  << " ts_slterm_f_0: " << std::endl << ts_slterm_f_0() << std::endl
5283  << " ts_user_slterm_f_0: " << std::endl << ts_user_slterm_f_0() << std::endl;
5284 
5285  }
5286 
5288  BYTE_SIZE_ERROR_CHECK("ts_slterm_isotropic_",sizeof(*transfer_struct_c.ts_slterm_isotropic_),transfer_struct_c.ts_slterm_isotropic__f_byte_size);
5289  BYTE_SIZE_ERROR_CHECK("ts_slterm_userangles_",sizeof(*transfer_struct_c.ts_slterm_userangles_),transfer_struct_c.ts_slterm_userangles__f_byte_size);
5290  BYTE_SIZE_ERROR_CHECK("ts_slterm_f_0_",sizeof(*transfer_struct_c.ts_slterm_f_0_),transfer_struct_c.ts_slterm_f_0__f_byte_size);
5291  BYTE_SIZE_ERROR_CHECK("ts_user_slterm_f_0_",sizeof(*transfer_struct_c.ts_user_slterm_f_0_),transfer_struct_c.ts_user_slterm_f_0__f_byte_size);
5292 
5293  }
5294 
5295 private:
5296  void link_blitz_arrays() {
5297  ts_slterm_isotropic_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_slterm_isotropic_,
5298  blitz::shape(transfer_struct_c.ts_slterm_isotropic__f_shapes[0]),
5299  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
5300  ts_slterm_userangles_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_slterm_userangles_,
5301  blitz::shape(transfer_struct_c.ts_slterm_userangles__f_shapes[0],
5302  transfer_struct_c.ts_slterm_userangles__f_shapes[1],
5303  transfer_struct_c.ts_slterm_userangles__f_shapes[2]),
5304  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
5305  ts_slterm_f_0_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_slterm_f_0_,
5306  blitz::shape(transfer_struct_c.ts_slterm_f_0__f_shapes[0],
5307  transfer_struct_c.ts_slterm_f_0__f_shapes[1],
5308  transfer_struct_c.ts_slterm_f_0__f_shapes[2]),
5309  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
5310  ts_user_slterm_f_0_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_user_slterm_f_0_,
5311  blitz::shape(transfer_struct_c.ts_user_slterm_f_0__f_shapes[0],
5312  transfer_struct_c.ts_user_slterm_f_0__f_shapes[1],
5313  transfer_struct_c.ts_user_slterm_f_0__f_shapes[2]),
5314  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
5315 
5316  }
5317 
5318  void link_nested_types() {
5319 
5320  }
5321 
5322  struct lidort_sup_sleave transfer_struct_c;
5323 
5324  blitz::Array<double, 1> ts_slterm_isotropic_;
5325  blitz::Array<double, 3> ts_slterm_userangles_;
5326  blitz::Array<double, 3> ts_slterm_f_0_;
5327  blitz::Array<double, 3> ts_user_slterm_f_0_;
5328 
5329 };
5330 
5331 // Links to type: "lidort_sup_ss" from module: "lidort_sup_ss_def" in file: "lidort_sup_ss_def.f90"
5332 extern "C" {
5333  void lidort_sup_ss_c_alloc_init(struct lidort_sup_ss *transfer_struct_c, void **fortran_type_c);
5334  void lidort_sup_ss_c_init_only(struct lidort_sup_ss *transfer_struct_c, void **fortran_type_c);
5335  void lidort_sup_ss_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
5336  void lidort_sup_ss_c_destroy(void **fortran_type_c);
5337 
5338 }
5339 
5342  int ts_intensity_ss__f_shapes[3];
5344 
5346  int ts_intensity_db__f_shapes[2];
5348 
5349 
5350 };
5351 
5352 // Links to type: "lidort_sup_ss" from module: "lidort_sup_ss_def" in file: "lidort_sup_ss_def.f90"
5354 public:
5355  // Allocating constructor
5357  lidort_sup_ss_c_alloc_init(&transfer_struct_c, &fortran_type_c);
5358  link_blitz_arrays();
5359  link_nested_types();
5360  }
5361 
5362  // Linked to other data structure
5363  Lidort_Sup_Ss(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
5364  lidort_sup_ss_c_init_only(&transfer_struct_c, &fortran_type_c);
5365  link_blitz_arrays();
5366  link_nested_types();
5367  }
5368 
5369  // Deallocate
5371  if (owns_pointer)
5372  lidort_sup_ss_c_destroy(&fortran_type_c);
5373  }
5374 
5375  const blitz::Array<double, 3>& ts_intensity_ss() const {
5376  return ts_intensity_ss_;
5377  }
5378 
5379  void ts_intensity_ss(const blitz::Array<double, 3>& ts_intensity_ss_in) {
5380  ts_intensity_ss_ = ts_intensity_ss_in;
5381  }
5382 
5383 
5384  const blitz::Array<double, 2>& ts_intensity_db() const {
5385  return ts_intensity_db_;
5386  }
5387 
5388  void ts_intensity_db(const blitz::Array<double, 2>& ts_intensity_db_in) {
5389  ts_intensity_db_ = ts_intensity_db_in;
5390  }
5391 
5392 
5393 
5394 
5395 
5396  virtual void print(std::ostream &output_stream) const {
5397  output_stream << "Lidort_Sup_Ss:" << std::endl
5398  << "ts_intensity_ss: " << std::endl << ts_intensity_ss() << std::endl
5399  << "ts_intensity_db: " << std::endl << ts_intensity_db() << std::endl;
5400 
5401  }
5402 
5404  BYTE_SIZE_ERROR_CHECK("ts_intensity_ss_",sizeof(*transfer_struct_c.ts_intensity_ss_),transfer_struct_c.ts_intensity_ss__f_byte_size);
5405  BYTE_SIZE_ERROR_CHECK("ts_intensity_db_",sizeof(*transfer_struct_c.ts_intensity_db_),transfer_struct_c.ts_intensity_db__f_byte_size);
5406 
5407  }
5408 
5409 private:
5410  void link_blitz_arrays() {
5411  ts_intensity_ss_.reference(blitz::Array<double, 3>(transfer_struct_c.ts_intensity_ss_,
5412  blitz::shape(transfer_struct_c.ts_intensity_ss__f_shapes[0],
5413  transfer_struct_c.ts_intensity_ss__f_shapes[1],
5414  transfer_struct_c.ts_intensity_ss__f_shapes[2]),
5415  blitz::neverDeleteData, blitz::ColumnMajorArray<3>()));
5416  ts_intensity_db_.reference(blitz::Array<double, 2>(transfer_struct_c.ts_intensity_db_,
5417  blitz::shape(transfer_struct_c.ts_intensity_db__f_shapes[0],
5418  transfer_struct_c.ts_intensity_db__f_shapes[1]),
5419  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
5420 
5421  }
5422 
5423  void link_nested_types() {
5424 
5425  }
5426 
5427  struct lidort_sup_ss transfer_struct_c;
5428 
5429  blitz::Array<double, 3> ts_intensity_ss_;
5430  blitz::Array<double, 2> ts_intensity_db_;
5431 
5432 };
5433 
5434 // Links to type: "lidort_sup_inout" from module: "lidort_sup_inout_def" in file: "lidort_sup_def.f90"
5435 extern "C" {
5436  void lidort_sup_inout_c_alloc_init(struct lidort_sup_inout *transfer_struct_c, void **fortran_type_c);
5437  void lidort_sup_inout_c_init_only(struct lidort_sup_inout *transfer_struct_c, void **fortran_type_c);
5438  void lidort_sup_inout_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
5439  void lidort_sup_inout_c_destroy(void **fortran_type_c);
5440 
5441 }
5442 
5444  void* brdf_;
5446 
5447  void* ss_;
5449 
5450  void* sleave_;
5452 
5453 
5454 };
5455 
5456 // Links to type: "lidort_sup_inout" from module: "lidort_sup_inout_def" in file: "lidort_sup_def.f90"
5458 public:
5459  // Allocating constructor
5461  lidort_sup_inout_c_alloc_init(&transfer_struct_c, &fortran_type_c);
5462  link_blitz_arrays();
5463  link_nested_types();
5464  }
5465 
5466  // Linked to other data structure
5467  Lidort_Sup_Inout(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
5468  lidort_sup_inout_c_init_only(&transfer_struct_c, &fortran_type_c);
5469  link_blitz_arrays();
5470  link_nested_types();
5471  }
5472 
5473  // Deallocate
5475  if (owns_pointer)
5476  lidort_sup_inout_c_destroy(&fortran_type_c);
5477  }
5478 
5480  return *brdf_;
5481  }
5482 
5483  const Lidort_Sup_Brdf& brdf() const {
5484  return *brdf_;
5485  }
5486 
5487  void brdf(Lidort_Sup_Brdf& brdf_in) {
5488  void* src_ptr = brdf_in.fortran_type_ptr();
5489  void* dst_ptr = brdf_->fortran_type_ptr();
5490  lidort_sup_brdf_c_copy(&src_ptr, &dst_ptr);
5491  }
5492 
5493 
5495  return *ss_;
5496  }
5497 
5498  const Lidort_Sup_Ss& ss() const {
5499  return *ss_;
5500  }
5501 
5502  void ss(Lidort_Sup_Ss& ss_in) {
5503  void* src_ptr = ss_in.fortran_type_ptr();
5504  void* dst_ptr = ss_->fortran_type_ptr();
5505  lidort_sup_ss_c_copy(&src_ptr, &dst_ptr);
5506  }
5507 
5508 
5510  return *sleave_;
5511  }
5512 
5513  const Lidort_Sup_Sleave& sleave() const {
5514  return *sleave_;
5515  }
5516 
5517  void sleave(Lidort_Sup_Sleave& sleave_in) {
5518  void* src_ptr = sleave_in.fortran_type_ptr();
5519  void* dst_ptr = sleave_->fortran_type_ptr();
5520  lidort_sup_sleave_c_copy(&src_ptr, &dst_ptr);
5521  }
5522 
5523 
5524 
5525 
5526 
5527  virtual void print(std::ostream &output_stream) const {
5528  output_stream << "Lidort_Sup_Inout:" << std::endl
5529  << " brdf: " << brdf() << std::endl
5530  << " ss: " << ss() << std::endl
5531  << "sleave: " << sleave() << std::endl;
5532 
5533  }
5534 
5536 
5537  }
5538 
5539 private:
5540  void link_blitz_arrays() {
5541 
5542  }
5543 
5544  void link_nested_types() {
5545  brdf_.reset( new Lidort_Sup_Brdf(transfer_struct_c.brdf_) );
5546  ss_.reset( new Lidort_Sup_Ss(transfer_struct_c.ss_) );
5547  sleave_.reset( new Lidort_Sup_Sleave(transfer_struct_c.sleave_) );
5548 
5549  }
5550 
5551  struct lidort_sup_inout transfer_struct_c;
5552 
5556 
5557 };
5558 
5559 // Links to type: "lidort_fixed_boolean" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
5560 extern "C" {
5561  void lidort_fixed_boolean_c_alloc_init(struct lidort_fixed_boolean *transfer_struct_c, void **fortran_type_c);
5562  void lidort_fixed_boolean_c_init_only(struct lidort_fixed_boolean *transfer_struct_c, void **fortran_type_c);
5563  void lidort_fixed_boolean_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
5564  void lidort_fixed_boolean_c_destroy(void **fortran_type_c);
5565 
5566 }
5567 
5571 
5574 
5577 
5580 
5583 
5586 
5589 
5592 
5595 
5598 
5601 
5604 
5605 
5606 };
5607 
5608 // Links to type: "lidort_fixed_boolean" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
5610 public:
5611  // Allocating constructor
5613  lidort_fixed_boolean_c_alloc_init(&transfer_struct_c, &fortran_type_c);
5614  link_blitz_arrays();
5615  link_nested_types();
5616  }
5617 
5618  // Linked to other data structure
5619  Lidort_Fixed_Boolean(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
5620  lidort_fixed_boolean_c_init_only(&transfer_struct_c, &fortran_type_c);
5621  link_blitz_arrays();
5622  link_nested_types();
5623  }
5624 
5625  // Deallocate
5627  if (owns_pointer)
5628  lidort_fixed_boolean_c_destroy(&fortran_type_c);
5629  }
5630 
5631  const bool ts_do_fullrad_mode() const {
5632  return *transfer_struct_c.ts_do_fullrad_mode_ != 0;
5633  }
5634 
5635  void ts_do_fullrad_mode(const bool& ts_do_fullrad_mode_in) {
5636  *transfer_struct_c.ts_do_fullrad_mode_ = ts_do_fullrad_mode_in ? FORTRAN_TRUE_INT : 0;
5637  }
5638 
5639 
5640  const bool ts_do_sscorr_truncation() const {
5641  return *transfer_struct_c.ts_do_sscorr_truncation_ != 0;
5642  }
5643 
5644  void ts_do_sscorr_truncation(const bool& ts_do_sscorr_truncation_in) {
5645  *transfer_struct_c.ts_do_sscorr_truncation_ = ts_do_sscorr_truncation_in ? FORTRAN_TRUE_INT : 0;
5646  }
5647 
5648 
5649  const bool ts_do_ss_external() const {
5650  return *transfer_struct_c.ts_do_ss_external_ != 0;
5651  }
5652 
5653  void ts_do_ss_external(const bool& ts_do_ss_external_in) {
5654  *transfer_struct_c.ts_do_ss_external_ = ts_do_ss_external_in ? FORTRAN_TRUE_INT : 0;
5655  }
5656 
5657 
5658  const bool ts_do_ssfull() const {
5659  return *transfer_struct_c.ts_do_ssfull_ != 0;
5660  }
5661 
5662  void ts_do_ssfull(const bool& ts_do_ssfull_in) {
5663  *transfer_struct_c.ts_do_ssfull_ = ts_do_ssfull_in ? FORTRAN_TRUE_INT : 0;
5664  }
5665 
5666 
5667  const bool ts_do_thermal_emission() const {
5668  return *transfer_struct_c.ts_do_thermal_emission_ != 0;
5669  }
5670 
5671  void ts_do_thermal_emission(const bool& ts_do_thermal_emission_in) {
5672  *transfer_struct_c.ts_do_thermal_emission_ = ts_do_thermal_emission_in ? FORTRAN_TRUE_INT : 0;
5673  }
5674 
5675 
5676  const bool ts_do_surface_emission() const {
5677  return *transfer_struct_c.ts_do_surface_emission_ != 0;
5678  }
5679 
5680  void ts_do_surface_emission(const bool& ts_do_surface_emission_in) {
5681  *transfer_struct_c.ts_do_surface_emission_ = ts_do_surface_emission_in ? FORTRAN_TRUE_INT : 0;
5682  }
5683 
5684 
5685  const bool ts_do_plane_parallel() const {
5686  return *transfer_struct_c.ts_do_plane_parallel_ != 0;
5687  }
5688 
5689  void ts_do_plane_parallel(const bool& ts_do_plane_parallel_in) {
5690  *transfer_struct_c.ts_do_plane_parallel_ = ts_do_plane_parallel_in ? FORTRAN_TRUE_INT : 0;
5691  }
5692 
5693 
5694  const bool ts_do_brdf_surface() const {
5695  return *transfer_struct_c.ts_do_brdf_surface_ != 0;
5696  }
5697 
5698  void ts_do_brdf_surface(const bool& ts_do_brdf_surface_in) {
5699  *transfer_struct_c.ts_do_brdf_surface_ = ts_do_brdf_surface_in ? FORTRAN_TRUE_INT : 0;
5700  }
5701 
5702 
5703  const bool ts_do_upwelling() const {
5704  return *transfer_struct_c.ts_do_upwelling_ != 0;
5705  }
5706 
5707  void ts_do_upwelling(const bool& ts_do_upwelling_in) {
5708  *transfer_struct_c.ts_do_upwelling_ = ts_do_upwelling_in ? FORTRAN_TRUE_INT : 0;
5709  }
5710 
5711 
5712  const bool ts_do_dnwelling() const {
5713  return *transfer_struct_c.ts_do_dnwelling_ != 0;
5714  }
5715 
5716  void ts_do_dnwelling(const bool& ts_do_dnwelling_in) {
5717  *transfer_struct_c.ts_do_dnwelling_ = ts_do_dnwelling_in ? FORTRAN_TRUE_INT : 0;
5718  }
5719 
5720 
5721  const bool ts_do_surface_leaving() const {
5722  return *transfer_struct_c.ts_do_surface_leaving_ != 0;
5723  }
5724 
5725  void ts_do_surface_leaving(const bool& ts_do_surface_leaving_in) {
5726  *transfer_struct_c.ts_do_surface_leaving_ = ts_do_surface_leaving_in ? FORTRAN_TRUE_INT : 0;
5727  }
5728 
5729 
5730  const bool ts_do_sl_isotropic() const {
5731  return *transfer_struct_c.ts_do_sl_isotropic_ != 0;
5732  }
5733 
5734  void ts_do_sl_isotropic(const bool& ts_do_sl_isotropic_in) {
5735  *transfer_struct_c.ts_do_sl_isotropic_ = ts_do_sl_isotropic_in ? FORTRAN_TRUE_INT : 0;
5736  }
5737 
5738 
5739 
5740 
5741 
5742  virtual void print(std::ostream &output_stream) const {
5743  output_stream << "Lidort_Fixed_Boolean:" << std::endl
5744  << " ts_do_fullrad_mode: " << ts_do_fullrad_mode() << std::endl
5745  << "ts_do_sscorr_truncation: " << ts_do_sscorr_truncation() << std::endl
5746  << " ts_do_ss_external: " << ts_do_ss_external() << std::endl
5747  << " ts_do_ssfull: " << ts_do_ssfull() << std::endl
5748  << " ts_do_thermal_emission: " << ts_do_thermal_emission() << std::endl
5749  << " ts_do_surface_emission: " << ts_do_surface_emission() << std::endl
5750  << " ts_do_plane_parallel: " << ts_do_plane_parallel() << std::endl
5751  << " ts_do_brdf_surface: " << ts_do_brdf_surface() << std::endl
5752  << " ts_do_upwelling: " << ts_do_upwelling() << std::endl
5753  << " ts_do_dnwelling: " << ts_do_dnwelling() << std::endl
5754  << " ts_do_surface_leaving: " << ts_do_surface_leaving() << std::endl
5755  << " ts_do_sl_isotropic: " << ts_do_sl_isotropic() << std::endl;
5756 
5757  }
5758 
5760  BYTE_SIZE_ERROR_CHECK("ts_do_fullrad_mode_",sizeof(*transfer_struct_c.ts_do_fullrad_mode_),transfer_struct_c.ts_do_fullrad_mode__f_byte_size);
5761  BYTE_SIZE_ERROR_CHECK("ts_do_sscorr_truncation_",sizeof(*transfer_struct_c.ts_do_sscorr_truncation_),transfer_struct_c.ts_do_sscorr_truncation__f_byte_size);
5762  BYTE_SIZE_ERROR_CHECK("ts_do_ss_external_",sizeof(*transfer_struct_c.ts_do_ss_external_),transfer_struct_c.ts_do_ss_external__f_byte_size);
5763  BYTE_SIZE_ERROR_CHECK("ts_do_ssfull_",sizeof(*transfer_struct_c.ts_do_ssfull_),transfer_struct_c.ts_do_ssfull__f_byte_size);
5764  BYTE_SIZE_ERROR_CHECK("ts_do_thermal_emission_",sizeof(*transfer_struct_c.ts_do_thermal_emission_),transfer_struct_c.ts_do_thermal_emission__f_byte_size);
5765  BYTE_SIZE_ERROR_CHECK("ts_do_surface_emission_",sizeof(*transfer_struct_c.ts_do_surface_emission_),transfer_struct_c.ts_do_surface_emission__f_byte_size);
5766  BYTE_SIZE_ERROR_CHECK("ts_do_plane_parallel_",sizeof(*transfer_struct_c.ts_do_plane_parallel_),transfer_struct_c.ts_do_plane_parallel__f_byte_size);
5767  BYTE_SIZE_ERROR_CHECK("ts_do_brdf_surface_",sizeof(*transfer_struct_c.ts_do_brdf_surface_),transfer_struct_c.ts_do_brdf_surface__f_byte_size);
5768  BYTE_SIZE_ERROR_CHECK("ts_do_upwelling_",sizeof(*transfer_struct_c.ts_do_upwelling_),transfer_struct_c.ts_do_upwelling__f_byte_size);
5769  BYTE_SIZE_ERROR_CHECK("ts_do_dnwelling_",sizeof(*transfer_struct_c.ts_do_dnwelling_),transfer_struct_c.ts_do_dnwelling__f_byte_size);
5770  BYTE_SIZE_ERROR_CHECK("ts_do_surface_leaving_",sizeof(*transfer_struct_c.ts_do_surface_leaving_),transfer_struct_c.ts_do_surface_leaving__f_byte_size);
5771  BYTE_SIZE_ERROR_CHECK("ts_do_sl_isotropic_",sizeof(*transfer_struct_c.ts_do_sl_isotropic_),transfer_struct_c.ts_do_sl_isotropic__f_byte_size);
5772 
5773  }
5774 
5775 private:
5776  void link_blitz_arrays() {
5777 
5778  }
5779 
5780  void link_nested_types() {
5781 
5782  }
5783 
5784  struct lidort_fixed_boolean transfer_struct_c;
5785 
5786 
5787 };
5788 
5789 // Links to type: "lidort_fixed_control" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
5790 extern "C" {
5791  void lidort_fixed_control_c_alloc_init(struct lidort_fixed_control *transfer_struct_c, void **fortran_type_c);
5792  void lidort_fixed_control_c_init_only(struct lidort_fixed_control *transfer_struct_c, void **fortran_type_c);
5793  void lidort_fixed_control_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
5794  void lidort_fixed_control_c_destroy(void **fortran_type_c);
5795 
5796 }
5797 
5801 
5804 
5807 
5810 
5813 
5816 
5819 
5820 
5821 };
5822 
5823 // Links to type: "lidort_fixed_control" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
5825 public:
5826  // Allocating constructor
5828  lidort_fixed_control_c_alloc_init(&transfer_struct_c, &fortran_type_c);
5829  link_blitz_arrays();
5830  link_nested_types();
5831  }
5832 
5833  // Linked to other data structure
5834  Lidort_Fixed_Control(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
5835  lidort_fixed_control_c_init_only(&transfer_struct_c, &fortran_type_c);
5836  link_blitz_arrays();
5837  link_nested_types();
5838  }
5839 
5840  // Deallocate
5842  if (owns_pointer)
5843  lidort_fixed_control_c_destroy(&fortran_type_c);
5844  }
5845 
5846  const double& ts_thermal_cutoff() const {
5847  return *transfer_struct_c.ts_thermal_cutoff_;
5848  }
5849 
5850  void ts_thermal_cutoff(const double& ts_thermal_cutoff_in) {
5851  *transfer_struct_c.ts_thermal_cutoff_ = ts_thermal_cutoff_in;
5852  }
5853 
5854 
5855  const int& ts_taylor_order() const {
5856  return *transfer_struct_c.ts_taylor_order_;
5857  }
5858 
5859  void ts_taylor_order(const int& ts_taylor_order_in) {
5860  *transfer_struct_c.ts_taylor_order_ = ts_taylor_order_in;
5861  }
5862 
5863 
5864  const int& ts_nstreams() const {
5865  return *transfer_struct_c.ts_nstreams_;
5866  }
5867 
5868  void ts_nstreams(const int& ts_nstreams_in) {
5869  *transfer_struct_c.ts_nstreams_ = ts_nstreams_in;
5870  }
5871 
5872 
5873  const int& ts_nlayers() const {
5874  return *transfer_struct_c.ts_nlayers_;
5875  }
5876 
5877  void ts_nlayers(const int& ts_nlayers_in) {
5878  *transfer_struct_c.ts_nlayers_ = ts_nlayers_in;
5879  }
5880 
5881 
5882  const int& ts_nfinelayers() const {
5883  return *transfer_struct_c.ts_nfinelayers_;
5884  }
5885 
5886  void ts_nfinelayers(const int& ts_nfinelayers_in) {
5887  *transfer_struct_c.ts_nfinelayers_ = ts_nfinelayers_in;
5888  }
5889 
5890 
5891  const int& ts_n_thermal_coeffs() const {
5892  return *transfer_struct_c.ts_n_thermal_coeffs_;
5893  }
5894 
5895  void ts_n_thermal_coeffs(const int& ts_n_thermal_coeffs_in) {
5896  *transfer_struct_c.ts_n_thermal_coeffs_ = ts_n_thermal_coeffs_in;
5897  }
5898 
5899 
5900  const double& ts_lidort_accuracy() const {
5901  return *transfer_struct_c.ts_lidort_accuracy_;
5902  }
5903 
5904  void ts_lidort_accuracy(const double& ts_lidort_accuracy_in) {
5905  *transfer_struct_c.ts_lidort_accuracy_ = ts_lidort_accuracy_in;
5906  }
5907 
5908 
5909 
5910 
5911 
5912  virtual void print(std::ostream &output_stream) const {
5913  output_stream << "Lidort_Fixed_Control:" << std::endl
5914  << " ts_thermal_cutoff: " << ts_thermal_cutoff() << std::endl
5915  << " ts_taylor_order: " << ts_taylor_order() << std::endl
5916  << " ts_nstreams: " << ts_nstreams() << std::endl
5917  << " ts_nlayers: " << ts_nlayers() << std::endl
5918  << " ts_nfinelayers: " << ts_nfinelayers() << std::endl
5919  << "ts_n_thermal_coeffs: " << ts_n_thermal_coeffs() << std::endl
5920  << " ts_lidort_accuracy: " << ts_lidort_accuracy() << std::endl;
5921 
5922  }
5923 
5925  BYTE_SIZE_ERROR_CHECK("ts_thermal_cutoff_",sizeof(*transfer_struct_c.ts_thermal_cutoff_),transfer_struct_c.ts_thermal_cutoff__f_byte_size);
5926  BYTE_SIZE_ERROR_CHECK("ts_taylor_order_",sizeof(*transfer_struct_c.ts_taylor_order_),transfer_struct_c.ts_taylor_order__f_byte_size);
5927  BYTE_SIZE_ERROR_CHECK("ts_nstreams_",sizeof(*transfer_struct_c.ts_nstreams_),transfer_struct_c.ts_nstreams__f_byte_size);
5928  BYTE_SIZE_ERROR_CHECK("ts_nlayers_",sizeof(*transfer_struct_c.ts_nlayers_),transfer_struct_c.ts_nlayers__f_byte_size);
5929  BYTE_SIZE_ERROR_CHECK("ts_nfinelayers_",sizeof(*transfer_struct_c.ts_nfinelayers_),transfer_struct_c.ts_nfinelayers__f_byte_size);
5930  BYTE_SIZE_ERROR_CHECK("ts_n_thermal_coeffs_",sizeof(*transfer_struct_c.ts_n_thermal_coeffs_),transfer_struct_c.ts_n_thermal_coeffs__f_byte_size);
5931  BYTE_SIZE_ERROR_CHECK("ts_lidort_accuracy_",sizeof(*transfer_struct_c.ts_lidort_accuracy_),transfer_struct_c.ts_lidort_accuracy__f_byte_size);
5932 
5933  }
5934 
5935 private:
5936  void link_blitz_arrays() {
5937 
5938  }
5939 
5940  void link_nested_types() {
5941 
5942  }
5943 
5944  struct lidort_fixed_control transfer_struct_c;
5945 
5946 
5947 };
5948 
5949 // Links to type: "lidort_fixed_sunrays" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
5950 extern "C" {
5951  void lidort_fixed_sunrays_c_alloc_init(struct lidort_fixed_sunrays *transfer_struct_c, void **fortran_type_c);
5952  void lidort_fixed_sunrays_c_init_only(struct lidort_fixed_sunrays *transfer_struct_c, void **fortran_type_c);
5953  void lidort_fixed_sunrays_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
5954  void lidort_fixed_sunrays_c_destroy(void **fortran_type_c);
5955 
5956 }
5957 
5961 
5962 
5963 };
5964 
5965 // Links to type: "lidort_fixed_sunrays" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
5967 public:
5968  // Allocating constructor
5970  lidort_fixed_sunrays_c_alloc_init(&transfer_struct_c, &fortran_type_c);
5971  link_blitz_arrays();
5972  link_nested_types();
5973  }
5974 
5975  // Linked to other data structure
5976  Lidort_Fixed_Sunrays(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
5977  lidort_fixed_sunrays_c_init_only(&transfer_struct_c, &fortran_type_c);
5978  link_blitz_arrays();
5979  link_nested_types();
5980  }
5981 
5982  // Deallocate
5984  if (owns_pointer)
5985  lidort_fixed_sunrays_c_destroy(&fortran_type_c);
5986  }
5987 
5988  const double& ts_flux_factor() const {
5989  return *transfer_struct_c.ts_flux_factor_;
5990  }
5991 
5992  void ts_flux_factor(const double& ts_flux_factor_in) {
5993  *transfer_struct_c.ts_flux_factor_ = ts_flux_factor_in;
5994  }
5995 
5996 
5997 
5998 
5999 
6000  virtual void print(std::ostream &output_stream) const {
6001  output_stream << "Lidort_Fixed_Sunrays:" << std::endl
6002  << "ts_flux_factor: " << ts_flux_factor() << std::endl;
6003 
6004  }
6005 
6007  BYTE_SIZE_ERROR_CHECK("ts_flux_factor_",sizeof(*transfer_struct_c.ts_flux_factor_),transfer_struct_c.ts_flux_factor__f_byte_size);
6008 
6009  }
6010 
6011 private:
6012  void link_blitz_arrays() {
6013 
6014  }
6015 
6016  void link_nested_types() {
6017 
6018  }
6019 
6020  struct lidort_fixed_sunrays transfer_struct_c;
6021 
6022 
6023 };
6024 
6025 // Links to type: "lidort_fixed_uservalues" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
6026 extern "C" {
6027  void lidort_fixed_uservalues_c_alloc_init(struct lidort_fixed_uservalues *transfer_struct_c, void **fortran_type_c);
6028  void lidort_fixed_uservalues_c_init_only(struct lidort_fixed_uservalues *transfer_struct_c, void **fortran_type_c);
6029  void lidort_fixed_uservalues_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
6030  void lidort_fixed_uservalues_c_destroy(void **fortran_type_c);
6031 
6032 }
6033 
6037 
6038 
6039 };
6040 
6041 // Links to type: "lidort_fixed_uservalues" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
6043 public:
6044  // Allocating constructor
6046  lidort_fixed_uservalues_c_alloc_init(&transfer_struct_c, &fortran_type_c);
6047  link_blitz_arrays();
6048  link_nested_types();
6049  }
6050 
6051  // Linked to other data structure
6052  Lidort_Fixed_Uservalues(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
6053  lidort_fixed_uservalues_c_init_only(&transfer_struct_c, &fortran_type_c);
6054  link_blitz_arrays();
6055  link_nested_types();
6056  }
6057 
6058  // Deallocate
6060  if (owns_pointer)
6061  lidort_fixed_uservalues_c_destroy(&fortran_type_c);
6062  }
6063 
6064  const int& ts_n_user_levels() const {
6065  return *transfer_struct_c.ts_n_user_levels_;
6066  }
6067 
6068  void ts_n_user_levels(const int& ts_n_user_levels_in) {
6069  *transfer_struct_c.ts_n_user_levels_ = ts_n_user_levels_in;
6070  }
6071 
6072 
6073 
6074 
6075 
6076  virtual void print(std::ostream &output_stream) const {
6077  output_stream << "Lidort_Fixed_Uservalues:" << std::endl
6078  << "ts_n_user_levels: " << ts_n_user_levels() << std::endl;
6079 
6080  }
6081 
6083  BYTE_SIZE_ERROR_CHECK("ts_n_user_levels_",sizeof(*transfer_struct_c.ts_n_user_levels_),transfer_struct_c.ts_n_user_levels__f_byte_size);
6084 
6085  }
6086 
6087 private:
6088  void link_blitz_arrays() {
6089 
6090  }
6091 
6092  void link_nested_types() {
6093 
6094  }
6095 
6096  struct lidort_fixed_uservalues transfer_struct_c;
6097 
6098 
6099 };
6100 
6101 // Links to type: "lidort_fixed_chapman" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
6102 extern "C" {
6103  void lidort_fixed_chapman_c_alloc_init(struct lidort_fixed_chapman *transfer_struct_c, void **fortran_type_c);
6104  void lidort_fixed_chapman_c_init_only(struct lidort_fixed_chapman *transfer_struct_c, void **fortran_type_c);
6105  void lidort_fixed_chapman_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
6106  void lidort_fixed_chapman_c_destroy(void **fortran_type_c);
6107 
6108 }
6109 
6112  int ts_height_grid__f_shapes[1];
6114 
6116  int ts_pressure_grid__f_shapes[1];
6118 
6120  int ts_temperature_grid__f_shapes[1];
6122 
6124  int ts_finegrid__f_shapes[1];
6126 
6129 
6130 
6131 };
6132 
6133 // Links to type: "lidort_fixed_chapman" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
6135 public:
6136  // Allocating constructor
6138  lidort_fixed_chapman_c_alloc_init(&transfer_struct_c, &fortran_type_c);
6139  link_blitz_arrays();
6140  link_nested_types();
6141  }
6142 
6143  // Linked to other data structure
6144  Lidort_Fixed_Chapman(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
6145  lidort_fixed_chapman_c_init_only(&transfer_struct_c, &fortran_type_c);
6146  link_blitz_arrays();
6147  link_nested_types();
6148  }
6149 
6150  // Deallocate
6152  if (owns_pointer)
6153  lidort_fixed_chapman_c_destroy(&fortran_type_c);
6154  }
6155 
6156  const blitz::Array<double, 1>& ts_height_grid() const {
6157  return ts_height_grid_;
6158  }
6159 
6160  void ts_height_grid(const blitz::Array<double, 1>& ts_height_grid_in) {
6161  ts_height_grid_ = ts_height_grid_in;
6162  }
6163 
6164 
6165  const blitz::Array<double, 1>& ts_pressure_grid() const {
6166  return ts_pressure_grid_;
6167  }
6168 
6169  void ts_pressure_grid(const blitz::Array<double, 1>& ts_pressure_grid_in) {
6170  ts_pressure_grid_ = ts_pressure_grid_in;
6171  }
6172 
6173 
6174  const blitz::Array<double, 1>& ts_temperature_grid() const {
6175  return ts_temperature_grid_;
6176  }
6177 
6178  void ts_temperature_grid(const blitz::Array<double, 1>& ts_temperature_grid_in) {
6179  ts_temperature_grid_ = ts_temperature_grid_in;
6180  }
6181 
6182 
6183  const blitz::Array<int, 1>& ts_finegrid() const {
6184  return ts_finegrid_;
6185  }
6186 
6187  void ts_finegrid(const blitz::Array<int, 1>& ts_finegrid_in) {
6188  ts_finegrid_ = ts_finegrid_in;
6189  }
6190 
6191 
6192  const double& ts_rfindex_parameter() const {
6193  return *transfer_struct_c.ts_rfindex_parameter_;
6194  }
6195 
6196  void ts_rfindex_parameter(const double& ts_rfindex_parameter_in) {
6197  *transfer_struct_c.ts_rfindex_parameter_ = ts_rfindex_parameter_in;
6198  }
6199 
6200 
6201 
6202 
6203 
6204  virtual void print(std::ostream &output_stream) const {
6205  output_stream << "Lidort_Fixed_Chapman:" << std::endl
6206  << " ts_height_grid: " << std::endl << ts_height_grid() << std::endl
6207  << " ts_pressure_grid: " << std::endl << ts_pressure_grid() << std::endl
6208  << " ts_temperature_grid: " << std::endl << ts_temperature_grid() << std::endl
6209  << " ts_finegrid: " << std::endl << ts_finegrid() << std::endl
6210  << "ts_rfindex_parameter: " << ts_rfindex_parameter() << std::endl;
6211 
6212  }
6213 
6215  BYTE_SIZE_ERROR_CHECK("ts_height_grid_",sizeof(*transfer_struct_c.ts_height_grid_),transfer_struct_c.ts_height_grid__f_byte_size);
6216  BYTE_SIZE_ERROR_CHECK("ts_pressure_grid_",sizeof(*transfer_struct_c.ts_pressure_grid_),transfer_struct_c.ts_pressure_grid__f_byte_size);
6217  BYTE_SIZE_ERROR_CHECK("ts_temperature_grid_",sizeof(*transfer_struct_c.ts_temperature_grid_),transfer_struct_c.ts_temperature_grid__f_byte_size);
6218  BYTE_SIZE_ERROR_CHECK("ts_finegrid_",sizeof(*transfer_struct_c.ts_finegrid_),transfer_struct_c.ts_finegrid__f_byte_size);
6219  BYTE_SIZE_ERROR_CHECK("ts_rfindex_parameter_",sizeof(*transfer_struct_c.ts_rfindex_parameter_),transfer_struct_c.ts_rfindex_parameter__f_byte_size);
6220 
6221  }
6222 
6223 private:
6224  void link_blitz_arrays() {
6225  ts_height_grid_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_height_grid_,
6226  blitz::shape(transfer_struct_c.ts_height_grid__f_shapes[0]),
6227  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
6228  ts_pressure_grid_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_pressure_grid_,
6229  blitz::shape(transfer_struct_c.ts_pressure_grid__f_shapes[0]),
6230  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
6231  ts_temperature_grid_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_temperature_grid_,
6232  blitz::shape(transfer_struct_c.ts_temperature_grid__f_shapes[0]),
6233  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
6234  ts_finegrid_.reference(blitz::Array<int, 1>(transfer_struct_c.ts_finegrid_,
6235  blitz::shape(transfer_struct_c.ts_finegrid__f_shapes[0]),
6236  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
6237 
6238  }
6239 
6240  void link_nested_types() {
6241 
6242  }
6243 
6244  struct lidort_fixed_chapman transfer_struct_c;
6245 
6246  blitz::Array<double, 1> ts_height_grid_;
6247  blitz::Array<double, 1> ts_pressure_grid_;
6248  blitz::Array<double, 1> ts_temperature_grid_;
6249  blitz::Array<int, 1> ts_finegrid_;
6250 
6251 };
6252 
6253 // Links to type: "lidort_fixed_optical" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
6254 extern "C" {
6255  void lidort_fixed_optical_c_alloc_init(struct lidort_fixed_optical *transfer_struct_c, void **fortran_type_c);
6256  void lidort_fixed_optical_c_init_only(struct lidort_fixed_optical *transfer_struct_c, void **fortran_type_c);
6257  void lidort_fixed_optical_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
6258  void lidort_fixed_optical_c_destroy(void **fortran_type_c);
6259 
6260 }
6261 
6264  int ts_deltau_vert_input__f_shapes[1];
6266 
6268  int ts_phasmoms_total_input__f_shapes[2];
6270 
6272  int ts_thermal_bb_input__f_shapes[1];
6274 
6277 
6280 
6281 
6282 };
6283 
6284 // Links to type: "lidort_fixed_optical" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
6286 public:
6287  // Allocating constructor
6289  lidort_fixed_optical_c_alloc_init(&transfer_struct_c, &fortran_type_c);
6290  link_blitz_arrays();
6291  link_nested_types();
6292  }
6293 
6294  // Linked to other data structure
6295  Lidort_Fixed_Optical(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
6296  lidort_fixed_optical_c_init_only(&transfer_struct_c, &fortran_type_c);
6297  link_blitz_arrays();
6298  link_nested_types();
6299  }
6300 
6301  // Deallocate
6303  if (owns_pointer)
6304  lidort_fixed_optical_c_destroy(&fortran_type_c);
6305  }
6306 
6307  const blitz::Array<double, 1>& ts_deltau_vert_input() const {
6308  return ts_deltau_vert_input_;
6309  }
6310 
6311  void ts_deltau_vert_input(const blitz::Array<double, 1>& ts_deltau_vert_input_in) {
6312  ts_deltau_vert_input_ = ts_deltau_vert_input_in;
6313  }
6314 
6315 
6316  const blitz::Array<double, 2>& ts_phasmoms_total_input() const {
6317  return ts_phasmoms_total_input_;
6318  }
6319 
6320  void ts_phasmoms_total_input(const blitz::Array<double, 2>& ts_phasmoms_total_input_in) {
6321  ts_phasmoms_total_input_ = ts_phasmoms_total_input_in;
6322  }
6323 
6324 
6325  const blitz::Array<double, 1>& ts_thermal_bb_input() const {
6326  return ts_thermal_bb_input_;
6327  }
6328 
6329  void ts_thermal_bb_input(const blitz::Array<double, 1>& ts_thermal_bb_input_in) {
6330  ts_thermal_bb_input_ = ts_thermal_bb_input_in;
6331  }
6332 
6333 
6334  const double& ts_lambertian_albedo() const {
6335  return *transfer_struct_c.ts_lambertian_albedo_;
6336  }
6337 
6338  void ts_lambertian_albedo(const double& ts_lambertian_albedo_in) {
6339  *transfer_struct_c.ts_lambertian_albedo_ = ts_lambertian_albedo_in;
6340  }
6341 
6342 
6343  const double& ts_surface_bb_input() const {
6344  return *transfer_struct_c.ts_surface_bb_input_;
6345  }
6346 
6347  void ts_surface_bb_input(const double& ts_surface_bb_input_in) {
6348  *transfer_struct_c.ts_surface_bb_input_ = ts_surface_bb_input_in;
6349  }
6350 
6351 
6352 
6353 
6354 
6355  virtual void print(std::ostream &output_stream) const {
6356  output_stream << "Lidort_Fixed_Optical:" << std::endl
6357  << " ts_deltau_vert_input: " << std::endl << ts_deltau_vert_input() << std::endl
6358  << "ts_phasmoms_total_input: " << std::endl << ts_phasmoms_total_input() << std::endl
6359  << " ts_thermal_bb_input: " << std::endl << ts_thermal_bb_input() << std::endl
6360  << " ts_lambertian_albedo: " << ts_lambertian_albedo() << std::endl
6361  << " ts_surface_bb_input: " << ts_surface_bb_input() << std::endl;
6362 
6363  }
6364 
6366  BYTE_SIZE_ERROR_CHECK("ts_deltau_vert_input_",sizeof(*transfer_struct_c.ts_deltau_vert_input_),transfer_struct_c.ts_deltau_vert_input__f_byte_size);
6367  BYTE_SIZE_ERROR_CHECK("ts_phasmoms_total_input_",sizeof(*transfer_struct_c.ts_phasmoms_total_input_),transfer_struct_c.ts_phasmoms_total_input__f_byte_size);
6368  BYTE_SIZE_ERROR_CHECK("ts_thermal_bb_input_",sizeof(*transfer_struct_c.ts_thermal_bb_input_),transfer_struct_c.ts_thermal_bb_input__f_byte_size);
6369  BYTE_SIZE_ERROR_CHECK("ts_lambertian_albedo_",sizeof(*transfer_struct_c.ts_lambertian_albedo_),transfer_struct_c.ts_lambertian_albedo__f_byte_size);
6370  BYTE_SIZE_ERROR_CHECK("ts_surface_bb_input_",sizeof(*transfer_struct_c.ts_surface_bb_input_),transfer_struct_c.ts_surface_bb_input__f_byte_size);
6371 
6372  }
6373 
6374 private:
6375  void link_blitz_arrays() {
6376  ts_deltau_vert_input_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_deltau_vert_input_,
6377  blitz::shape(transfer_struct_c.ts_deltau_vert_input__f_shapes[0]),
6378  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
6379  ts_phasmoms_total_input_.reference(blitz::Array<double, 2>(transfer_struct_c.ts_phasmoms_total_input_,
6380  blitz::shape(transfer_struct_c.ts_phasmoms_total_input__f_shapes[0],
6381  transfer_struct_c.ts_phasmoms_total_input__f_shapes[1]),
6382  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
6383  ts_thermal_bb_input_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_thermal_bb_input_,
6384  blitz::shape(transfer_struct_c.ts_thermal_bb_input__f_shapes[0]),
6385  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
6386 
6387  }
6388 
6389  void link_nested_types() {
6390 
6391  }
6392 
6393  struct lidort_fixed_optical transfer_struct_c;
6394 
6395  blitz::Array<double, 1> ts_deltau_vert_input_;
6396  blitz::Array<double, 2> ts_phasmoms_total_input_;
6397  blitz::Array<double, 1> ts_thermal_bb_input_;
6398 
6399 };
6400 
6401 // Links to type: "lidort_fixed_inputs" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
6402 extern "C" {
6403  void lidort_fixed_inputs_c_alloc_init(struct lidort_fixed_inputs *transfer_struct_c, void **fortran_type_c);
6404  void lidort_fixed_inputs_c_init_only(struct lidort_fixed_inputs *transfer_struct_c, void **fortran_type_c);
6405  void lidort_fixed_inputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
6406  void lidort_fixed_inputs_c_destroy(void **fortran_type_c);
6407 
6408 }
6409 
6411  void* bool_;
6413 
6414  void* cont_;
6416 
6417  void* sunrays_;
6419 
6420  void* userval_;
6422 
6423  void* chapman_;
6425 
6426  void* optical_;
6428 
6429 
6430 };
6431 
6432 // Links to type: "lidort_fixed_inputs" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
6434 public:
6435  // Allocating constructor
6437  lidort_fixed_inputs_c_alloc_init(&transfer_struct_c, &fortran_type_c);
6438  link_blitz_arrays();
6439  link_nested_types();
6440  }
6441 
6442  // Linked to other data structure
6443  Lidort_Fixed_Inputs(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
6444  lidort_fixed_inputs_c_init_only(&transfer_struct_c, &fortran_type_c);
6445  link_blitz_arrays();
6446  link_nested_types();
6447  }
6448 
6449  // Deallocate
6451  if (owns_pointer)
6452  lidort_fixed_inputs_c_destroy(&fortran_type_c);
6453  }
6454 
6456  return *bool_;
6457  }
6458 
6459  const Lidort_Fixed_Boolean& f_bool() const {
6460  return *bool_;
6461  }
6462 
6463  void f_bool(Lidort_Fixed_Boolean& bool_in) {
6464  void* src_ptr = bool_in.fortran_type_ptr();
6465  void* dst_ptr = bool_->fortran_type_ptr();
6466  lidort_fixed_boolean_c_copy(&src_ptr, &dst_ptr);
6467  }
6468 
6469 
6471  return *cont_;
6472  }
6473 
6474  const Lidort_Fixed_Control& cont() const {
6475  return *cont_;
6476  }
6477 
6478  void cont(Lidort_Fixed_Control& cont_in) {
6479  void* src_ptr = cont_in.fortran_type_ptr();
6480  void* dst_ptr = cont_->fortran_type_ptr();
6481  lidort_fixed_control_c_copy(&src_ptr, &dst_ptr);
6482  }
6483 
6484 
6486  return *sunrays_;
6487  }
6488 
6490  return *sunrays_;
6491  }
6492 
6493  void sunrays(Lidort_Fixed_Sunrays& sunrays_in) {
6494  void* src_ptr = sunrays_in.fortran_type_ptr();
6495  void* dst_ptr = sunrays_->fortran_type_ptr();
6496  lidort_fixed_sunrays_c_copy(&src_ptr, &dst_ptr);
6497  }
6498 
6499 
6501  return *userval_;
6502  }
6503 
6505  return *userval_;
6506  }
6507 
6508  void userval(Lidort_Fixed_Uservalues& userval_in) {
6509  void* src_ptr = userval_in.fortran_type_ptr();
6510  void* dst_ptr = userval_->fortran_type_ptr();
6511  lidort_fixed_uservalues_c_copy(&src_ptr, &dst_ptr);
6512  }
6513 
6514 
6516  return *chapman_;
6517  }
6518 
6520  return *chapman_;
6521  }
6522 
6523  void chapman(Lidort_Fixed_Chapman& chapman_in) {
6524  void* src_ptr = chapman_in.fortran_type_ptr();
6525  void* dst_ptr = chapman_->fortran_type_ptr();
6526  lidort_fixed_chapman_c_copy(&src_ptr, &dst_ptr);
6527  }
6528 
6529 
6531  return *optical_;
6532  }
6533 
6535  return *optical_;
6536  }
6537 
6538  void optical(Lidort_Fixed_Optical& optical_in) {
6539  void* src_ptr = optical_in.fortran_type_ptr();
6540  void* dst_ptr = optical_->fortran_type_ptr();
6541  lidort_fixed_optical_c_copy(&src_ptr, &dst_ptr);
6542  }
6543 
6544 
6545 
6546 
6547 
6548  virtual void print(std::ostream &output_stream) const {
6549  output_stream << "Lidort_Fixed_Inputs:" << std::endl
6550  << " bool: " << f_bool() << std::endl
6551  << " cont: " << cont() << std::endl
6552  << "sunrays: " << sunrays() << std::endl
6553  << "userval: " << userval() << std::endl
6554  << "chapman: " << chapman() << std::endl
6555  << "optical: " << optical() << std::endl;
6556 
6557  }
6558 
6560 
6561  }
6562 
6563 private:
6564  void link_blitz_arrays() {
6565 
6566  }
6567 
6568  void link_nested_types() {
6569  bool_.reset( new Lidort_Fixed_Boolean(transfer_struct_c.bool_) );
6570  cont_.reset( new Lidort_Fixed_Control(transfer_struct_c.cont_) );
6571  sunrays_.reset( new Lidort_Fixed_Sunrays(transfer_struct_c.sunrays_) );
6572  userval_.reset( new Lidort_Fixed_Uservalues(transfer_struct_c.userval_) );
6573  chapman_.reset( new Lidort_Fixed_Chapman(transfer_struct_c.chapman_) );
6574  optical_.reset( new Lidort_Fixed_Optical(transfer_struct_c.optical_) );
6575 
6576  }
6577 
6578  struct lidort_fixed_inputs transfer_struct_c;
6579 
6586 
6587 };
6588 
6589 // Links to type: "lidort_modified_boolean" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
6590 extern "C" {
6591  void lidort_modified_boolean_c_alloc_init(struct lidort_modified_boolean *transfer_struct_c, void **fortran_type_c);
6592  void lidort_modified_boolean_c_init_only(struct lidort_modified_boolean *transfer_struct_c, void **fortran_type_c);
6593  void lidort_modified_boolean_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
6594  void lidort_modified_boolean_c_destroy(void **fortran_type_c);
6595 
6596 }
6597 
6601 
6604 
6607 
6610 
6613 
6616 
6619 
6622 
6625 
6628 
6631 
6634 
6637 
6640 
6643 
6646 
6649 
6652 
6653 
6654 };
6655 
6656 // Links to type: "lidort_modified_boolean" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
6658 public:
6659  // Allocating constructor
6661  lidort_modified_boolean_c_alloc_init(&transfer_struct_c, &fortran_type_c);
6662  link_blitz_arrays();
6663  link_nested_types();
6664  }
6665 
6666  // Linked to other data structure
6667  Lidort_Modified_Boolean(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
6668  lidort_modified_boolean_c_init_only(&transfer_struct_c, &fortran_type_c);
6669  link_blitz_arrays();
6670  link_nested_types();
6671  }
6672 
6673  // Deallocate
6675  if (owns_pointer)
6676  lidort_modified_boolean_c_destroy(&fortran_type_c);
6677  }
6678 
6679  const bool ts_do_sscorr_nadir() const {
6680  return *transfer_struct_c.ts_do_sscorr_nadir_ != 0;
6681  }
6682 
6683  void ts_do_sscorr_nadir(const bool& ts_do_sscorr_nadir_in) {
6684  *transfer_struct_c.ts_do_sscorr_nadir_ = ts_do_sscorr_nadir_in ? FORTRAN_TRUE_INT : 0;
6685  }
6686 
6687 
6688  const bool ts_do_sscorr_outgoing() const {
6689  return *transfer_struct_c.ts_do_sscorr_outgoing_ != 0;
6690  }
6691 
6692  void ts_do_sscorr_outgoing(const bool& ts_do_sscorr_outgoing_in) {
6693  *transfer_struct_c.ts_do_sscorr_outgoing_ = ts_do_sscorr_outgoing_in ? FORTRAN_TRUE_INT : 0;
6694  }
6695 
6696 
6697  const bool ts_do_double_convtest() const {
6698  return *transfer_struct_c.ts_do_double_convtest_ != 0;
6699  }
6700 
6701  void ts_do_double_convtest(const bool& ts_do_double_convtest_in) {
6702  *transfer_struct_c.ts_do_double_convtest_ = ts_do_double_convtest_in ? FORTRAN_TRUE_INT : 0;
6703  }
6704 
6705 
6706  const bool ts_do_solar_sources() const {
6707  return *transfer_struct_c.ts_do_solar_sources_ != 0;
6708  }
6709 
6710  void ts_do_solar_sources(const bool& ts_do_solar_sources_in) {
6711  *transfer_struct_c.ts_do_solar_sources_ = ts_do_solar_sources_in ? FORTRAN_TRUE_INT : 0;
6712  }
6713 
6714 
6715  const bool ts_do_refractive_geometry() const {
6716  return *transfer_struct_c.ts_do_refractive_geometry_ != 0;
6717  }
6718 
6719  void ts_do_refractive_geometry(const bool& ts_do_refractive_geometry_in) {
6720  *transfer_struct_c.ts_do_refractive_geometry_ = ts_do_refractive_geometry_in ? FORTRAN_TRUE_INT : 0;
6721  }
6722 
6723 
6724  const bool ts_do_chapman_function() const {
6725  return *transfer_struct_c.ts_do_chapman_function_ != 0;
6726  }
6727 
6728  void ts_do_chapman_function(const bool& ts_do_chapman_function_in) {
6729  *transfer_struct_c.ts_do_chapman_function_ = ts_do_chapman_function_in ? FORTRAN_TRUE_INT : 0;
6730  }
6731 
6732 
6733  const bool ts_do_rayleigh_only() const {
6734  return *transfer_struct_c.ts_do_rayleigh_only_ != 0;
6735  }
6736 
6737  void ts_do_rayleigh_only(const bool& ts_do_rayleigh_only_in) {
6738  *transfer_struct_c.ts_do_rayleigh_only_ = ts_do_rayleigh_only_in ? FORTRAN_TRUE_INT : 0;
6739  }
6740 
6741 
6742  const bool ts_do_isotropic_only() const {
6743  return *transfer_struct_c.ts_do_isotropic_only_ != 0;
6744  }
6745 
6746  void ts_do_isotropic_only(const bool& ts_do_isotropic_only_in) {
6747  *transfer_struct_c.ts_do_isotropic_only_ = ts_do_isotropic_only_in ? FORTRAN_TRUE_INT : 0;
6748  }
6749 
6750 
6751  const bool ts_do_no_azimuth() const {
6752  return *transfer_struct_c.ts_do_no_azimuth_ != 0;
6753  }
6754 
6755  void ts_do_no_azimuth(const bool& ts_do_no_azimuth_in) {
6756  *transfer_struct_c.ts_do_no_azimuth_ = ts_do_no_azimuth_in ? FORTRAN_TRUE_INT : 0;
6757  }
6758 
6759 
6760  const bool ts_do_all_fourier() const {
6761  return *transfer_struct_c.ts_do_all_fourier_ != 0;
6762  }
6763 
6764  void ts_do_all_fourier(const bool& ts_do_all_fourier_in) {
6765  *transfer_struct_c.ts_do_all_fourier_ = ts_do_all_fourier_in ? FORTRAN_TRUE_INT : 0;
6766  }
6767 
6768 
6769  const bool ts_do_deltam_scaling() const {
6770  return *transfer_struct_c.ts_do_deltam_scaling_ != 0;
6771  }
6772 
6773  void ts_do_deltam_scaling(const bool& ts_do_deltam_scaling_in) {
6774  *transfer_struct_c.ts_do_deltam_scaling_ = ts_do_deltam_scaling_in ? FORTRAN_TRUE_INT : 0;
6775  }
6776 
6777 
6778  const bool ts_do_solution_saving() const {
6779  return *transfer_struct_c.ts_do_solution_saving_ != 0;
6780  }
6781 
6782  void ts_do_solution_saving(const bool& ts_do_solution_saving_in) {
6783  *transfer_struct_c.ts_do_solution_saving_ = ts_do_solution_saving_in ? FORTRAN_TRUE_INT : 0;
6784  }
6785 
6786 
6787  const bool ts_do_bvp_telescoping() const {
6788  return *transfer_struct_c.ts_do_bvp_telescoping_ != 0;
6789  }
6790 
6791  void ts_do_bvp_telescoping(const bool& ts_do_bvp_telescoping_in) {
6792  *transfer_struct_c.ts_do_bvp_telescoping_ = ts_do_bvp_telescoping_in ? FORTRAN_TRUE_INT : 0;
6793  }
6794 
6795 
6796  const bool ts_do_user_streams() const {
6797  return *transfer_struct_c.ts_do_user_streams_ != 0;
6798  }
6799 
6800  void ts_do_user_streams(const bool& ts_do_user_streams_in) {
6801  *transfer_struct_c.ts_do_user_streams_ = ts_do_user_streams_in ? FORTRAN_TRUE_INT : 0;
6802  }
6803 
6804 
6805  const bool ts_do_additional_mvout() const {
6806  return *transfer_struct_c.ts_do_additional_mvout_ != 0;
6807  }
6808 
6809  void ts_do_additional_mvout(const bool& ts_do_additional_mvout_in) {
6810  *transfer_struct_c.ts_do_additional_mvout_ = ts_do_additional_mvout_in ? FORTRAN_TRUE_INT : 0;
6811  }
6812 
6813 
6814  const bool ts_do_mvout_only() const {
6815  return *transfer_struct_c.ts_do_mvout_only_ != 0;
6816  }
6817 
6818  void ts_do_mvout_only(const bool& ts_do_mvout_only_in) {
6819  *transfer_struct_c.ts_do_mvout_only_ = ts_do_mvout_only_in ? FORTRAN_TRUE_INT : 0;
6820  }
6821 
6822 
6823  const bool ts_do_thermal_transonly() const {
6824  return *transfer_struct_c.ts_do_thermal_transonly_ != 0;
6825  }
6826 
6827  void ts_do_thermal_transonly(const bool& ts_do_thermal_transonly_in) {
6828  *transfer_struct_c.ts_do_thermal_transonly_ = ts_do_thermal_transonly_in ? FORTRAN_TRUE_INT : 0;
6829  }
6830 
6831 
6832  const bool ts_do_observation_geometry() const {
6833  return *transfer_struct_c.ts_do_observation_geometry_ != 0;
6834  }
6835 
6836  void ts_do_observation_geometry(const bool& ts_do_observation_geometry_in) {
6837  *transfer_struct_c.ts_do_observation_geometry_ = ts_do_observation_geometry_in ? FORTRAN_TRUE_INT : 0;
6838  }
6839 
6840 
6841 
6842 
6843 
6844  virtual void print(std::ostream &output_stream) const {
6845  output_stream << "Lidort_Modified_Boolean:" << std::endl
6846  << " ts_do_sscorr_nadir: " << ts_do_sscorr_nadir() << std::endl
6847  << " ts_do_sscorr_outgoing: " << ts_do_sscorr_outgoing() << std::endl
6848  << " ts_do_double_convtest: " << ts_do_double_convtest() << std::endl
6849  << " ts_do_solar_sources: " << ts_do_solar_sources() << std::endl
6850  << " ts_do_refractive_geometry: " << ts_do_refractive_geometry() << std::endl
6851  << " ts_do_chapman_function: " << ts_do_chapman_function() << std::endl
6852  << " ts_do_rayleigh_only: " << ts_do_rayleigh_only() << std::endl
6853  << " ts_do_isotropic_only: " << ts_do_isotropic_only() << std::endl
6854  << " ts_do_no_azimuth: " << ts_do_no_azimuth() << std::endl
6855  << " ts_do_all_fourier: " << ts_do_all_fourier() << std::endl
6856  << " ts_do_deltam_scaling: " << ts_do_deltam_scaling() << std::endl
6857  << " ts_do_solution_saving: " << ts_do_solution_saving() << std::endl
6858  << " ts_do_bvp_telescoping: " << ts_do_bvp_telescoping() << std::endl
6859  << " ts_do_user_streams: " << ts_do_user_streams() << std::endl
6860  << " ts_do_additional_mvout: " << ts_do_additional_mvout() << std::endl
6861  << " ts_do_mvout_only: " << ts_do_mvout_only() << std::endl
6862  << " ts_do_thermal_transonly: " << ts_do_thermal_transonly() << std::endl
6863  << "ts_do_observation_geometry: " << ts_do_observation_geometry() << std::endl;
6864 
6865  }
6866 
6868  BYTE_SIZE_ERROR_CHECK("ts_do_sscorr_nadir_",sizeof(*transfer_struct_c.ts_do_sscorr_nadir_),transfer_struct_c.ts_do_sscorr_nadir__f_byte_size);
6869  BYTE_SIZE_ERROR_CHECK("ts_do_sscorr_outgoing_",sizeof(*transfer_struct_c.ts_do_sscorr_outgoing_),transfer_struct_c.ts_do_sscorr_outgoing__f_byte_size);
6870  BYTE_SIZE_ERROR_CHECK("ts_do_double_convtest_",sizeof(*transfer_struct_c.ts_do_double_convtest_),transfer_struct_c.ts_do_double_convtest__f_byte_size);
6871  BYTE_SIZE_ERROR_CHECK("ts_do_solar_sources_",sizeof(*transfer_struct_c.ts_do_solar_sources_),transfer_struct_c.ts_do_solar_sources__f_byte_size);
6872  BYTE_SIZE_ERROR_CHECK("ts_do_refractive_geometry_",sizeof(*transfer_struct_c.ts_do_refractive_geometry_),transfer_struct_c.ts_do_refractive_geometry__f_byte_size);
6873  BYTE_SIZE_ERROR_CHECK("ts_do_chapman_function_",sizeof(*transfer_struct_c.ts_do_chapman_function_),transfer_struct_c.ts_do_chapman_function__f_byte_size);
6874  BYTE_SIZE_ERROR_CHECK("ts_do_rayleigh_only_",sizeof(*transfer_struct_c.ts_do_rayleigh_only_),transfer_struct_c.ts_do_rayleigh_only__f_byte_size);
6875  BYTE_SIZE_ERROR_CHECK("ts_do_isotropic_only_",sizeof(*transfer_struct_c.ts_do_isotropic_only_),transfer_struct_c.ts_do_isotropic_only__f_byte_size);
6876  BYTE_SIZE_ERROR_CHECK("ts_do_no_azimuth_",sizeof(*transfer_struct_c.ts_do_no_azimuth_),transfer_struct_c.ts_do_no_azimuth__f_byte_size);
6877  BYTE_SIZE_ERROR_CHECK("ts_do_all_fourier_",sizeof(*transfer_struct_c.ts_do_all_fourier_),transfer_struct_c.ts_do_all_fourier__f_byte_size);
6878  BYTE_SIZE_ERROR_CHECK("ts_do_deltam_scaling_",sizeof(*transfer_struct_c.ts_do_deltam_scaling_),transfer_struct_c.ts_do_deltam_scaling__f_byte_size);
6879  BYTE_SIZE_ERROR_CHECK("ts_do_solution_saving_",sizeof(*transfer_struct_c.ts_do_solution_saving_),transfer_struct_c.ts_do_solution_saving__f_byte_size);
6880  BYTE_SIZE_ERROR_CHECK("ts_do_bvp_telescoping_",sizeof(*transfer_struct_c.ts_do_bvp_telescoping_),transfer_struct_c.ts_do_bvp_telescoping__f_byte_size);
6881  BYTE_SIZE_ERROR_CHECK("ts_do_user_streams_",sizeof(*transfer_struct_c.ts_do_user_streams_),transfer_struct_c.ts_do_user_streams__f_byte_size);
6882  BYTE_SIZE_ERROR_CHECK("ts_do_additional_mvout_",sizeof(*transfer_struct_c.ts_do_additional_mvout_),transfer_struct_c.ts_do_additional_mvout__f_byte_size);
6883  BYTE_SIZE_ERROR_CHECK("ts_do_mvout_only_",sizeof(*transfer_struct_c.ts_do_mvout_only_),transfer_struct_c.ts_do_mvout_only__f_byte_size);
6884  BYTE_SIZE_ERROR_CHECK("ts_do_thermal_transonly_",sizeof(*transfer_struct_c.ts_do_thermal_transonly_),transfer_struct_c.ts_do_thermal_transonly__f_byte_size);
6885  BYTE_SIZE_ERROR_CHECK("ts_do_observation_geometry_",sizeof(*transfer_struct_c.ts_do_observation_geometry_),transfer_struct_c.ts_do_observation_geometry__f_byte_size);
6886 
6887  }
6888 
6889 private:
6890  void link_blitz_arrays() {
6891 
6892  }
6893 
6894  void link_nested_types() {
6895 
6896  }
6897 
6898  struct lidort_modified_boolean transfer_struct_c;
6899 
6900 
6901 };
6902 
6903 // Links to type: "lidort_modified_control" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
6904 extern "C" {
6905  void lidort_modified_control_c_alloc_init(struct lidort_modified_control *transfer_struct_c, void **fortran_type_c);
6906  void lidort_modified_control_c_init_only(struct lidort_modified_control *transfer_struct_c, void **fortran_type_c);
6907  void lidort_modified_control_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
6908  void lidort_modified_control_c_destroy(void **fortran_type_c);
6909 
6910 }
6911 
6915 
6916 
6917 };
6918 
6919 // Links to type: "lidort_modified_control" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
6921 public:
6922  // Allocating constructor
6924  lidort_modified_control_c_alloc_init(&transfer_struct_c, &fortran_type_c);
6925  link_blitz_arrays();
6926  link_nested_types();
6927  }
6928 
6929  // Linked to other data structure
6930  Lidort_Modified_Control(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
6931  lidort_modified_control_c_init_only(&transfer_struct_c, &fortran_type_c);
6932  link_blitz_arrays();
6933  link_nested_types();
6934  }
6935 
6936  // Deallocate
6938  if (owns_pointer)
6939  lidort_modified_control_c_destroy(&fortran_type_c);
6940  }
6941 
6942  const int& ts_nmoments_input() const {
6943  return *transfer_struct_c.ts_nmoments_input_;
6944  }
6945 
6946  void ts_nmoments_input(const int& ts_nmoments_input_in) {
6947  *transfer_struct_c.ts_nmoments_input_ = ts_nmoments_input_in;
6948  }
6949 
6950 
6951 
6952 
6953 
6954  virtual void print(std::ostream &output_stream) const {
6955  output_stream << "Lidort_Modified_Control:" << std::endl
6956  << "ts_nmoments_input: " << ts_nmoments_input() << std::endl;
6957 
6958  }
6959 
6961  BYTE_SIZE_ERROR_CHECK("ts_nmoments_input_",sizeof(*transfer_struct_c.ts_nmoments_input_),transfer_struct_c.ts_nmoments_input__f_byte_size);
6962 
6963  }
6964 
6965 private:
6966  void link_blitz_arrays() {
6967 
6968  }
6969 
6970  void link_nested_types() {
6971 
6972  }
6973 
6974  struct lidort_modified_control transfer_struct_c;
6975 
6976 
6977 };
6978 
6979 // Links to type: "lidort_modified_sunrays" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
6980 extern "C" {
6981  void lidort_modified_sunrays_c_alloc_init(struct lidort_modified_sunrays *transfer_struct_c, void **fortran_type_c);
6982  void lidort_modified_sunrays_c_init_only(struct lidort_modified_sunrays *transfer_struct_c, void **fortran_type_c);
6983  void lidort_modified_sunrays_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
6984  void lidort_modified_sunrays_c_destroy(void **fortran_type_c);
6985 
6986 }
6987 
6991 
6992  double* ts_beam_szas_;
6993  int ts_beam_szas__f_shapes[1];
6995 
6996 
6997 };
6998 
6999 // Links to type: "lidort_modified_sunrays" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
7001 public:
7002  // Allocating constructor
7004  lidort_modified_sunrays_c_alloc_init(&transfer_struct_c, &fortran_type_c);
7005  link_blitz_arrays();
7006  link_nested_types();
7007  }
7008 
7009  // Linked to other data structure
7010  Lidort_Modified_Sunrays(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
7011  lidort_modified_sunrays_c_init_only(&transfer_struct_c, &fortran_type_c);
7012  link_blitz_arrays();
7013  link_nested_types();
7014  }
7015 
7016  // Deallocate
7018  if (owns_pointer)
7019  lidort_modified_sunrays_c_destroy(&fortran_type_c);
7020  }
7021 
7022  const int& ts_nbeams() const {
7023  return *transfer_struct_c.ts_nbeams_;
7024  }
7025 
7026  void ts_nbeams(const int& ts_nbeams_in) {
7027  *transfer_struct_c.ts_nbeams_ = ts_nbeams_in;
7028  }
7029 
7030 
7031  const blitz::Array<double, 1>& ts_beam_szas() const {
7032  return ts_beam_szas_;
7033  }
7034 
7035  void ts_beam_szas(const blitz::Array<double, 1>& ts_beam_szas_in) {
7036  ts_beam_szas_ = ts_beam_szas_in;
7037  }
7038 
7039 
7040 
7041 
7042 
7043  virtual void print(std::ostream &output_stream) const {
7044  output_stream << "Lidort_Modified_Sunrays:" << std::endl
7045  << " ts_nbeams: " << ts_nbeams() << std::endl
7046  << "ts_beam_szas: " << std::endl << ts_beam_szas() << std::endl;
7047 
7048  }
7049 
7051  BYTE_SIZE_ERROR_CHECK("ts_nbeams_",sizeof(*transfer_struct_c.ts_nbeams_),transfer_struct_c.ts_nbeams__f_byte_size);
7052  BYTE_SIZE_ERROR_CHECK("ts_beam_szas_",sizeof(*transfer_struct_c.ts_beam_szas_),transfer_struct_c.ts_beam_szas__f_byte_size);
7053 
7054  }
7055 
7056 private:
7057  void link_blitz_arrays() {
7058  ts_beam_szas_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_beam_szas_,
7059  blitz::shape(transfer_struct_c.ts_beam_szas__f_shapes[0]),
7060  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
7061 
7062  }
7063 
7064  void link_nested_types() {
7065 
7066  }
7067 
7068  struct lidort_modified_sunrays transfer_struct_c;
7069 
7070  blitz::Array<double, 1> ts_beam_szas_;
7071 
7072 };
7073 
7074 // Links to type: "lidort_modified_uservalues" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
7075 extern "C" {
7076  void lidort_modified_uservalues_c_alloc_init(struct lidort_modified_uservalues *transfer_struct_c, void **fortran_type_c);
7077  void lidort_modified_uservalues_c_init_only(struct lidort_modified_uservalues *transfer_struct_c, void **fortran_type_c);
7078  void lidort_modified_uservalues_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
7079  void lidort_modified_uservalues_c_destroy(void **fortran_type_c);
7080 
7081 }
7082 
7086 
7088  int ts_user_relazms__f_shapes[1];
7090 
7093 
7095  int ts_user_angles_input__f_shapes[1];
7097 
7099  int ts_user_levels__f_shapes[1];
7101 
7104 
7107 
7109  int ts_user_obsgeom_input__f_shapes[2];
7111 
7112 
7113 };
7114 
7115 // Links to type: "lidort_modified_uservalues" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
7117 public:
7118  // Allocating constructor
7120  lidort_modified_uservalues_c_alloc_init(&transfer_struct_c, &fortran_type_c);
7121  link_blitz_arrays();
7122  link_nested_types();
7123  }
7124 
7125  // Linked to other data structure
7126  Lidort_Modified_Uservalues(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
7127  lidort_modified_uservalues_c_init_only(&transfer_struct_c, &fortran_type_c);
7128  link_blitz_arrays();
7129  link_nested_types();
7130  }
7131 
7132  // Deallocate
7134  if (owns_pointer)
7135  lidort_modified_uservalues_c_destroy(&fortran_type_c);
7136  }
7137 
7138  const int& ts_n_user_relazms() const {
7139  return *transfer_struct_c.ts_n_user_relazms_;
7140  }
7141 
7142  void ts_n_user_relazms(const int& ts_n_user_relazms_in) {
7143  *transfer_struct_c.ts_n_user_relazms_ = ts_n_user_relazms_in;
7144  }
7145 
7146 
7147  const blitz::Array<double, 1>& ts_user_relazms() const {
7148  return ts_user_relazms_;
7149  }
7150 
7151  void ts_user_relazms(const blitz::Array<double, 1>& ts_user_relazms_in) {
7152  ts_user_relazms_ = ts_user_relazms_in;
7153  }
7154 
7155 
7156  const int& ts_n_user_streams() const {
7157  return *transfer_struct_c.ts_n_user_streams_;
7158  }
7159 
7160  void ts_n_user_streams(const int& ts_n_user_streams_in) {
7161  *transfer_struct_c.ts_n_user_streams_ = ts_n_user_streams_in;
7162  }
7163 
7164 
7165  const blitz::Array<double, 1>& ts_user_angles_input() const {
7166  return ts_user_angles_input_;
7167  }
7168 
7169  void ts_user_angles_input(const blitz::Array<double, 1>& ts_user_angles_input_in) {
7170  ts_user_angles_input_ = ts_user_angles_input_in;
7171  }
7172 
7173 
7174  const blitz::Array<double, 1>& ts_user_levels() const {
7175  return ts_user_levels_;
7176  }
7177 
7178  void ts_user_levels(const blitz::Array<double, 1>& ts_user_levels_in) {
7179  ts_user_levels_ = ts_user_levels_in;
7180  }
7181 
7182 
7183  const double& ts_geometry_specheight() const {
7184  return *transfer_struct_c.ts_geometry_specheight_;
7185  }
7186 
7187  void ts_geometry_specheight(const double& ts_geometry_specheight_in) {
7188  *transfer_struct_c.ts_geometry_specheight_ = ts_geometry_specheight_in;
7189  }
7190 
7191 
7192  const int& ts_n_user_obsgeoms() const {
7193  return *transfer_struct_c.ts_n_user_obsgeoms_;
7194  }
7195 
7196  void ts_n_user_obsgeoms(const int& ts_n_user_obsgeoms_in) {
7197  *transfer_struct_c.ts_n_user_obsgeoms_ = ts_n_user_obsgeoms_in;
7198  }
7199 
7200 
7201  const blitz::Array<double, 2>& ts_user_obsgeom_input() const {
7202  return ts_user_obsgeom_input_;
7203  }
7204 
7205  void ts_user_obsgeom_input(const blitz::Array<double, 2>& ts_user_obsgeom_input_in) {
7206  ts_user_obsgeom_input_ = ts_user_obsgeom_input_in;
7207  }
7208 
7209 
7210 
7211 
7212 
7213  virtual void print(std::ostream &output_stream) const {
7214  output_stream << "Lidort_Modified_Uservalues:" << std::endl
7215  << " ts_n_user_relazms: " << ts_n_user_relazms() << std::endl
7216  << " ts_user_relazms: " << std::endl << ts_user_relazms() << std::endl
7217  << " ts_n_user_streams: " << ts_n_user_streams() << std::endl
7218  << " ts_user_angles_input: " << std::endl << ts_user_angles_input() << std::endl
7219  << " ts_user_levels: " << std::endl << ts_user_levels() << std::endl
7220  << "ts_geometry_specheight: " << ts_geometry_specheight() << std::endl
7221  << " ts_n_user_obsgeoms: " << ts_n_user_obsgeoms() << std::endl
7222  << " ts_user_obsgeom_input: " << std::endl << ts_user_obsgeom_input() << std::endl;
7223 
7224  }
7225 
7227  BYTE_SIZE_ERROR_CHECK("ts_n_user_relazms_",sizeof(*transfer_struct_c.ts_n_user_relazms_),transfer_struct_c.ts_n_user_relazms__f_byte_size);
7228  BYTE_SIZE_ERROR_CHECK("ts_user_relazms_",sizeof(*transfer_struct_c.ts_user_relazms_),transfer_struct_c.ts_user_relazms__f_byte_size);
7229  BYTE_SIZE_ERROR_CHECK("ts_n_user_streams_",sizeof(*transfer_struct_c.ts_n_user_streams_),transfer_struct_c.ts_n_user_streams__f_byte_size);
7230  BYTE_SIZE_ERROR_CHECK("ts_user_angles_input_",sizeof(*transfer_struct_c.ts_user_angles_input_),transfer_struct_c.ts_user_angles_input__f_byte_size);
7231  BYTE_SIZE_ERROR_CHECK("ts_user_levels_",sizeof(*transfer_struct_c.ts_user_levels_),transfer_struct_c.ts_user_levels__f_byte_size);
7232  BYTE_SIZE_ERROR_CHECK("ts_geometry_specheight_",sizeof(*transfer_struct_c.ts_geometry_specheight_),transfer_struct_c.ts_geometry_specheight__f_byte_size);
7233  BYTE_SIZE_ERROR_CHECK("ts_n_user_obsgeoms_",sizeof(*transfer_struct_c.ts_n_user_obsgeoms_),transfer_struct_c.ts_n_user_obsgeoms__f_byte_size);
7234  BYTE_SIZE_ERROR_CHECK("ts_user_obsgeom_input_",sizeof(*transfer_struct_c.ts_user_obsgeom_input_),transfer_struct_c.ts_user_obsgeom_input__f_byte_size);
7235 
7236  }
7237 
7238 private:
7239  void link_blitz_arrays() {
7240  ts_user_relazms_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_user_relazms_,
7241  blitz::shape(transfer_struct_c.ts_user_relazms__f_shapes[0]),
7242  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
7243  ts_user_angles_input_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_user_angles_input_,
7244  blitz::shape(transfer_struct_c.ts_user_angles_input__f_shapes[0]),
7245  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
7246  ts_user_levels_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_user_levels_,
7247  blitz::shape(transfer_struct_c.ts_user_levels__f_shapes[0]),
7248  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
7249  ts_user_obsgeom_input_.reference(blitz::Array<double, 2>(transfer_struct_c.ts_user_obsgeom_input_,
7250  blitz::shape(transfer_struct_c.ts_user_obsgeom_input__f_shapes[0],
7251  transfer_struct_c.ts_user_obsgeom_input__f_shapes[1]),
7252  blitz::neverDeleteData, blitz::ColumnMajorArray<2>()));
7253 
7254  }
7255 
7256  void link_nested_types() {
7257 
7258  }
7259 
7260  struct lidort_modified_uservalues transfer_struct_c;
7261 
7262  blitz::Array<double, 1> ts_user_relazms_;
7263  blitz::Array<double, 1> ts_user_angles_input_;
7264  blitz::Array<double, 1> ts_user_levels_;
7265  blitz::Array<double, 2> ts_user_obsgeom_input_;
7266 
7267 };
7268 
7269 // Links to type: "lidort_modified_chapman" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
7270 extern "C" {
7271  void lidort_modified_chapman_c_alloc_init(struct lidort_modified_chapman *transfer_struct_c, void **fortran_type_c);
7272  void lidort_modified_chapman_c_init_only(struct lidort_modified_chapman *transfer_struct_c, void **fortran_type_c);
7273  void lidort_modified_chapman_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
7274  void lidort_modified_chapman_c_destroy(void **fortran_type_c);
7275 
7276 }
7277 
7281 
7282 
7283 };
7284 
7285 // Links to type: "lidort_modified_chapman" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
7287 public:
7288  // Allocating constructor
7290  lidort_modified_chapman_c_alloc_init(&transfer_struct_c, &fortran_type_c);
7291  link_blitz_arrays();
7292  link_nested_types();
7293  }
7294 
7295  // Linked to other data structure
7296  Lidort_Modified_Chapman(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
7297  lidort_modified_chapman_c_init_only(&transfer_struct_c, &fortran_type_c);
7298  link_blitz_arrays();
7299  link_nested_types();
7300  }
7301 
7302  // Deallocate
7304  if (owns_pointer)
7305  lidort_modified_chapman_c_destroy(&fortran_type_c);
7306  }
7307 
7308  const double& ts_earth_radius() const {
7309  return *transfer_struct_c.ts_earth_radius_;
7310  }
7311 
7312  void ts_earth_radius(const double& ts_earth_radius_in) {
7313  *transfer_struct_c.ts_earth_radius_ = ts_earth_radius_in;
7314  }
7315 
7316 
7317 
7318 
7319 
7320  virtual void print(std::ostream &output_stream) const {
7321  output_stream << "Lidort_Modified_Chapman:" << std::endl
7322  << "ts_earth_radius: " << ts_earth_radius() << std::endl;
7323 
7324  }
7325 
7327  BYTE_SIZE_ERROR_CHECK("ts_earth_radius_",sizeof(*transfer_struct_c.ts_earth_radius_),transfer_struct_c.ts_earth_radius__f_byte_size);
7328 
7329  }
7330 
7331 private:
7332  void link_blitz_arrays() {
7333 
7334  }
7335 
7336  void link_nested_types() {
7337 
7338  }
7339 
7340  struct lidort_modified_chapman transfer_struct_c;
7341 
7342 
7343 };
7344 
7345 // Links to type: "lidort_modified_optical" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
7346 extern "C" {
7347  void lidort_modified_optical_c_alloc_init(struct lidort_modified_optical *transfer_struct_c, void **fortran_type_c);
7348  void lidort_modified_optical_c_init_only(struct lidort_modified_optical *transfer_struct_c, void **fortran_type_c);
7349  void lidort_modified_optical_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
7350  void lidort_modified_optical_c_destroy(void **fortran_type_c);
7351 
7352 }
7353 
7356  int ts_omega_total_input__f_shapes[1];
7358 
7359 
7360 };
7361 
7362 // Links to type: "lidort_modified_optical" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
7364 public:
7365  // Allocating constructor
7367  lidort_modified_optical_c_alloc_init(&transfer_struct_c, &fortran_type_c);
7368  link_blitz_arrays();
7369  link_nested_types();
7370  }
7371 
7372  // Linked to other data structure
7373  Lidort_Modified_Optical(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
7374  lidort_modified_optical_c_init_only(&transfer_struct_c, &fortran_type_c);
7375  link_blitz_arrays();
7376  link_nested_types();
7377  }
7378 
7379  // Deallocate
7381  if (owns_pointer)
7382  lidort_modified_optical_c_destroy(&fortran_type_c);
7383  }
7384 
7385  const blitz::Array<double, 1>& ts_omega_total_input() const {
7386  return ts_omega_total_input_;
7387  }
7388 
7389  void ts_omega_total_input(const blitz::Array<double, 1>& ts_omega_total_input_in) {
7390  ts_omega_total_input_ = ts_omega_total_input_in;
7391  }
7392 
7393 
7394 
7395 
7396 
7397  virtual void print(std::ostream &output_stream) const {
7398  output_stream << "Lidort_Modified_Optical:" << std::endl
7399  << "ts_omega_total_input: " << std::endl << ts_omega_total_input() << std::endl;
7400 
7401  }
7402 
7404  BYTE_SIZE_ERROR_CHECK("ts_omega_total_input_",sizeof(*transfer_struct_c.ts_omega_total_input_),transfer_struct_c.ts_omega_total_input__f_byte_size);
7405 
7406  }
7407 
7408 private:
7409  void link_blitz_arrays() {
7410  ts_omega_total_input_.reference(blitz::Array<double, 1>(transfer_struct_c.ts_omega_total_input_,
7411  blitz::shape(transfer_struct_c.ts_omega_total_input__f_shapes[0]),
7412  blitz::neverDeleteData, blitz::ColumnMajorArray<1>()));
7413 
7414  }
7415 
7416  void link_nested_types() {
7417 
7418  }
7419 
7420  struct lidort_modified_optical transfer_struct_c;
7421 
7422  blitz::Array<double, 1> ts_omega_total_input_;
7423 
7424 };
7425 
7426 // Links to type: "lidort_modified_inputs" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
7427 extern "C" {
7428  void lidort_modified_inputs_c_alloc_init(struct lidort_modified_inputs *transfer_struct_c, void **fortran_type_c);
7429  void lidort_modified_inputs_c_init_only(struct lidort_modified_inputs *transfer_struct_c, void **fortran_type_c);
7430  void lidort_modified_inputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to);
7431  void lidort_modified_inputs_c_destroy(void **fortran_type_c);
7432 
7433 }
7434 
7436  void* mbool_;
7438 
7439  void* mcont_;
7441 
7442  void* msunrays_;
7444 
7445  void* muserval_;
7447 
7448  void* mchapman_;
7450 
7451  void* moptical_;
7453 
7454 
7455 };
7456 
7457 // Links to type: "lidort_modified_inputs" from module: "lidort_inputs_def" in file: "lidort_inputs_def.f90"
7459 public:
7460  // Allocating constructor
7462  lidort_modified_inputs_c_alloc_init(&transfer_struct_c, &fortran_type_c);
7463  link_blitz_arrays();
7464  link_nested_types();
7465  }
7466 
7467  // Linked to other data structure
7468  Lidort_Modified_Inputs(void* allocated_f_type_c) : Lidort_Structure(allocated_f_type_c) {
7469  lidort_modified_inputs_c_init_only(&transfer_struct_c, &fortran_type_c);
7470  link_blitz_arrays();
7471  link_nested_types();
7472  }
7473 
7474  // Deallocate
7476  if (owns_pointer)
7477  lidort_modified_inputs_c_destroy(&fortran_type_c);
7478  }
7479 
7481  return *mbool_;
7482  }
7483 
7485  return *mbool_;
7486  }
7487 
7488  void mbool(Lidort_Modified_Boolean& mbool_in) {
7489  void* src_ptr = mbool_in.fortran_type_ptr();
7490  void* dst_ptr = mbool_->fortran_type_ptr();
7491  lidort_modified_boolean_c_copy(&src_ptr, &dst_ptr);
7492  }
7493 
7494 
7496  return *mcont_;
7497  }
7498 
7500  return *mcont_;
7501  }
7502 
7503  void mcont(Lidort_Modified_Control& mcont_in) {
7504  void* src_ptr = mcont_in.fortran_type_ptr();
7505  void* dst_ptr = mcont_->fortran_type_ptr();
7506  lidort_modified_control_c_copy(&src_ptr, &dst_ptr);
7507  }
7508 
7509 
7511  return *msunrays_;
7512  }
7513 
7515  return *msunrays_;
7516  }
7517 
7518  void msunrays(Lidort_Modified_Sunrays& msunrays_in) {
7519  void* src_ptr = msunrays_in.fortran_type_ptr();
7520  void* dst_ptr = msunrays_->fortran_type_ptr();
7521  lidort_modified_sunrays_c_copy(&src_ptr, &dst_ptr);
7522  }
7523 
7524 
7526  return *muserval_;
7527  }
7528 
7530  return *muserval_;
7531  }
7532 
7534  void* src_ptr = muserval_in.fortran_type_ptr();
7535  void* dst_ptr = muserval_->fortran_type_ptr();
7536  lidort_modified_uservalues_c_copy(&src_ptr, &dst_ptr);
7537  }
7538 
7539 
7541  return *mchapman_;
7542  }
7543 
7545  return *mchapman_;
7546  }
7547 
7548  void mchapman(Lidort_Modified_Chapman& mchapman_in) {
7549  void* src_ptr = mchapman_in.fortran_type_ptr();
7550  void* dst_ptr = mchapman_->fortran_type_ptr();
7551  lidort_modified_chapman_c_copy(&src_ptr, &dst_ptr);
7552  }
7553 
7554 
7556  return *moptical_;
7557  }
7558 
7560  return *moptical_;
7561  }
7562 
7563  void moptical(Lidort_Modified_Optical& moptical_in) {
7564  void* src_ptr = moptical_in.fortran_type_ptr();
7565  void* dst_ptr = moptical_->fortran_type_ptr();
7566  lidort_modified_optical_c_copy(&src_ptr, &dst_ptr);
7567  }
7568 
7569 
7570 
7571 
7572 
7573  virtual void print(std::ostream &output_stream) const {
7574  output_stream << "Lidort_Modified_Inputs:" << std::endl
7575  << " mbool: " << mbool() << std::endl
7576  << " mcont: " << mcont() << std::endl
7577  << "msunrays: " << msunrays() << std::endl
7578  << "muserval: " << muserval() << std::endl
7579  << "mchapman: " << mchapman() << std::endl
7580  << "moptical: " << moptical() << std::endl;
7581 
7582  }
7583 
7585 
7586  }
7587 
7588 private:
7589  void link_blitz_arrays() {
7590 
7591  }
7592 
7593  void link_nested_types() {
7594  mbool_.reset( new Lidort_Modified_Boolean(transfer_struct_c.mbool_) );
7595  mcont_.reset( new Lidort_Modified_Control(transfer_struct_c.mcont_) );
7596  msunrays_.reset( new Lidort_Modified_Sunrays(transfer_struct_c.msunrays_) );
7597  muserval_.reset( new Lidort_Modified_Uservalues(transfer_struct_c.muserval_) );
7598  mchapman_.reset( new Lidort_Modified_Chapman(transfer_struct_c.mchapman_) );
7599  moptical_.reset( new Lidort_Modified_Optical(transfer_struct_c.moptical_) );
7600 
7601  }
7602 
7603  struct lidort_modified_inputs transfer_struct_c;
7604 
7611 
7612 };
7613 
7614 
7615 
7616 }
7617 #endif
void ts_do_isotropic_only(const bool &ts_do_isotropic_only_in)
Lidort_Modified_Boolean(void *allocated_f_type_c)
void lidort_modified_control_c_destroy(void **fortran_type_c)
void ts_do_upwelling(const bool &ts_do_upwelling_in)
void lidort_linsup_brdf_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void lidort_outputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void ts_status_inputread(const int &ts_status_inputread_in)
void lidort_modified_inputs_c_init_only(struct lidort_modified_inputs *transfer_struct_c, void **fortran_type_c)
const blitz::Array< double, 1 > & ts_height_grid() const
Lidort_Fixed_Uservalues(void *allocated_f_type_c)
virtual void print(std::ostream &output_stream) const
void lidort_fixed_lincontrol_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
const blitz::Array< double, 1 > & bs_bsa_kernels() const
void ts_flux_surfacewf(const blitz::Array< double, 4 > &ts_flux_surfacewf_in)
void ts_do_surface_emission(const bool &ts_do_surface_emission_in)
void lidort_linsup_sleave_c_alloc_init(struct lidort_linsup_sleave *transfer_struct_c, void **fortran_type_c)
void bs_bsa_value(const double &bs_bsa_value_in)
void lidort_modified_uservalues_c_destroy(void **fortran_type_c)
void brdf_sup_inputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void brdf_linsup_inputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
const blitz::Array< int, 1 > & ts_layer_vary_number() const
void ts_user_obsgeom_input(const blitz::Array< double, 2 > &ts_user_obsgeom_input_in)
void brdf_sup_outputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void sleave(Lidort_Sup_Sleave &sleave_in)
Lidort_Outputs(void *allocated_f_type_c)
void lidort_sup_sleave_c_destroy(void **fortran_type_c)
void ts_slterm_f_0(const blitz::Array< double, 3 > &ts_slterm_f_0_in)
void optical(Lidort_Fixed_Linoptical &optical_in)
static Lidort_Pars & instance()
void exception_handling_ts_checkmessages_get(void **fortran_type_c, const int *ts_checkmessages_in_shape_1, const int *ts_checkmessages_in_len, const char *ts_checkmessages_in)
void lidort_modified_sunrays_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void ts_layer_vary_flag(const blitz::Array< bool, 1 > &ts_layer_vary_flag_in)
void ts_do_mvout_only(const bool &ts_do_mvout_only_in)
Brdf_Linsup_Inputs(void *allocated_f_type_c)
virtual void print(std::ostream &output_stream) const
void lidort_modified_boolean_c_destroy(void **fortran_type_c)
void lidort_linsurf_c_destroy(void **fortran_type_c)
#define BYTE_SIZE_ERROR_CHECK(var_name, c_size, f_size)
void lidort_sup_inout_c_destroy(void **fortran_type_c)
void bs_n_kernel_factor_wfs(const int &bs_n_kernel_factor_wfs_in)
void ts_thermal_cutoff(const double &ts_thermal_cutoff_in)
const blitz::Array< bool, 1 > ts_layer_vary_flag() const
void bs_nbeams(const int &bs_nbeams_in)
Lidort_Linsup_Inout(void *allocated_f_type_c)
void lidort_fixed_linoptical_c_alloc_init(struct lidort_fixed_linoptical *transfer_struct_c, void **fortran_type_c)
const blitz::Array< double, 5 > & ts_profilewf_ss() const
void lidort_main_outputs_c_destroy(void **fortran_type_c)
void cont(Lidort_Fixed_Control &cont_in)
void sl_windspeed(const double &sl_windspeed_in)
const blitz::Array< double, 4 > & ts_lssl_slterm_userangles() const
void bs_ls_user_brdf_f_0(const blitz::Array< double, 4 > &bs_ls_user_brdf_f_0_in)
void ts_l_omega_total_input(const blitz::Array< double, 2 > &ts_l_omega_total_input_in)
void ts_earth_radius(const double &ts_earth_radius_in)
void ts_lidort_accuracy(const double &ts_lidort_accuracy_in)
void ts_n_user_streams(const int &ts_n_user_streams_in)
void lidort_modified_inputs_c_alloc_init(struct lidort_modified_inputs *transfer_struct_c, void **fortran_type_c)
void bs_ls_brdf_f(const blitz::Array< double, 4 > &bs_ls_brdf_f_in)
void input_exception_handling_ts_inputactions_get(void **fortran_type_c, const int *ts_inputactions_in_shape_1, const int *ts_inputactions_in_len, const char *ts_inputactions_in)
void ts_n_totalcolumn_wfs(const int &ts_n_totalcolumn_wfs_in)
const Lidort_Main_Outputs & main() const
void ts_n_surface_wfs(const int &ts_n_surface_wfs_in)
void bs_user_relazms(const blitz::Array< double, 1 > &bs_user_relazms_in)
const Lidort_Modified_Boolean & mbool() const
void ts_temperature_grid(const blitz::Array< double, 1 > &ts_temperature_grid_in)
virtual void print(std::ostream &output_stream) const
Brdf_Sup_Inputs(void *allocated_f_type_c)
virtual void print(std::ostream &output_stream) const
virtual void print(std::ostream &output_stream) const
Lidort_Structure(void *allocated_f_type_c)
void lidort_modified_chapman_c_init_only(struct lidort_modified_chapman *transfer_struct_c, void **fortran_type_c)
Lidort_Linsup_Brdf(void *allocated_f_type_c)
const Lidort_Modified_Optical & moptical() const
void ts_user_emissivity(const blitz::Array< double, 1 > &ts_user_emissivity_in)
void lidort_outputs_c_alloc_init(struct lidort_outputs *transfer_struct_c, void **fortran_type_c)
virtual void print(std::ostream &output_stream) const
const blitz::Array< double, 4 > & bs_ls_user_brdf_f_0() const
void ts_nfinelayers(const int &ts_nfinelayers_in)
const Lidort_Sup_Brdf & brdf() const
void lidort_fixed_inputs_c_destroy(void **fortran_type_c)
const blitz::Array< int, 1 > & ts_fourier_saved() const
const blitz::Array< double, 3 > & ts_sbbwfs_fluxes() const
void ts_columnwf(const blitz::Array< double, 4 > &ts_columnwf_in)
void lidort_exception_handling_c_destroy(void **fortran_type_c)
void lidort_fixed_control_c_destroy(void **fortran_type_c)
void ts_omega_total_input(const blitz::Array< double, 1 > &ts_omega_total_input_in)
void bs_glitter_msrcorr_nmuquad(const int &bs_glitter_msrcorr_nmuquad_in)
void bs_user_obsgeoms(const blitz::Array< double, 2 > &bs_user_obsgeoms_in)
void ts_do_surface_leaving(const bool &ts_do_surface_leaving_in)
const blitz::Array< double, 4 > & ts_lssl_user_slterm_f_0() const
void brdf_sup_inputs_c_alloc_init(struct brdf_sup_inputs *transfer_struct_c, void **fortran_type_c)
const blitz::Array< double, 1 > & ts_emissivity() const
void ts_pressure_grid(const blitz::Array< double, 1 > &ts_pressure_grid_in)
void bs_dbounce_brdfunc(const blitz::Array< double, 3 > &bs_dbounce_brdfunc_in)
const blitz::Array< double, 1 > & ts_beam_szas() const
Lidort_Modified_Optical(void *allocated_f_type_c)
void lidort_fixed_boolean_c_init_only(struct lidort_fixed_boolean *transfer_struct_c, void **fortran_type_c)
const blitz::Array< double, 4 > & ts_columnwf_ss() const
void ts_deltau_vert_input(const blitz::Array< double, 1 > &ts_deltau_vert_input_in)
void bs_lambertian_kernel_flag(const blitz::Array< bool, 1 > &bs_lambertian_kernel_flag_in)
void ts_n_thermal_coeffs(const int &ts_n_thermal_coeffs_in)
void ts_user_brdf_f(const blitz::Array< double, 3 > &ts_user_brdf_f_in)
void lidort_fixed_lininputs_c_destroy(void **fortran_type_c)
Lidort_Fixed_Inputs(void *allocated_f_type_c)
void bs_do_bsavalue_wf(const bool &bs_do_bsavalue_wf_in)
const blitz::Array< double, 2 > & ts_l_deltau_vert_input() const
void ts_columnwf_ss(const blitz::Array< double, 4 > &ts_columnwf_ss_in)
void bs_ninputmessages(const int &bs_ninputmessages_in)
void lidort_input_exception_handling_c_destroy(void **fortran_type_c)
void brdf_input_exception_handling_bs_inputmessages_get(void **fortran_type_c, const int *bs_inputmessages_in_shape_1, const int *bs_inputmessages_in_len, const char *bs_inputmessages_in)
const Lidort_Linsup_Ss_Atmos & atmos() const
void brdf_linsup_inputs_c_init_only(struct brdf_linsup_inputs *transfer_struct_c, void **fortran_type_c)
void lidort_sup_ss_c_init_only(struct lidort_sup_ss *transfer_struct_c, void **fortran_type_c)
void bs_windspeed(const double &bs_windspeed_in)
void ts_mean_intensity(const blitz::Array< double, 3 > &ts_mean_intensity_in)
void bs_salinity(const double &bs_salinity_in)
void lidort_sup_sleave_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
Lidort_Modified_Inputs(void *allocated_f_type_c)
virtual void print(std::ostream &output_stream) const
void ts_rfindex_parameter(const double &ts_rfindex_parameter_in)
void lidort_sup_inout_c_alloc_init(struct lidort_sup_inout *transfer_struct_c, void **fortran_type_c)
void ts_lssl_slterm_isotropic(const blitz::Array< double, 2 > &ts_lssl_slterm_isotropic_in)
void ts_profilewf_db(const blitz::Array< double, 4 > &ts_profilewf_db_in)
void sl_fl_longitude(const double &sl_fl_longitude_in)
void bs_ls_dbounce_brdfunc(const blitz::Array< double, 4 > &bs_ls_dbounce_brdfunc_in)
void ts_do_all_fourier(const bool &ts_do_all_fourier_in)
void ts_sbbwfs_jacobians(const blitz::Array< double, 3 > &ts_sbbwfs_jacobians_in)
Lidort_Modified_Uservalues & muserval()
void bs_beam_szas(const blitz::Array< double, 1 > &bs_beam_szas_in)
virtual void print(std::ostream &output_stream) const
void sl_do_facetisotropy(const bool &sl_do_facetisotropy_in)
void bs_noutputmessages(const int &bs_noutputmessages_in)
void bs_n_brdf_kernels(const int &bs_n_brdf_kernels_in)
const std::vector< std::string > bs_inputmessages() const
const blitz::Array< double, 4 > & ts_flux_surfacewf() const
void ts_nmoments_input(const int &ts_nmoments_input_in)
const blitz::Array< double, 4 > & ts_abbwfs_fluxes() const
void lidort_linsurf_c_init_only(struct lidort_linsurf *transfer_struct_c, void **fortran_type_c)
void lidort_modified_uservalues_c_alloc_init(struct lidort_modified_uservalues *transfer_struct_c, void **fortran_type_c)
Lidort_Fixed_Uservalues & userval()
void bs_status_output(const int &bs_status_output_in)
void lidort_fixed_uservalues_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
const blitz::Array< double, 4 > & bs_ls_user_brdf_f() const
virtual void print(std::ostream &output_stream) const
Lidort_Linsup_Ss(void *allocated_f_type_c)
void bs_ls_emissivity(const blitz::Array< double, 2 > &bs_ls_emissivity_in)
const blitz::Array< double, 4 > & ts_lssl_slterm_f_0() const
void ts_geometry_specheight(const double &ts_geometry_specheight_in)
const std::vector< std::string > bs_inputactions() const
const blitz::Array< double, 1 > & ts_user_levels() const
void bs_nstreams(const int &bs_nstreams_in)
const int & bs_glitter_msrcorr_nmuquad() const
void brdf_input_exception_handling_c_init_only(struct brdf_input_exception_handling *transfer_struct_c, void **fortran_type_c)
void lidort_linatmos_c_destroy(void **fortran_type_c)
void ts_do_bvp_telescoping(const bool &ts_do_bvp_telescoping_in)
const blitz::Array< double, 3 > & ts_mean_intensity() const
void ts_sbbwfs_fluxes(const blitz::Array< double, 3 > &ts_sbbwfs_fluxes_in)
void bs_which_brdf(const blitz::Array< int, 1 > &bs_which_brdf_in)
virtual void print(std::ostream &output_stream) const
void lidort_linsup_sleave_c_destroy(void **fortran_type_c)
void ts_ls_exactdb_brdfunc(const blitz::Array< double, 4 > &ts_ls_exactdb_brdfunc_in)
void ts_beam_szas(const blitz::Array< double, 1 > &ts_beam_szas_in)
const blitz::Array< double, 1 > & ts_solarbeam_boatrans() const
void ts_do_chapman_function(const bool &ts_do_chapman_function_in)
Lidort_Exception_Handling(void *allocated_f_type_c)
void ts_surfacewf_db(const blitz::Array< double, 3 > &ts_surfacewf_db_in)
const blitz::Array< double, 3 > & ts_intensity_ss() const
void sl_user_relazms(const blitz::Array< double, 1 > &sl_user_relazms_in)
void lidort_sup_brdf_c_alloc_init(struct lidort_sup_brdf *transfer_struct_c, void **fortran_type_c)
void sl_do_sleaving(const bool &sl_do_sleaving_in)
void lidort_input_exception_handling_c_init_only(struct lidort_input_exception_handling *transfer_struct_c, void **fortran_type_c)
const blitz::Array< double, 2 > & sl_fl_inputgaussians() const
void lidort_fixed_lincontrol_c_alloc_init(struct lidort_fixed_lincontrol *transfer_struct_c, void **fortran_type_c)
void ts_do_profile_linearization(const bool &ts_do_profile_linearization_in)
void brdf_sup_outputs_c_alloc_init(struct brdf_sup_outputs *transfer_struct_c, void **fortran_type_c)
const Lidort_Fixed_Sunrays & sunrays() const
const blitz::Array< double, 4 > & ts_ls_user_brdf_f() const
void brdf_linsup_inputs_c_alloc_init(struct brdf_linsup_inputs *transfer_struct_c, void **fortran_type_c)
const std::vector< std::string > ts_inputmessages() const
void ts_do_user_streams(const bool &ts_do_user_streams_in)
virtual void print(std::ostream &output_stream) const
void ts_user_brdf_f_0(const blitz::Array< double, 3 > &ts_user_brdf_f_0_in)
void sleave(Lidort_Linsup_Sleave &sleave_in)
void ts_n_user_obsgeoms(const int &ts_n_user_obsgeoms_in)
void ts_do_ss_external(const bool &ts_do_ss_external_in)
void bs_do_kernel_params_wfs(const blitz::Array< bool, 2 > &bs_do_kernel_params_wfs_in)
const blitz::Array< double, 4 > & ts_surfacewf() const
const blitz::Array< double, 1 > & bs_winddir() const
void lidort_fixed_uservalues_c_destroy(void **fortran_type_c)
const Lidort_Linsurf & surf() const
const blitz::Array< double, 5 > & ts_profilewf() const
void bs_n_kernel_params_wfs(const int &bs_n_kernel_params_wfs_in)
void lidort_fixed_chapman_c_init_only(struct lidort_fixed_chapman *transfer_struct_c, void **fortran_type_c)
Lidort_Fixed_Sunrays(void *allocated_f_type_c)
void ts_mint_surfacewf(const blitz::Array< double, 4 > &ts_mint_surfacewf_in)
Lidort_Sup_Ss(void *allocated_f_type_c)
void ts_do_sleave_wfs(const bool &ts_do_sleave_wfs_in)
const blitz::Array< double, 1 > & ts_user_angles_input() const
void lidort_linatmos_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void bs_do_glitter_msrcorr_dbonly(const bool &bs_do_glitter_msrcorr_dbonly_in)
void lidort_linatmos_c_init_only(struct lidort_linatmos *transfer_struct_c, void **fortran_type_c)
void ts_do_observation_geometry(const bool &ts_do_observation_geometry_in)
const blitz::Array< double, 3 > & ts_surfacewf_db() const
void ts_abbwfs_jacobians(const blitz::Array< double, 4 > &ts_abbwfs_jacobians_in)
const Lidort_Fixed_Boolean & f_bool() const
void lidort_modified_inputs_c_destroy(void **fortran_type_c)
void mcont(Lidort_Modified_Control &mcont_in)
void lidort_linsup_ss_atmos_c_alloc_init(struct lidort_linsup_ss_atmos *transfer_struct_c, void **fortran_type_c)
virtual void print(std::ostream &output_stream) const
void exception_handling_ts_actions_get(void **fortran_type_c, const int *ts_actions_in_shape_1, const int *ts_actions_in_len, const char *ts_actions_in)
void ts_lssl_user_slterm_f_0(const blitz::Array< double, 4 > &ts_lssl_user_slterm_f_0_in)
void lidort_fixed_boolean_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
const Lidort_Fixed_Uservalues & userval() const
void ts_do_additional_mvout(const bool &ts_do_additional_mvout_in)
void lidort_linsup_ss_c_alloc_init(struct lidort_linsup_ss *transfer_struct_c, void **fortran_type_c)
const double & bs_bsa_calculated() const
const Lidort_Sup_Sleave & sleave() const
void brdf_sup_outputs_c_destroy(void **fortran_type_c)
void lidort_sup_brdf_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
const blitz::Array< double, 1 > & bs_beam_szas() const
void bs_do_glitter_msrcorr(const bool &bs_do_glitter_msrcorr_in)
const double & sl_fl_amplitude755() const
void lidort_outputs_c_init_only(struct lidort_outputs *transfer_struct_c, void **fortran_type_c)
void ts_user_slterm_f_0(const blitz::Array< double, 3 > &ts_user_slterm_f_0_in)
const blitz::Array< double, 1 > & bs_wsa_kernels() const
void brdf_sup_inputs_c_init_only(struct brdf_sup_inputs *transfer_struct_c, void **fortran_type_c)
void lidort_modified_optical_c_init_only(struct lidort_modified_optical *transfer_struct_c, void **fortran_type_c)
void lidort_linsup_inout_c_init_only(struct lidort_linsup_inout *transfer_struct_c, void **fortran_type_c)
void ts_flux_integral(const blitz::Array< double, 3 > &ts_flux_integral_in)
void lidort_exception_handling_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
int main()
void ts_do_surface_linearization(const bool &ts_do_surface_linearization_in)
const blitz::Array< double, 1 > & sl_winddir() const
void brdf_output_exception_handling_c_alloc_init(struct brdf_output_exception_handling *transfer_struct_c, void **fortran_type_c)
void lidort_linsup_ss_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void brdf_input_exception_handling_bs_inputactions_get(void **fortran_type_c, const int *bs_inputactions_in_shape_1, const int *bs_inputactions_in_len, const char *bs_inputactions_in)
const std::vector< std::string > ts_actions() const
const blitz::Array< double, 4 > & bs_ls_brdf_f_0() const
void lidort_fixed_linoptical_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void sl_do_foamoption(const bool &sl_do_foamoption_in)
void ts_profilewf_ss(const blitz::Array< double, 5 > &ts_profilewf_ss_in)
void brdf_sup_outputs_c_init_only(struct brdf_sup_outputs *transfer_struct_c, void **fortran_type_c)
virtual void print(std::ostream &output_stream) const
const blitz::Array< double, 4 > & ts_profilewf_db() const
void bs_brdf_f(const blitz::Array< double, 3 > &bs_brdf_f_in)
Brdf_Linsup_Outputs(void *allocated_f_type_c)
void lidort_fixed_lininputs_c_init_only(struct lidort_fixed_lininputs *transfer_struct_c, void **fortran_type_c)
const Lidort_Fixed_Lincontrol & cont() const
const blitz::Array< double, 4 > & ts_mint_surfacewf() const
void bs_do_shadow_effect(const bool &bs_do_shadow_effect_in)
void ts_taylor_order(const int &ts_taylor_order_in)
void ts_mint_profilewf(const blitz::Array< double, 5 > &ts_mint_profilewf_in)
void lidort_fixed_control_c_init_only(struct lidort_fixed_control *transfer_struct_c, void **fortran_type_c)
void bs_emissivity(const blitz::Array< double, 1 > &bs_emissivity_in)
void ts_nstreams(const int &ts_nstreams_in)
const blitz::Array< double, 2 > & ts_user_obsgeom_input() const
void lidort_modified_lininputs_c_alloc_init(struct lidort_modified_lininputs *transfer_struct_c, void **fortran_type_c)
void ts_columnwf_db(const blitz::Array< double, 3 > &ts_columnwf_db_in)
void lidort_outputs_c_destroy(void **fortran_type_c)
void ts_lssl_slterm_f_0(const blitz::Array< double, 4 > &ts_lssl_slterm_f_0_in)
void brdf_input_exception_handling_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
Lidort_Fixed_Lininputs(void *allocated_f_type_c)
const blitz::Array< double, 4 > & bs_ls_brdf_f() const
void bs_do_wsavalue_wf(const bool &bs_do_wsavalue_wf_in)
const blitz::Array< double, 2 > & ts_dnmean_direct() const
virtual void print(std::ostream &output_stream) const
void lidort_linsup_ss_atmos_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
const Lidort_Fixed_Control & cont() const
const blitz::Array< double, 1 > & ts_user_emissivity() const
virtual void print(std::ostream &output_stream) const
void lidort_fixed_lincontrol_c_destroy(void **fortran_type_c)
const Lidort_Fixed_Optical & optical() const
const Lidort_Linsup_Brdf & brdf() const
virtual void print(std::ostream &output_stream) const
void ts_nbeams(const int &ts_nbeams_in)
void sl_salinity(const double &sl_salinity_in)
const std::vector< std::string > ts_checkmessages() const
void lidort_linsup_ss_surf_c_destroy(void **fortran_type_c)
Brdf_Sup_Outputs(void *allocated_f_type_c)
Lidort_Sup_Brdf(void *allocated_f_type_c)
void ts_user_angles_input(const blitz::Array< double, 1 > &ts_user_angles_input_in)
void lidort_fixed_optical_c_alloc_init(struct lidort_fixed_optical *transfer_struct_c, void **fortran_type_c)
void lidort_sup_sleave_c_init_only(struct lidort_sup_sleave *transfer_struct_c, void **fortran_type_c)
void sunrays(Lidort_Fixed_Sunrays &sunrays_in)
void lidort_main_outputs_c_alloc_init(struct lidort_main_outputs *transfer_struct_c, void **fortran_type_c)
const blitz::Array< int, 1 > & sl_fl_epoch() const
void surf(Lidort_Linsup_Ss_Surf &surf_in)
void lidort_linoutputs_c_destroy(void **fortran_type_c)
Lidort_Linsup_Ss_Atmos(void *allocated_f_type_c)
void bs_do_bsa_scaling(const bool &bs_do_bsa_scaling_in)
Lidort_Linsup_Sleave(void *allocated_f_type_c)
const blitz::Array< double, 4 > & ts_ls_brdf_f() const
void bs_glitter_msrcorr_order(const int &bs_glitter_msrcorr_order_in)
void bs_wavelength(const double &bs_wavelength_in)
void lidort_modified_optical_c_alloc_init(struct lidort_modified_optical *transfer_struct_c, void **fortran_type_c)
void ts_status_inputcheck(const int &ts_status_inputcheck_in)
virtual void print(std::ostream &output_stream) const
void ts_mint_columnwf(const blitz::Array< double, 4 > &ts_mint_columnwf_in)
void lidort_modified_uservalues_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void bs_user_emissivity(const blitz::Array< double, 1 > &bs_user_emissivity_in)
void ts_ls_brdf_f_0(const blitz::Array< double, 4 > &ts_ls_brdf_f_0_in)
void sleave_sup_inputs_c_destroy(void **fortran_type_c)
void bs_do_foamoption(const bool &bs_do_foamoption_in)
Lidort_Fixed_Chapman(void *allocated_f_type_c)
void bs_do_facetisotropy(const bool &bs_do_facetisotropy_in)
void ts_do_surface_lbbf(const bool &ts_do_surface_lbbf_in)
void brdf_output_exception_handling_c_destroy(void **fortran_type_c)
void surf(Lidort_Linsurf &surf_in)
void bs_ls_brdf_f_0(const blitz::Array< double, 4 > &bs_ls_brdf_f_0_in)
void ts_ls_user_brdf_f(const blitz::Array< double, 4 > &ts_ls_user_brdf_f_in)
void lidort_linatmos_c_alloc_init(struct lidort_linatmos *transfer_struct_c, void **fortran_type_c)
This is a Mixin for classes that can be printed.
Definition: printable.h:24
void ts_ls_brdf_f(const blitz::Array< double, 4 > &ts_ls_brdf_f_in)
void lidort_exception_handling_c_init_only(struct lidort_exception_handling *transfer_struct_c, void **fortran_type_c)
void ts_lssl_slterm_userangles(const blitz::Array< double, 4 > &ts_lssl_slterm_userangles_in)
const blitz::Array< double, 3 > & ts_columnwf_db() const
void bs_do_windspeed_wf(const bool &bs_do_windspeed_wf_in)
const blitz::Array< int, 1 > & bs_n_brdf_parameters() const
void lidort_fixed_lininputs_c_alloc_init(struct lidort_fixed_lininputs *transfer_struct_c, void **fortran_type_c)
void ts_lambertian_albedo(const double &ts_lambertian_albedo_in)
virtual void print(std::ostream &output_stream) const
const blitz::Array< double, 2 > & ts_l_omega_total_input() const
void brdf_sup_inputs_c_destroy(void **fortran_type_c)
const blitz::Array< double, 3 > & bs_user_brdf_f() const
void ts_do_deltam_scaling(const bool &ts_do_deltam_scaling_in)
void lidort_linsup_ss_c_destroy(void **fortran_type_c)
void bs_do_brdf_surface(const bool &bs_do_brdf_surface_in)
void lidort_modified_sunrays_c_destroy(void **fortran_type_c)
void sleave_sup_inputs_c_init_only(struct sleave_sup_inputs *transfer_struct_c, void **fortran_type_c)
Lidort_Linsup_Ss_Surf(void *allocated_f_type_c)
const blitz::Array< double, 4 > & ts_ls_exactdb_brdfunc() const
void input_exception_handling_ts_inputmessages_get(void **fortran_type_c, const int *ts_inputmessages_in_shape_1, const int *ts_inputmessages_in_len, const char *ts_inputmessages_in)
void lidort_modified_optical_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void sleave_sup_inputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void ts_do_solar_sources(const bool &ts_do_solar_sources_in)
Lidort_Linoutputs(void *allocated_f_type_c)
void lidort_fixed_sunrays_c_destroy(void **fortran_type_c)
void moptical(Lidort_Modified_Optical &moptical_in)
const blitz::Array< double, 2 > & bs_brdf_parameters() const
Lidort_Linsup_Ss_Atmos & atmos()
void lidort_linsup_inout_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void ts_do_plane_parallel(const bool &ts_do_plane_parallel_in)
void bs_do_glintshadow(const bool &bs_do_glintshadow_in)
void set_lidort_pars(struct Lidort_Pars *lidort_pars_struct_c)
void brdf_input_exception_handling_c_alloc_init(struct brdf_input_exception_handling *transfer_struct_c, void **fortran_type_c)
void sl_fl_do_datagaussian(const bool &sl_fl_do_datagaussian_in)
void lidort_fixed_sunrays_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void sl_fl_latitude(const double &sl_fl_latitude_in)
void bs_status_inputread(const int &bs_status_inputread_in)
const blitz::Array< bool, 1 > bs_do_kparams_derivs() const
const blitz::Array< double, 5 > & ts_flux_profilewf() const
void bs_glitter_msrcorr_nphiquad(const int &bs_glitter_msrcorr_nphiquad_in)
void mchapman(Lidort_Modified_Chapman &mchapman_in)
void lidort_modified_optical_c_destroy(void **fortran_type_c)
void ts_user_levels(const blitz::Array< double, 1 > &ts_user_levels_in)
void sl_chlorconc(const double &sl_chlorconc_in)
void lidort_sup_sleave_c_alloc_init(struct lidort_sup_sleave *transfer_struct_c, void **fortran_type_c)
const Lidort_Modified_Sunrays & msunrays() const
void lidort_sup_ss_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
const blitz::Array< double, 3 > & ts_sbbwfs_jacobians() const
void lidort_modified_lininputs_c_init_only(struct lidort_modified_lininputs *transfer_struct_c, void **fortran_type_c)
void ts_surface_bb_input(const double &ts_surface_bb_input_in)
const Lidort_Modified_Control & mcont() const
virtual void print(std::ostream &output_stream) const
virtual void print(std::ostream &output_stream) const
void lidort_linsup_brdf_c_init_only(struct lidort_linsup_brdf *transfer_struct_c, void **fortran_type_c)
void ts_emissivity(const blitz::Array< double, 1 > &ts_emissivity_in)
void userval(Lidort_Fixed_Uservalues &userval_in)
void ts_intensity(const blitz::Array< double, 3 > &ts_intensity_in)
void lidort_modified_boolean_c_alloc_init(struct lidort_modified_boolean *transfer_struct_c, void **fortran_type_c)
void main(Lidort_Main_Outputs &main_in)
virtual void print(std::ostream &output_stream) const
void lidort_modified_chapman_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void bs_bsa_kernels(const blitz::Array< double, 1 > &bs_bsa_kernels_in)
void lidort_fixed_inputs_c_init_only(struct lidort_fixed_inputs *transfer_struct_c, void **fortran_type_c)
void ts_n_geometries(const int &ts_n_geometries_in)
const blitz::Array< double, 3 > & ts_brdf_f_0() const
void bs_do_surface_emission(const bool &bs_do_surface_emission_in)
void ts_ls_user_brdf_f_0(const blitz::Array< double, 4 > &ts_ls_user_brdf_f_0_in)
void ts_abbwfs_fluxes(const blitz::Array< double, 4 > &ts_abbwfs_fluxes_in)
void bs_brdf_factors(const blitz::Array< double, 1 > &bs_brdf_factors_in)
const blitz::Array< double, 4 > & ts_mint_columnwf() const
void bs_n_surface_wfs(const int &bs_n_surface_wfs_in)
void lidort_linsup_ss_c_init_only(struct lidort_linsup_ss *transfer_struct_c, void **fortran_type_c)
virtual void print(std::ostream &output_stream) const
const blitz::Array< double, 2 > & bs_ls_emissivity() const
void ts_do_refractive_geometry(const bool &ts_do_refractive_geometry_in)
void lidort_input_exception_handling_c_alloc_init(struct lidort_input_exception_handling *transfer_struct_c, void **fortran_type_c)
const blitz::Array< double, 1 > & bs_brdf_factors() const
void ts_n_user_relazms(const int &ts_n_user_relazms_in)
void brdf(Lidort_Sup_Brdf &brdf_in)
const Lidort_Exception_Handling & status() const
const blitz::Array< double, 3 > & ts_slterm_f_0() const
void lidort_modified_lininputs_c_destroy(void **fortran_type_c)
const Lidort_Linatmos & atmos() const
const blitz::Array< double, 3 > & ts_l_phasmoms_total_input() const
const blitz::Array< double, 4 > & ts_ls_user_brdf_f_0() const
void ts_solarbeam_boatrans(const blitz::Array< double, 1 > &ts_solarbeam_boatrans_in)
Lidort_Modified_Uservalues(void *allocated_f_type_c)
const blitz::Array< double, 4 > & ts_columnwf() const
void bs_do_newcmglint(const bool &bs_do_newcmglint_in)
void lidort_linsurf_c_alloc_init(struct lidort_linsurf *transfer_struct_c, void **fortran_type_c)
void ts_slterm_userangles(const blitz::Array< double, 3 > &ts_slterm_userangles_in)
const blitz::Array< bool, 1 > bs_lambertian_kernel_flag() const
const blitz::Array< double, 2 > & sl_user_obsgeoms() const
const blitz::Array< double, 2 > & ts_ls_emissivity() const
void lidort_linsurf_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void lidort_fixed_optical_c_destroy(void **fortran_type_c)
const blitz::Array< double, 4 > & bs_ls_dbounce_brdfunc() const
const Lidort_Linsup_Ss_Surf & surf() const
const blitz::Array< double, 3 > & ts_user_brdf_f() const
void sl_do_solar_sources(const bool &sl_do_solar_sources_in)
void lidort_linsup_brdf_c_alloc_init(struct lidort_linsup_brdf *transfer_struct_c, void **fortran_type_c)
const blitz::Array< bool, 1 > bs_do_kernel_factor_wfs() const
const blitz::Array< double, 1 > & ts_deltau_vert_input() const
void lidort_fixed_lincontrol_c_init_only(struct lidort_fixed_lincontrol *transfer_struct_c, void **fortran_type_c)
const blitz::Array< double, 3 > & ts_flux_integral() const
void ts_n_sleave_wfs(const int &ts_n_sleave_wfs_in)
void ts_ls_emissivity(const blitz::Array< double, 2 > &ts_ls_emissivity_in)
const blitz::Array< double, 4 > & ts_ls_brdf_f_0() const
void ts_intensity_db(const blitz::Array< double, 2 > &ts_intensity_db_in)
Lidort_Sup_Sleave(void *allocated_f_type_c)
void lidort_linsup_ss_surf_c_init_only(struct lidort_linsup_ss_surf *transfer_struct_c, void **fortran_type_c)
void ts_ls_user_emissivity(const blitz::Array< double, 2 > &ts_ls_user_emissivity_in)
void ts_layer_vary_number(const blitz::Array< int, 1 > &ts_layer_vary_number_in)
const blitz::Array< double, 4 > & ts_flux_columnwf() const
void ts_slterm_isotropic(const blitz::Array< double, 1 > &ts_slterm_isotropic_in)
virtual void print(std::ostream &output_stream) const
void bs_ls_user_emissivity(const blitz::Array< double, 2 > &bs_ls_user_emissivity_in)
void lidort_modified_chapman_c_alloc_init(struct lidort_modified_chapman *transfer_struct_c, void **fortran_type_c)
void exception_handling_ts_trace_2_get(void **fortran_type_c, const int *ts_trace_2_in_len, const char *ts_trace_2_in)
void brdf_input_exception_handling_c_destroy(void **fortran_type_c)
void ts_do_brdf_surface(const bool &ts_do_brdf_surface_in)
const blitz::Array< double, 1 > & bs_emissivity() const
Lidort_Sup_Inout(void *allocated_f_type_c)
Lidort_Fixed_Lincontrol(void *allocated_f_type_c)
const blitz::Array< double, 3 > & ts_user_brdf_f_0() const
void lidort_sup_inout_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
virtual void print(std::ostream &output_stream) const
virtual void print(std::ostream &output_stream) const
void lidort_fixed_chapman_c_alloc_init(struct lidort_fixed_chapman *transfer_struct_c, void **fortran_type_c)
void sl_winddir(const blitz::Array< double, 1 > &sl_winddir_in)
const blitz::Array< double, 3 > & ts_slterm_userangles() const
const blitz::Array< double, 1 > & bs_user_relazms() const
void sl_do_glintshadow(const bool &sl_do_glintshadow_in)
virtual void print(std::ostream &output_stream) const
void sl_beam_szas(const blitz::Array< double, 1 > &sl_beam_szas_in)
void bs_n_user_streams(const int &bs_n_user_streams_in)
void bs_brdf_f_0(const blitz::Array< double, 3 > &bs_brdf_f_0_in)
void sl_do_user_streams(const bool &sl_do_user_streams_in)
void lidort_fixed_chapman_c_destroy(void **fortran_type_c)
const Lidort_Sup_Ss & ss() const
virtual void print(std::ostream &output_stream) const
void ts_do_no_azimuth(const bool &ts_do_no_azimuth_in)
virtual void print(std::ostream &output_stream) const
const std::vector< std::string > bs_brdf_names() const
void sl_nbeams(const int &sl_nbeams_in)
void lidort_modified_sunrays_c_alloc_init(struct lidort_modified_sunrays *transfer_struct_c, void **fortran_type_c)
const blitz::Array< double, 3 > & bs_user_brdf_f_0() const
void lidort_fixed_inputs_c_alloc_init(struct lidort_fixed_inputs *transfer_struct_c, void **fortran_type_c)
Lidort_Fixed_Linoptical(void *allocated_f_type_c)
const blitz::Array< double, 2 > & bs_ls_user_emissivity() const
void ss(Lidort_Linsup_Ss &ss_in)
const blitz::Array< double, 3 > & ts_exactdb_brdfunc() const
void ts_dnflux_direct(const blitz::Array< double, 2 > &ts_dnflux_direct_in)
Lidort_Linsurf(void *allocated_f_type_c)
void lidort_modified_boolean_c_init_only(struct lidort_modified_boolean *transfer_struct_c, void **fortran_type_c)
const blitz::Array< double, 1 > & ts_temperature_grid() const
void atmos(Lidort_Linsup_Ss_Atmos &atmos_in)
void sl_n_user_obsgeoms(const int &sl_n_user_obsgeoms_in)
virtual void print(std::ostream &output_stream) const
void bs_n_brdf_parameters(const blitz::Array< int, 1 > &bs_n_brdf_parameters_in)
const blitz::Array< double, 1 > & bs_user_angles_input() const
void bs_do_kparams_derivs(const blitz::Array< bool, 1 > &bs_do_kparams_derivs_in)
void lidort_fixed_uservalues_c_init_only(struct lidort_fixed_uservalues *transfer_struct_c, void **fortran_type_c)
void lidort_linsup_ss_atmos_c_destroy(void **fortran_type_c)
void ts_thermal_bb_input(const blitz::Array< double, 1 > &ts_thermal_bb_input_in)
void sl_fl_wavelength(const double &sl_fl_wavelength_in)
void copy_from_sup(Brdf_Sup_Outputs &supp_obj)
void sl_user_angles_input(const blitz::Array< double, 1 > &sl_user_angles_input_in)
const int & bs_glitter_msrcorr_order() const
void lidort_fixed_sunrays_c_alloc_init(struct lidort_fixed_sunrays *transfer_struct_c, void **fortran_type_c)
void sl_fl_epoch(const blitz::Array< int, 1 > &sl_fl_epoch_in)
void ts_ncheckmessages(const int &ts_ncheckmessages_in)
void exception_handling_ts_message_get(void **fortran_type_c, const int *ts_message_in_len, const char *ts_message_in)
void lidort_linoutputs_c_alloc_init(struct lidort_linoutputs *transfer_struct_c, void **fortran_type_c)
void ts_surfacewf(const blitz::Array< double, 4 > &ts_surfacewf_in)
void atmos(Lidort_Linatmos &atmos_in)
void ts_flux_columnwf(const blitz::Array< double, 4 > &ts_flux_columnwf_in)
const blitz::Array< double, 3 > & bs_brdf_f() const
Lidort_Main_Outputs(void *allocated_f_type_c)
const int & bs_glitter_msrcorr_nphiquad() const
void lidort_modified_uservalues_c_init_only(struct lidort_modified_uservalues *transfer_struct_c, void **fortran_type_c)
void sl_n_user_streams(const int &sl_n_user_streams_in)
void ts_nlayers(const int &ts_nlayers_in)
const double & bs_wavelength() const
const Lidort_Linsup_Sleave & sleave() const
void ts_intensity_ss(const blitz::Array< double, 3 > &ts_intensity_ss_in)
void exception_handling_ts_trace_3_get(void **fortran_type_c, const int *ts_trace_3_in_len, const char *ts_trace_3_in)
void ts_height_grid(const blitz::Array< double, 1 > &ts_height_grid_in)
void lidort_linsup_sleave_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
const blitz::Array< int, 1 > & ts_finegrid() const
const blitz::Array< double, 2 > & bs_user_obsgeoms() const
void lidort_fixed_lininputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void lidort_modified_control_c_init_only(struct lidort_modified_control *transfer_struct_c, void **fortran_type_c)
void brdf_sup_inputs_bs_brdf_names_get(void **fortran_type_c, const int *bs_brdf_names_in_shape_1, const int *bs_brdf_names_in_len, const char *bs_brdf_names_in)
void ts_finegrid(const blitz::Array< int, 1 > &ts_finegrid_in)
void lidort_fixed_chapman_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
const blitz::Array< double, 1 > & ts_pressure_grid() const
const blitz::Array< double, 3 > & ts_user_slterm_f_0() const
const blitz::Array< double, 1 > & ts_omega_total_input() const
const blitz::Array< double, 2 > & ts_lssl_slterm_isotropic() const
virtual void print(std::ostream &output_stream) const
void lidort_modified_control_c_alloc_init(struct lidort_modified_control *transfer_struct_c, void **fortran_type_c)
void bs_do_wsa_scaling(const bool &bs_do_wsa_scaling_in)
void ts_do_sscorr_nadir(const bool &ts_do_sscorr_nadir_in)
void lidort_main_outputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void lidort_linsup_inout_c_destroy(void **fortran_type_c)
const Lidort_Linsup_Ss & ss() const
void lidort_exception_handling_c_alloc_init(struct lidort_exception_handling *transfer_struct_c, void **fortran_type_c)
Sleave_Sup_Inputs(void *allocated_f_type_c)
void ts_do_fullrad_mode(const bool &ts_do_fullrad_mode_in)
void bs_ls_user_brdf_f(const blitz::Array< double, 4 > &bs_ls_user_brdf_f_in)
void ts_do_atmos_lbbf(const bool &ts_do_atmos_lbbf_in)
void lidort_input_exception_handling_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void lidort_fixed_linoptical_c_destroy(void **fortran_type_c)
virtual void print(std::ostream &output_stream) const
Lidort_Fixed_Control(void *allocated_f_type_c)
void exception_handling_ts_trace_1_get(void **fortran_type_c, const int *ts_trace_1_in_len, const char *ts_trace_1_in)
const blitz::Array< int, 1 > & bs_which_brdf() const
const blitz::Array< double, 1 > & sl_beam_szas() const
void msunrays(Lidort_Modified_Sunrays &msunrays_in)
Lidort_Fixed_Boolean(void *allocated_f_type_c)
const blitz::Array< double, 3 > & bs_brdf_f_0() const
void lidort_sup_ss_c_destroy(void **fortran_type_c)
void lidort_linsup_ss_surf_c_alloc_init(struct lidort_linsup_ss_surf *transfer_struct_c, void **fortran_type_c)
void bs_do_user_obsgeoms(const bool &bs_do_user_obsgeoms_in)
void optical(Lidort_Fixed_Optical &optical_in)
Lidort_Modified_Sunrays(void *allocated_f_type_c)
Contains classes to abstract away details in various Spurr Radiative Transfer software.
Definition: doxygen_python.h:1
Lidort_Fixed_Optical(void *allocated_f_type_c)
const blitz::Array< double, 1 > & bs_user_emissivity() const
void sl_do_exactonly(const bool &sl_do_exactonly_in)
const blitz::Array< double, 3 > & ts_brdf_f() const
void bs_winddir(const blitz::Array< double, 1 > &bs_winddir_in)
virtual void print(std::ostream &output_stream) const
void sl_fl_inputgaussians(const blitz::Array< double, 2 > &sl_fl_inputgaussians_in)
void sl_nstreams(const int &sl_nstreams_in)
void ts_phasmoms_total_input(const blitz::Array< double, 2 > &ts_phasmoms_total_input_in)
virtual void print(std::ostream &output_stream) const
const blitz::Array< double, 4 > & ts_abbwfs_jacobians() const
void ts_status_calculation(const int &ts_status_calculation_in)
const double & bs_wsa_calculated() const
void ts_user_relazms(const blitz::Array< double, 1 > &ts_user_relazms_in)
const blitz::Array< double, 5 > & ts_mint_profilewf() const
const blitz::Array< double, 1 > & ts_slterm_isotropic() const
void bs_nstreams_brdf(const int &bs_nstreams_brdf_in)
Lidort_Modified_Lininputs(void *allocated_f_type_c)
void lidort_linsup_ss_surf_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void lidort_linsup_ss_atmos_c_init_only(struct lidort_linsup_ss_atmos *transfer_struct_c, void **fortran_type_c)
void brdf_output_exception_handling_c_init_only(struct brdf_output_exception_handling *transfer_struct_c, void **fortran_type_c)
void sl_do_exact(const bool &sl_do_exact_in)
void bs_wsa_calculated(const double &bs_wsa_calculated_in)
Lidort_Linatmos(void *allocated_f_type_c)
void bs_user_brdf_f(const blitz::Array< double, 3 > &bs_user_brdf_f_in)
void lidort_linsup_brdf_c_destroy(void **fortran_type_c)
void lidort_main_outputs_c_init_only(struct lidort_main_outputs *transfer_struct_c, void **fortran_type_c)
const bool bs_do_glitter_msrcorr_dbonly() const
const blitz::Array< bool, 2 > bs_do_kernel_params_wfs() const
void ts_profilewf(const blitz::Array< double, 5 > &ts_profilewf_in)
void lidort_sup_ss_c_alloc_init(struct lidort_sup_ss *transfer_struct_c, void **fortran_type_c)
void lidort_modified_control_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
const blitz::Array< double, 2 > & ts_intensity_db() const
const Lidort_Fixed_Chapman & chapman() const
void f_bool(Lidort_Fixed_Boolean &bool_in)
void lidort_fixed_optical_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void ts_do_double_convtest(const bool &ts_do_double_convtest_in)
void ts_do_column_linearization(const bool &ts_do_column_linearization_in)
void bs_wsa_kernels(const blitz::Array< double, 1 > &bs_wsa_kernels_in)
void ts_do_sl_isotropic(const bool &ts_do_sl_isotropic_in)
void lidort_fixed_control_c_alloc_init(struct lidort_fixed_control *transfer_struct_c, void **fortran_type_c)
void lidort_linsup_sleave_c_init_only(struct lidort_linsup_sleave *transfer_struct_c, void **fortran_type_c)
virtual void print(std::ostream &output_stream) const
Lidort_Exception_Handling & status()
const blitz::Array< double, 1 > & sl_user_angles_input() const
void lidort_fixed_boolean_c_destroy(void **fortran_type_c)
void chapman(Lidort_Fixed_Chapman &chapman_in)
void bs_do_wsabsa_output(const bool &bs_do_wsabsa_output_in)
void sl_fl_amplitude755(const double &sl_fl_amplitude755_in)
void lidort_fixed_inputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
const blitz::Array< double, 3 > & bs_dbounce_brdfunc() const
const Lidort_Modified_Chapman & mchapman() const
void lidort_fixed_optical_c_init_only(struct lidort_fixed_optical *transfer_struct_c, void **fortran_type_c)
const blitz::Array< double, 1 > & sl_user_relazms() const
void ts_l_phasmoms_total_input(const blitz::Array< double, 3 > &ts_l_phasmoms_total_input_in)
void bs_n_user_obsgeoms(const int &bs_n_user_obsgeoms_in)
void lidort_fixed_boolean_c_alloc_init(struct lidort_fixed_boolean *transfer_struct_c, void **fortran_type_c)
void ts_flux_profilewf(const blitz::Array< double, 5 > &ts_flux_profilewf_in)
void sleave_sup_inputs_c_alloc_init(struct sleave_sup_inputs *transfer_struct_c, void **fortran_type_c)
Lidort_Modified_Chapman(void *allocated_f_type_c)
void bs_n_user_relazms(const int &bs_n_user_relazms_in)
virtual void print(std::ostream &output_stream) const
void ts_do_thermal_emission(const bool &ts_do_thermal_emission_in)
void ts_do_solution_saving(const bool &ts_do_solution_saving_in)
void ts_brdf_f_0(const blitz::Array< double, 3 > &ts_brdf_f_0_in)
void bs_do_kernel_factor_wfs(const blitz::Array< bool, 1 > &bs_do_kernel_factor_wfs_in)
void lidort_fixed_sunrays_c_init_only(struct lidort_fixed_sunrays *transfer_struct_c, void **fortran_type_c)
void lidort_fixed_linoptical_c_init_only(struct lidort_fixed_linoptical *transfer_struct_c, void **fortran_type_c)
void ts_do_thermal_transonly(const bool &ts_do_thermal_transonly_in)
void ts_do_dnwelling(const bool &ts_do_dnwelling_in)
void sl_n_user_relazms(const int &sl_n_user_relazms_in)
void brdf_linsup_inputs_c_destroy(void **fortran_type_c)
void brdf_linsup_outputs_c_alloc_init(struct brdf_linsup_outputs *transfer_struct_c, void **fortran_type_c)
void bs_wsa_value(const double &bs_wsa_value_in)
void bs_do_user_streams(const bool &bs_do_user_streams_in)
void ts_l_deltau_vert_input(const blitz::Array< double, 2 > &ts_l_deltau_vert_input_in)
void ts_do_sscorr_truncation(const bool &ts_do_sscorr_truncation_in)
virtual void print(std::ostream &output_stream) const
void lidort_fixed_control_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
virtual void print(std::ostream &output_stream) const
void sl_wavelength(const double &sl_wavelength_in)
void brdf_output_exception_handling_bs_outputmessages_get(void **fortran_type_c, const int *bs_outputmessages_in_shape_1, const int *bs_outputmessages_in_len, const char *bs_outputmessages_in)
void ts_n_user_levels(const int &ts_n_user_levels_in)
void sl_user_obsgeoms(const blitz::Array< double, 2 > &sl_user_obsgeoms_in)
void ts_ninputmessages(const int &ts_ninputmessages_in)
void ts_brdf_f(const blitz::Array< double, 3 > &ts_brdf_f_in)
void bs_user_angles_input(const blitz::Array< double, 1 > &bs_user_angles_input_in)
void bs_do_directbounce_only(const bool &bs_do_directbounce_only_in)
const std::vector< std::string > ts_inputactions() const
void bs_brdf_parameters(const blitz::Array< double, 2 > &bs_brdf_parameters_in)
virtual void print(std::ostream &output_stream) const
virtual void print(std::ostream &output_stream) const
void lidort_modified_boolean_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void sl_do_user_obsgeoms(const bool &sl_do_user_obsgeoms_in)
friend std::ostream & operator<<(std::ostream &output_stream, const Lidort_Pars &obj)
void muserval(Lidort_Modified_Uservalues &muserval_in)
const Lidort_Fixed_Linoptical & optical() const
const blitz::Array< double, 3 > & ts_intensity() const
Lidort_Modified_Control(void *allocated_f_type_c)
void ts_do_ssfull(const bool &ts_do_ssfull_in)
void copy_from_sup(Brdf_Linsup_Outputs &supp_obj)
void lidort_modified_chapman_c_destroy(void **fortran_type_c)
void lidort_sup_brdf_c_destroy(void **fortran_type_c)
void bs_user_brdf_f_0(const blitz::Array< double, 3 > &bs_user_brdf_f_0_in)
void sl_do_isotropic(const bool &sl_do_isotropic_in)
void ts_do_sscorr_outgoing(const bool &ts_do_sscorr_outgoing_in)
void lidort_fixed_uservalues_c_alloc_init(struct lidort_fixed_uservalues *transfer_struct_c, void **fortran_type_c)
void bs_bsa_calculated(const double &bs_bsa_calculated_in)
virtual void print(std::ostream &output_stream) const
void brdf_linsup_outputs_c_init_only(struct brdf_linsup_outputs *transfer_struct_c, void **fortran_type_c)
const std::vector< std::string > bs_outputmessages() const
void brdf(Lidort_Linsup_Brdf &brdf_in)
const blitz::Array< double, 2 > & ts_dnflux_direct() const
const blitz::Array< double, 2 > & ts_phasmoms_total_input() const
void status(Lidort_Exception_Handling &status_in)
void sl_do_fluorescence(const bool &sl_do_fluorescence_in)
void mbool(Lidort_Modified_Boolean &mbool_in)
void lidort_linoutputs_c_init_only(struct lidort_linoutputs *transfer_struct_c, void **fortran_type_c)
void bs_do_solar_sources(const bool &bs_do_solar_sources_in)
void ts_exactdb_brdfunc(const blitz::Array< double, 3 > &ts_exactdb_brdfunc_in)
void lidort_modified_inputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void lidort_sup_inout_c_init_only(struct lidort_sup_inout *transfer_struct_c, void **fortran_type_c)
void ts_dnmean_direct(const blitz::Array< double, 2 > &ts_dnmean_direct_in)
void ts_flux_factor(const double &ts_flux_factor_in)
virtual void print(std::ostream &output_stream) const
virtual void print(std::ostream &output_stream) const
void lidort_linoutputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
const blitz::Array< double, 1 > & ts_user_relazms() const
void brdf_linsup_outputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void cont(Lidort_Fixed_Lincontrol &cont_in)
const Lidort_Modified_Uservalues & muserval() const
const blitz::Array< double, 2 > & ts_ls_user_emissivity() const
#define FORTRAN_TRUE_INT
void ts_do_rayleigh_only(const bool &ts_do_rayleigh_only_in)
void lidort_modified_lininputs_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
const blitz::Array< double, 1 > & ts_thermal_bb_input() const
void lidort_modified_sunrays_c_init_only(struct lidort_modified_sunrays *transfer_struct_c, void **fortran_type_c)
void brdf_linsup_outputs_c_destroy(void **fortran_type_c)
void ts_fourier_saved(const blitz::Array< int, 1 > &ts_fourier_saved_in)
void brdf_output_exception_handling_c_copy(void **fortran_type_c_from, void **fortran_type_c_to)
void lidort_sup_brdf_c_init_only(struct lidort_sup_brdf *transfer_struct_c, void **fortran_type_c)
void lidort_linsup_inout_c_alloc_init(struct lidort_linsup_inout *transfer_struct_c, void **fortran_type_c)

Copyright © 2017, California Institute of Technology.
ALL RIGHTS RESERVED.
U.S. Government Sponsorship acknowledged.
Generated Fri Aug 24 2018 15:44:10