Program Listing for File PhysicsData.hpp

Return to documentation for file (src/include/PhysicsData.hpp)

#ifndef SRC_INCLUDE_PHYSICSDATA_HPP
#define SRC_INCLUDE_PHYSICSDATA_HPP

#include "BaseElementData.hpp"
#include "PrognosticData.hpp"

namespace Nextsim {

class PhysicsData : public BaseElementData {
public:
    PhysicsData() = default;
    ~PhysicsData() = default;

    inline double& airDensity() { return m_rho; };
    inline double& windSpeed() { return m_wspeed; }
    inline double& specificHumidityWater() { return m_sphumw; }
    inline double& specificHumidityIce() { return m_sphumi; }
    inline double& specificHumidityAir() { return m_sphuma; }
    inline double mixingRatio() { return m_sphuma / (1 - m_sphuma); }
    inline double& heatCapacityWetAir() { return m_cspec; }
    inline double& dragPressure() { return m_tau; }

    inline double& updatedIceTrueThickness() { return m_hi_new; }

    inline double& updatedSnowTrueThickness() { return m_hs; }

    inline double& updatedIceSurfaceTemperature() { return m_TiceNew[0]; }

    inline double& updatedIceConcentration() { return m_conc_new; }

private:
    double m_rho;
    double m_wspeed;
    double m_sphumw;
    double m_sphumi;
    double m_sphuma;
    double m_cspec;
    double m_tau;

    // thermodynamic values
    double m_hi_new; // updated true ice thickness [m]
    double m_hs;
    std::array<double, N_ICE_TEMPERATURES> m_TiceNew;
    double m_conc_new; // updated ice concentration
};

} /* namespace Nextsim */

#endif /* SRC_INCLUDE_PHYSICSDATA_HPP */