// 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: . #include "VariablesTemps.h" #include "Sortie.h" #include #include "ParaGlob.h" using namespace std; // CONSTRUCTEURS : // par défauts VariablesTemps::VariablesTemps() : temps(0.),deltat(0.),deltatmaxi(0.),deltatmini(0.),tempsfin(0.),prectemps(0.) { }; // constructeur de copies VariablesTemps::VariablesTemps(const VariablesTemps& t) : temps(t.temps),deltat(t.deltat),deltatmaxi(t.deltatmaxi),deltatmini(t.deltatmini) ,tempsfin(t.tempsfin),prectemps(t.prectemps) { }; // affichage des parametres liés au temps void VariablesTemps::Affiche() const { cout << "temps courant = " << deltatmaxi << '\n'; cout << "increment de temps maxi = " << deltatmaxi << '\n'; cout << "increment de temps mini = " << deltatmini << '\n'; cout << "precision sur le temps final = " << prectemps << '\n'; cout << "increment de temps = " << deltat << '\n'; cout << "temps de fin de calcul = " << tempsfin << '\n'; }; //----- lecture écriture dans base info ----- // cas donne le niveau de la récupération // = 1 : on récupère tout // = 2 : on récupère uniquement les données variables (supposées comme telles) // = 3 : on met à jour uniquement les données variables (supposées comme telles) // dans ce cas il y a modification des grandeurs, mais pas redimentionnement void VariablesTemps::Lecture_base_info_temps(ifstream& entr,const int cas) {switch (cas) { case 1 : // ------- on récupère tout ------------------------- { cout << "== lecture des variables temps \n"; string toto; entr >> toto ; // lecture en tête entr >> toto >> temps >> toto >> deltat >> toto >> deltatmaxi >> toto >> deltatmini >> toto >> tempsfin >> toto >> prectemps; break; } case 2 : case 3: // ----------- on récupère uniquement se qui varie -------------------- { string toto; // entr >> toto >> temps >> toto >> deltat; // si on lit le deltat on ne peut plus prendre en compte la modif éventuelle du .info ! entr >> toto >> temps ; break; } default : {cout << "\nErreur : valeur incorrecte du type de sauvegarde !\n"; cout << "VariablesTemps::Lecture_base_info(ifstream& entr,const int cas)" << " cas= " << cas << endl; Sortie(1); } }; }; // cas donne le niveau de sauvegarde // = 1 : on sauvegarde tout // = 2 : on sauvegarde uniquement les données variables (supposées comme telles) void VariablesTemps::Ecriture_base_info_temps(ofstream& sort,const int cas) const {switch (cas) { case 1 : // ------- on sauvegarde tout ------------------------- { sort << " ****info_temps " ; sort << " temps_courant " << setprecision(ParaGlob::NbdigdoCA()) << temps << " increment_temps " << setprecision(ParaGlob::NbdigdoCA()) << deltat << " increment_maxi " << setprecision(ParaGlob::NbdigdoCA()) << deltatmaxi << " increment_mini " << setprecision(ParaGlob::NbdigdoCA()) << deltatmini << " temps_fin " << setprecision(ParaGlob::NbdigdoCA()) << tempsfin << " precision_temps " << setprecision(ParaGlob::NbdigdoCA()) << prectemps << "\n"; break; } case 2 : // ----------- sauvegarde uniquement de se qui varie -------------------- { sort << "\n temps_courant " << setprecision(ParaGlob::NbdigdoCA()) << temps ; // << " increment_temps " << setprecision(ParaGlob::NbdigdoCA()) << deltat; break; } default : { cout << "\nErreur : valeur incorrecte du type de sauvegarde !\n"; cout << "VariablesTemps::Ecriture_base_info(ofstream& sort,const int cas)" << " cas= " << cas << endl; Sortie(1); } }; };