// This file is part of the Herezh++ application. // // The finite element software Herezh++ is dedicated to the field // of mechanics for large transformations of solid structures. // It is developed by Gérard Rio (APP: IDDN.FR.010.0106078.000.R.P.2006.035.20600) // INSTITUT DE RECHERCHE DUPUY DE LÔME (IRDL) . // // Herezh++ is distributed under GPL 3 license ou ultérieure. // // Copyright (C) 1997-2022 Université Bretagne Sud (France) // AUTHOR : Gérard Rio // E-MAIL : gerardrio56@free.fr // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, // or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty // of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // For more information, please consult: . /************************************************************************ * DATE: 06/03/2023 * * $ * * AUTEUR: G RIO (mailto:gerardrio56@free.fr) * * $ * * PROJET: Herezh++ * * $ * ************************************************************************ * BUT: Conteneur pour stocker les differentes energies générées * * par la thermique. * * $ * * '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' * * * VERIFICATION: * * * * ! date ! auteur ! but ! * * ------------------------------------------------------------ * * ! ! ! ! * * $ * * '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' * * MODIFICATIONS: * * ! date ! auteur ! but ! * * ------------------------------------------------------------ * * $ * ************************************************************************/ #ifndef ENERGIE_THERMI_H #define ENERGIE_THERMI_H #include #include #include #include "Sortie.h" /// @addtogroup Les_conteneurs_energies /// @{ /// class EnergieThermi { // surcharge de l'operator de lecture avec le type friend istream & operator >> (istream &, EnergieThermi &); // surcharge de l'operator d'ecriture friend ostream & operator << (ostream &, const EnergieThermi &); public : // CONSTRUCTEURS : // par défaut EnergieThermi() : energie_elastique(0.),dissipation_plastique(0.),dissipation_visqueuse(0.) {}; // constructeur fonction des trois énergies EnergieThermi(const double& e_elastique, const double& d_plastique, const double& d_visqueuse) : energie_elastique(e_elastique),dissipation_plastique(d_plastique) ,dissipation_visqueuse(d_visqueuse) {}; // de copie EnergieThermi(const EnergieThermi& a) : energie_elastique(a.energie_elastique),dissipation_plastique(a.dissipation_plastique) ,dissipation_visqueuse(a.dissipation_visqueuse) {}; // DESTRUCTEUR : // METHODES PUBLIQUES : // affichage à l'écran void Affiche() const {cout << "\n EnergieThermi: energie_elastique=" << energie_elastique << " dissipation_plastique= " << dissipation_plastique << " dissipation_visqueuse= " << dissipation_visqueuse << " "; }; // opérateurs EnergieThermi operator + ( const EnergieThermi & a) const {EnergieThermi ret(*this); ret += a; return ret; }; EnergieThermi operator - ( const EnergieThermi & a) const {EnergieThermi ret(*this); ret -= a; return ret; }; void operator += ( const EnergieThermi & a) {energie_elastique += a.energie_elastique; dissipation_plastique += a.dissipation_plastique; dissipation_visqueuse += a.dissipation_visqueuse; }; void operator -= ( const EnergieThermi & a) {energie_elastique -= a.energie_elastique; dissipation_plastique -= a.dissipation_plastique; dissipation_visqueuse -= a.dissipation_visqueuse; }; void operator *= ( const double & x) {energie_elastique *= x;dissipation_plastique *= x;dissipation_visqueuse *= x;}; void operator /= ( const double & x) {energie_elastique /= x;dissipation_plastique /= x;dissipation_visqueuse /= x;}; EnergieThermi operator * ( const double & x) const { EnergieThermi re(*this); re *=x; return re;}; EnergieThermi operator / ( const double & x) const { EnergieThermi re(*this); re /=x; return re;}; EnergieThermi & operator = ( const EnergieThermi & a) {energie_elastique = a.energie_elastique; dissipation_plastique = a.dissipation_plastique; dissipation_visqueuse = a.dissipation_visqueuse; return *this; }; // initialisation à une valeur vale void Inita(const double& vale) {energie_elastique = dissipation_plastique = dissipation_visqueuse =vale; }; // retourne l'énergie élastique const double& EnergieElastique() const {return energie_elastique;}; // retourne la dissipation plastique const double& DissipationPlastique() const {return dissipation_plastique;}; // retourne la dissipation visqueuse const double & DissipationVisqueuse() const {return dissipation_visqueuse;}; // changement de l'énergie élastique void ChangeEnergieElastique(double en) { energie_elastique = en;}; // changement de la dissipation plastique void ChangeDissipationPlastique(const double& en) {dissipation_plastique=en;}; void ChangeDissipationVisqueuse(const double& en) {dissipation_visqueuse=en;}; private : // VARIABLES PROTEGEES : double energie_elastique; // énergie élastique double dissipation_plastique ; // dissipation plastique double dissipation_visqueuse; // dissipation visqueuse // METHODES PROTEGEES : }; /// @} // end of group #endif