Program Listing for File ExternalData.hpp

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

#ifndef SRC_INCLUDE_EXTERNALDATA_HPP
#define SRC_INCLUDE_EXTERNALDATA_HPP

#include "BaseElementData.hpp"
#include "constants.hpp"

namespace Nextsim {

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

    inline double& airTemperature() { return m_tair; };
    inline const double& airTemperature() const { return m_tair; }

    inline double& dewPoint2m() { return m_dair; };
    inline double dewPoint2m() const { return m_dair; };

    inline double& airPressure() { return m_slp; };
    inline const double& airPressure() const { return m_slp; }

    inline double& mixingRatio() { return m_mixrat; };
    inline const double& mixingRatio() const { return m_mixrat; }

    inline bool hasMixingRatio() const { return (m_mixrat >= 0) && (m_mixrat <= 1); };

    inline double& incomingShortwave() { return m_Qsw_in; }
    inline const double& incomingShortwave() const { return m_Qsw_in; }

    inline double& incomingLongwave() { return m_Qlw_in; }
    inline const double& incomingLongwave() const { return m_Qlw_in; }

    inline const double& iceBottomTemperature() const { return m_tbot; }

    inline double& mixedLayerDepth() { return m_mld; };
    inline double mixedLayerDepth() const { return m_mld; }
    inline double mixedLayerBulkHeatCapacity() const { return m_mld * Water::rhoOcean * Water::cp; }

    inline double& snowfall() // [kg m⁻² s⁻¹]
    {
        return m_snowfall;
    }
    inline const double& snowfall() const { return m_snowfall; }

private:
    double m_tair;
    double m_dair;
    double m_slp;
    double m_mixrat;
    double m_Qsw_in;
    double m_Qlw_in;
    double m_tbot;
    double m_mld;

    double m_snowfall;
};

} /* namespace Nextsim */

#endif /* SRC_INCLUDE_EXTERNALDATA_HPP */