The BioCro C++ Library
stefan_boltzmann_longwave.h
Go to the documentation of this file.
1#ifndef STEFAN_BOLTZMANN_LONGWAVE_H
2#define STEFAN_BOLTZMANN_LONGWAVE_H
3
4#include <cmath> // for pow
5#include "../framework/module.h"
6#include "../framework/state_map.h"
7#include "../framework/constants.h" // for celsius_to_kelvin, stefan_boltzmann
8
9namespace standardBML
10{
16class stefan_boltzmann_longwave : public direct_module
17{
18 public:
20 state_map const& input_quantities,
21 state_map* output_quantities)
22 : direct_module{},
23
24 // Get references to input quantities
25 emissivity_sky{get_input(input_quantities, "emissivity_sky")},
26 temp{get_input(input_quantities, "temp")},
27
28 // Get pointers to output quantities
29 absorbed_longwave_op{get_op(output_quantities, "absorbed_longwave")}
30 {
31 }
32 static string_vector get_inputs();
33 static string_vector get_outputs();
34 static std::string get_name() { return "stefan_boltzmann_longwave"; }
35
36 private:
37 // References to input quantities
38 double const& emissivity_sky;
39 double const& temp;
40
41 // Pointers to output quantities
42 double* absorbed_longwave_op;
43
44 // Main operation
45 void do_operation() const;
46};
47
49{
50 return {
51 "emissivity_sky", // dimensionless
52 "temp" // degrees C
53 };
54}
55
57{
58 return {
59 "absorbed_longwave" // J / m^2 / s
60 };
61}
62
63void stefan_boltzmann_longwave::do_operation() const
64{
65 double const absorbed_longwave =
66 emissivity_sky * physical_constants::stefan_boltzmann *
67 pow(conversion_constants::celsius_to_kelvin + temp, 4); // J / m^2 / s
68
69 // Update the output quantity list
70 update(absorbed_longwave_op, absorbed_longwave); // J / m^2 / s
71}
72
73} // namespace standardBML
74#endif
stefan_boltzmann_longwave(state_map const &input_quantities, state_map *output_quantities)
This is the standard BioCro module library; it includes the essential modules used in typical BioCro ...
Definition: aba_decay.h:8