146 lines
8.6 KiB
C
146 lines
8.6 KiB
C
|
|
||
|
// 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) <https://www.irdl.fr/>.
|
||
|
//
|
||
|
// 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 <https://www.gnu.org/licenses/>.
|
||
|
//
|
||
|
// For more information, please consult: <https://herezh.irdl.fr/>.
|
||
|
|
||
|
/************************************************************************
|
||
|
* *
|
||
|
* DATE: 15/01/97 *
|
||
|
* $ *
|
||
|
* AUTEUR: G RIO (mailto:gerardrio56@free.fr) *
|
||
|
* $ *
|
||
|
* PROJET: Herezh++ *
|
||
|
* $ *
|
||
|
************************************************************************
|
||
|
* deuxième partie du fichier Met_Sfe1.h
|
||
|
* contient en fait toutes les structures de données de passage d'informations
|
||
|
* $ *
|
||
|
* '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' * *
|
||
|
* VERIFICATION: *
|
||
|
* *
|
||
|
* ! date ! auteur ! but ! *
|
||
|
* ------------------------------------------------------------ *
|
||
|
* ! ! ! ! *
|
||
|
* *
|
||
|
* $ *
|
||
|
* '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' *
|
||
|
* MODIFICATIONS:
|
||
|
* *
|
||
|
* ! date ! auteur ! but ! *
|
||
|
* ------------------------------------------------------------ *
|
||
|
* *
|
||
|
* $ *
|
||
|
* *
|
||
|
************************************************************************/
|
||
|
|
||
|
#include "Tenseur.h"
|
||
|
#include "Base.h"
|
||
|
|
||
|
// deuxième partie du fichier Met_Sfe1.h
|
||
|
// contient en fait toutes les structures de données de passage d'informations
|
||
|
|
||
|
|
||
|
/// @addtogroup groupe_des_metrique
|
||
|
/// @{
|
||
|
///
|
||
|
|
||
|
/// CLASSE CONTENEUR : cas des grandeurs relatives à la courbure, grandeurs à 0, t et tdt
|
||
|
/// les données sont publiques
|
||
|
class Courbure_t_tdt
|
||
|
{ public : Courbure_t_tdt () : // constructeur par défaut
|
||
|
aiB_0(NULL),aiH_0(NULL),aiB_t(NULL),aiH_t(NULL),aiB_tdt(NULL),aiH_tdt(NULL)
|
||
|
,aijBB_0(NULL),aijHH_0(NULL),aijBB_t(NULL),aijHH_t(NULL),aijBB_tdt(NULL),aijHH_tdt(NULL)
|
||
|
,curbBB_t(NULL),curbBB_tdt(NULL),curbBB_0(NULL)
|
||
|
,ajacobien_tdt(NULL),ajacobien_t(NULL),ajacobien_0(NULL)
|
||
|
{};
|
||
|
Courbure_t_tdt // constructeur normal
|
||
|
(BaseB * aaiB_0,BaseH * aaiH_0,BaseB * aaiB_t,BaseH * aaiH_t, BaseB * aaiB_tdt
|
||
|
,BaseH *aaiH_tdt
|
||
|
,TenseurBB* aaijBB_0,TenseurHH* aaijHH_0,TenseurBB* aaijBB_t
|
||
|
,TenseurHH* aaijHH_t,TenseurBB* aaijBB_tdt,TenseurHH* aaijHH_tdt
|
||
|
,TenseurBB * gcurbBB_t,TenseurBB * gcurbBB_tdt,TenseurBB * gcurbBB_0
|
||
|
,double* gjacobien,double* gajacobien_t,double* gajacobien_0) :
|
||
|
aiB_0(aaiB_0),aiH_0(aaiH_0),aiB_t(aaiB_t),aiH_t(aaiH_t),aiB_tdt(aaiB_tdt),
|
||
|
aiH_tdt(aaiH_tdt),
|
||
|
aijBB_0(aaijBB_0),aijHH_0(aaijHH_0)
|
||
|
,aijBB_t(aaijBB_t),aijHH_t(aaijHH_t),aijBB_tdt(aaijBB_tdt),aijHH_tdt(aaijHH_tdt)
|
||
|
,curbBB_t(gcurbBB_t),curbBB_tdt(gcurbBB_tdt),curbBB_0(gcurbBB_0),
|
||
|
ajacobien_tdt(gjacobien),ajacobien_t(gajacobien_t),ajacobien_0(gajacobien_0)
|
||
|
{};
|
||
|
Courbure_t_tdt (const Courbure_t_tdt& ex) : // constructeur de copie
|
||
|
aiB_0(ex.aiB_0),aiH_0(ex.aiH_0),aiB_t(ex.aiB_t),aiH_t(ex.aiH_t),aiB_tdt(ex.aiB_tdt)
|
||
|
,aiH_tdt(ex.aiH_tdt),
|
||
|
aijBB_0(ex.aijBB_0),aijHH_0(ex.aijHH_0),aijBB_t(ex.aijBB_t),aijHH_t(ex.aijHH_t)
|
||
|
,aijBB_tdt(ex.aijBB_tdt),aijHH_tdt(ex.aijHH_tdt)
|
||
|
,curbBB_t(ex.curbBB_t),curbBB_tdt(ex.curbBB_tdt),curbBB_0(ex.curbBB_0),
|
||
|
ajacobien_tdt(ex.ajacobien_tdt),ajacobien_t(ex.ajacobien_t),ajacobien_0(ex.ajacobien_0)
|
||
|
{};
|
||
|
|
||
|
Courbure_t_tdt& operator= (const Courbure_t_tdt& ex) // surcharge d'affectation
|
||
|
{aiB_0=ex.aiB_0;aiH_0=ex.aiH_0;aiB_t=ex.aiB_t;aiH_t=ex.aiH_t;aiB_tdt=ex.aiB_tdt;
|
||
|
aiH_tdt=ex.aiH_tdt;
|
||
|
aijBB_0=ex.aijBB_0;aijHH_0=ex.aijHH_0; aijBB_t=ex.aijBB_t;aijHH_t=ex.aijHH_t;
|
||
|
aijBB_tdt=ex.aijBB_tdt;aijHH_tdt=ex.aijHH_tdt;
|
||
|
curbBB_t=ex.curbBB_t;curbBB_tdt=ex.curbBB_tdt;curbBB_0=ex.curbBB_0;
|
||
|
ajacobien_tdt=ex.ajacobien_tdt;ajacobien_t=ex.ajacobien_t;ajacobien_0=ex.ajacobien_0;
|
||
|
return *this;};
|
||
|
// mise à jour des grandeurs
|
||
|
void Mise_a_jour_grandeur(BaseB * aaiB_0,BaseH * aaiH_0,BaseB * aaiB_t,BaseH* aaiH_t
|
||
|
,BaseB * aaiB_tdt,BaseH *aaiH_tdt
|
||
|
,TenseurBB* aaijBB_0,TenseurHH* aaijHH_0,TenseurBB* aaijBB_t,TenseurHH* aaijHH_t
|
||
|
,TenseurBB* aaijBB_tdt,TenseurHH* aaijHH_tdt
|
||
|
,TenseurBB * gcurbBB_t,TenseurBB * gcurbBB_tdt,TenseurBB * gcurbBB_0
|
||
|
,double* gjacobien,double* gajacobien_t,double* gajacobien_0)
|
||
|
{aiB_0=aaiB_0;aiH_0=aaiH_0;aiB_t=aaiB_t;aiH_t=aaiH_t;aiB_tdt=aaiB_tdt;
|
||
|
aiH_tdt=aaiH_tdt;
|
||
|
aijBB_0=aaijBB_0;aijHH_0=aaijHH_0;aijBB_t=aaijBB_t;aijHH_t=aaijHH_t;
|
||
|
aijBB_tdt=aaijBB_tdt;aijHH_tdt=aaijHH_tdt;
|
||
|
curbBB_t=gcurbBB_t;curbBB_tdt=gcurbBB_tdt;curbBB_0=gcurbBB_0;
|
||
|
ajacobien_tdt=gjacobien;ajacobien_t=gajacobien_t;ajacobien_0=gajacobien_0;
|
||
|
};
|
||
|
// mise à jour des grandeurs à 0 et à t sauf les variations (pas de tableau et pas à tdt)
|
||
|
// à partir de grandeurs stockées par ailleurs (il s'aait ici donc d'affectation de contenu et
|
||
|
// non de pointeur !)
|
||
|
void Recup_grandeur_0_t(BaseB & aaiB_0,BaseH & aaiH_0,BaseB & aaiB_t,BaseH& aaiH_t
|
||
|
,TenseurBB& aaijBB_0,TenseurHH& aaijHH_0,TenseurBB& aaijBB_t,TenseurHH& aaijHH_t
|
||
|
,TenseurBB & ,double& gajacobien_0,double& gajacobien_t)
|
||
|
{*aiB_0=aaiB_0;*aiH_0=aaiH_0;*aiB_t=aaiB_t;*aiH_t=aaiH_t;
|
||
|
*aijBB_0=aaijBB_0;*aijHH_0=aaijHH_0;*aijBB_t=aaijBB_t;*aijHH_t=aaijHH_t;
|
||
|
*ajacobien_t=gajacobien_t;*ajacobien_0=gajacobien_0;
|
||
|
};
|
||
|
|
||
|
// variables :
|
||
|
BaseB * aiB_0; BaseH * aiH_0; BaseB * aiB_t; BaseH * aiH_t;BaseB * aiB_tdt;
|
||
|
BaseH * aiH_tdt;
|
||
|
TenseurBB * aijBB_0; TenseurHH * aijHH_0;
|
||
|
TenseurBB * aijBB_t ; TenseurHH * aijHH_t ;TenseurBB * aijBB_tdt;TenseurHH * aijHH_tdt;
|
||
|
TenseurBB * curbBB_t;TenseurBB * curbBB_tdt;TenseurBB * curbBB_0;
|
||
|
double* ajacobien_tdt;double* ajacobien_t;double* ajacobien_0;
|
||
|
};
|
||
|
/// @} // end of group
|
||
|
|