ModelSpace
All Classes Namespaces Functions Variables Enumerations Pages
EffectiveSolarAreaModel.h
1/******************************************************************************
2* Copyright (c) ATTX LLC 2024. All Rights Reserved.
3*
4* This software and associated documentation (the "Software") are the
5* proprietary and confidential information of ATTX, LLC. The Software is
6* furnished under a license agreement between ATTX and the user organization
7* and may be used or copied only in accordance with the terms of the agreement.
8* Refer to 'license/attx_license.adoc' for standard license terms.
9*
10* EXPORT CONTROL NOTICE: THIS SOFTWARE MAY INCLUDE CONTENT CONTROLLED UNDER THE
11* INTERNATIONAL TRAFFIC IN ARMS REGULATIONS (ITAR) OR THE EXPORT ADMINISTRATION
12* REGULATIONS (EAR99). No part of the Software may be used, reproduced, or
13* transmitted in any form or by any means, for any purpose, without the express
14* written permission of ATTX, LLC.
15******************************************************************************/
16/*
17Effective Solar Area model header file
18Author: Alex Jackson
19*/
20
21#ifndef MODELS_SUPPORT_EFFECTIVE_SOLAR_AREA_H
22#define MODELS_SUPPORT_EFFECTIVE_SOLAR_AREA_H
23
24#include "core/macros.h"
25#include "simulation/Model.h"
26#include "core/CartesianVector.hpp"
27#include "six_dof_dynamics/Quaternion.hpp"
28
29namespace modelspace {
30
31 /**
32 * @brief Effective Solar Area model
33 *
34 * This model defines simple solar area of a flat surface. This is computed by
35 * taking the dot product of the normal vector of the surface and the solar vector.
36 * This value is expected to be negative if the panel is illuminated. If the value is
37 * positive, then the value is set to zero. If the value is negative, then the value is
38 * negated to become positive. This value is then multiplied by the area of the surface.
39 *
40 * Author: Alex Jackson
41 * Email: alex.jackson@attx.tech
42 */
43 class EffectiveSolarAreaModel : public Model {
44 public:
45
46 // Model params
47 // NAME TYPE DEFAULT VALUE
50
51 // Model inputs
52 // NAME TYPE DEFAULT VALUE
54 /** The solar vector in the solar frame (Sun to spacecraft)*/
56 /** The normal vector pointing out of the surface in the body frame*/
58 /** The area of the surface */
59 SIGNAL(area, double, 1.0)
60 /** The quaternion relating the body frame to the solar frame */
61 SIGNAL(quat_body_solar, QuaternionD, QuaternionD({1.0, 0.0, 0.0, 0.0}))
63
64 // Model outputs
65 // NAME TYPE DEFAULT VALUE
67 /** The effective solar area */
68 SIGNAL(eff_solar_area, double, 0.0)
70
71 // Model-specific implementations of startup and derivative
72 EffectiveSolarAreaModel();
73 EffectiveSolarAreaModel(Model &pnt, const std::string &m_name="effective_solar_area");
74 EffectiveSolarAreaModel(SimulationExecutive &e, const std::string &m_name="effective_solar_area");
75 EffectiveSolarAreaModel(Model &pnt, int schedule_slot, const std::string &m_name="effective_solar_area");
76 EffectiveSolarAreaModel(SimulationExecutive &e, int schedule_slot, const std::string &m_name="effective_solar_area");
77 ~EffectiveSolarAreaModel() {}
78
79 protected:
80 int execute();
81
82 /// @brief Temporary variable to hold the vector that is normal to the surface after converting to the solar frame
84
85 /// @brief Temporary variable to hold the result of the dot product between the normal vector and solar vector
87 };
88
89}
90
91#endif
Effective Solar Area model.
Definition EffectiveSolarAreaModel.h:43
double _dot_product_normal_solar
Temporary variable to hold the result of the dot product between the normal vector and solar vector.
Definition EffectiveSolarAreaModel.h:86
int execute()
Function to execute the task. All math and calculations should be here.
Definition EffectiveSolarAreaModel.cpp:33
clockwerk::CartesianVector< double, 3 > _face_normal_vector__sun
Temporary variable to hold the vector that is normal to the surface after converting to the solar fra...
Definition EffectiveSolarAreaModel.h:83
Base model class for derived implementation.
Definition Model.h:56
Implementation of the executive class for simulation.
Definition SimulationExecutive.h:63
#define SIGNAL(NAME, TYPE, INITIAL_VALUE)
Definition macros.h:87
#define START_PARAMS
Definition macros.h:96
#define CartesianVector3D
Definition macros.h:54
#define END_OUTPUTS
Definition macros.h:90
#define END_PARAMS
Definition macros.h:98
#define QuaternionD
Definition macros.h:78
#define START_OUTPUTS
Definition macros.h:88
#define END_INPUTS
Definition macros.h:94
#define START_INPUTS
Definition macros.h:92
Class to propagate CR3BP dynamics in characteristic units.
Definition ConfigurationWriter.cpp:18
clockwerk::DataIO< double > area
Definition EffectiveSolarAreaModel.h:59
clockwerk::DataIO< clockwerk::CartesianVector< double, 3 > > face_normal_vector__body
Definition EffectiveSolarAreaModel.h:57
clockwerk::DataIO< clockwerk::Quaternion< double > > quat_body_solar
Definition EffectiveSolarAreaModel.h:61
clockwerk::DataIO< clockwerk::CartesianVector< double, 3 > > pos_sc_sun__sun
Definition EffectiveSolarAreaModel.h:55
clockwerk::DataIO< double > eff_solar_area
Definition EffectiveSolarAreaModel.h:68