Herezh_dev/herezh_pp/TypeBase/Ddl_enum_etendu.cc

669 lines
34 KiB
C++
Executable file

// 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-2021 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/>.
#include "Ddl_enum_etendu.h"
//======================== tableau tab_Dee ===============================
// on définie le tableau des Ddl_enum_etendu qui sont valides
// en variables globales
// 1) def du tableau static
Tableau < Ddl_enum_etendu > Ddl_enum_etendu::tab_Dee(0);
int Ddl_enum_etendu::taillTab = 0;
// et de la map
map < string, int , std::less < string> > Ddl_enum_etendu::map_Ddl_enum_etendu;
// 2) on se sert d'un contructeur d'une class static
// pour remplir le tableau, et également pour initialiser la map map_Ddl_enum_etendu
// -- tableaux particuliers (ne servent pas à la construction, sont simplement des commodités
Tableau <Ddl_enum_etendu> Ddl_enum_etendu::tab_FN_FT(0); // le tableau des deux ddl etendus
Initialisation_tab_Dee::Initialisation_tab_Dee()
{ Tableau < Ddl_enum_etendu >& tab_Dee = Ddl_enum_etendu::tab_Dee; // pour faciliter
tab_Dee.Change_taille(137); Ddl_enum_etendu::taillTab = tab_Dee.Taille();
int nbenumddl = NbEnum_ddl();
tab_Dee(1).nom = "Green-Lagrange11" ;tab_Dee(1).enu = EPS11;tab_Dee(1).posi_nom = nbenumddl + 1;
tab_Dee(2).nom = "Green-Lagrange22" ;tab_Dee(2).enu = EPS22;tab_Dee(2).posi_nom = nbenumddl + 2;
tab_Dee(3).nom = "Green-Lagrange33" ;tab_Dee(3).enu = EPS33;tab_Dee(3).posi_nom = nbenumddl + 3;
tab_Dee(4).nom = "Green-Lagrange12" ;tab_Dee(4).enu = EPS12;tab_Dee(4).posi_nom = nbenumddl + 4;
tab_Dee(5).nom = "Green-Lagrange13" ;tab_Dee(5).enu = EPS13;tab_Dee(5).posi_nom = nbenumddl + 5;
tab_Dee(6).nom = "Green-Lagrange23" ;tab_Dee(6).enu = EPS23;tab_Dee(6).posi_nom = nbenumddl + 6;
tab_Dee(7).nom = "Almansi11" ;tab_Dee(7).enu = EPS11;tab_Dee(7).posi_nom = nbenumddl + 7;
tab_Dee(8).nom = "Almansi22" ;tab_Dee(8).enu = EPS22;tab_Dee(8).posi_nom = nbenumddl + 8;
tab_Dee(9).nom = "Almansi33" ;tab_Dee(9).enu = EPS33;tab_Dee(9).posi_nom = nbenumddl + 9;
tab_Dee(10).nom = "Almansi12" ;tab_Dee(10).enu = EPS12;tab_Dee(10).posi_nom = nbenumddl + 10;
tab_Dee(11).nom = "Almansi13" ;tab_Dee(11).enu = EPS13;tab_Dee(11).posi_nom = nbenumddl + 11;
tab_Dee(12).nom = "Almansi23" ;tab_Dee(12).enu = EPS23;tab_Dee(12).posi_nom = nbenumddl + 12;
tab_Dee(13).nom = "Cauchy_local11" ;tab_Dee(13).enu = SIG11;tab_Dee(13).posi_nom = nbenumddl + 13;
tab_Dee(14).nom = "Cauchy_local22" ;tab_Dee(14).enu = SIG22;tab_Dee(14).posi_nom = nbenumddl + 14;
tab_Dee(15).nom = "Cauchy_local33" ;tab_Dee(15).enu = SIG33;tab_Dee(15).posi_nom = nbenumddl + 15;
tab_Dee(16).nom = "Cauchy_local12" ;tab_Dee(16).enu = SIG12;tab_Dee(16).posi_nom = nbenumddl + 16;
tab_Dee(17).nom = "Cauchy_local13" ;tab_Dee(17).enu = SIG13;tab_Dee(17).posi_nom = nbenumddl + 17;
tab_Dee(18).nom = "Cauchy_local23" ;tab_Dee(18).enu = SIG23;tab_Dee(18).posi_nom = nbenumddl + 18;
tab_Dee(19).nom = "Almansi_local11" ;tab_Dee(19).enu = EPS11;tab_Dee(19).posi_nom = nbenumddl + 19;
tab_Dee(20).nom = "Almansi_local22" ;tab_Dee(20).enu = EPS22;tab_Dee(20).posi_nom = nbenumddl + 20;
tab_Dee(21).nom = "Almansi_local33" ;tab_Dee(21).enu = EPS33;tab_Dee(21).posi_nom = nbenumddl + 21;
tab_Dee(22).nom = "Almansi_local12" ;tab_Dee(22).enu = EPS12;tab_Dee(22).posi_nom = nbenumddl + 22;
tab_Dee(23).nom = "Almansi_local13" ;tab_Dee(23).enu = EPS13;tab_Dee(23).posi_nom = nbenumddl + 23;
tab_Dee(24).nom = "Almansi_local23" ;tab_Dee(24).enu = EPS23;tab_Dee(24).posi_nom = nbenumddl + 24;
tab_Dee(25).nom = "Def_principaleI" ;tab_Dee(25).enu = EPS11;tab_Dee(25).posi_nom = nbenumddl + 25;
tab_Dee(26).nom = "Def_principaleII" ;tab_Dee(26).enu = EPS11;tab_Dee(26).posi_nom = nbenumddl + 26;
tab_Dee(27).nom = "Def_principaleIII" ;tab_Dee(27).enu = EPS11;tab_Dee(27).posi_nom = nbenumddl + 27;
tab_Dee(28).nom = "Sigma_principaleI" ;tab_Dee(28).enu = SIG11;tab_Dee(28).posi_nom = nbenumddl + 28;
tab_Dee(29).nom = "Sigma_principaleII" ;tab_Dee(29).enu = SIG11;tab_Dee(29).posi_nom = nbenumddl + 29;
tab_Dee(30).nom = "Sigma_principaleIII" ;tab_Dee(30).enu = SIG11;tab_Dee(30).posi_nom = nbenumddl + 30;
tab_Dee(31).nom = "contrainte_mises" ;tab_Dee(31).enu = SIG11;tab_Dee(31).posi_nom = nbenumddl + 31;
tab_Dee(32).nom = "contrainte_tresca" ;tab_Dee(32).enu = SIG11;tab_Dee(32).posi_nom = nbenumddl + 32;
tab_Dee(33).nom = "def_plastique_cumulee" ;tab_Dee(33).enu = EPS11;tab_Dee(33).posi_nom = nbenumddl + 33;
tab_Dee(34).nom = "Vit_def11" ;tab_Dee(34).enu = DEPS11;tab_Dee(34).posi_nom = nbenumddl + 34;
tab_Dee(35).nom = "Vit_def22" ;tab_Dee(35).enu = DEPS22;tab_Dee(35).posi_nom = nbenumddl + 35;
tab_Dee(36).nom = "Vit_def33" ;tab_Dee(36).enu = DEPS33;tab_Dee(36).posi_nom = nbenumddl + 36;
tab_Dee(37).nom = "Vit_def12" ;tab_Dee(37).enu = DEPS12;tab_Dee(37).posi_nom = nbenumddl + 37;
tab_Dee(38).nom = "Vit_def13" ;tab_Dee(38).enu = DEPS13;tab_Dee(38).posi_nom = nbenumddl + 38;
tab_Dee(39).nom = "Vit_def23" ;tab_Dee(39).enu = DEPS23;tab_Dee(39).posi_nom = nbenumddl + 39;
tab_Dee(40).nom = "Vit_principaleI" ;tab_Dee(40).enu = DEPS11;tab_Dee(40).posi_nom = nbenumddl + 40;
tab_Dee(41).nom = "Vit_principaleII" ;tab_Dee(41).enu = DEPS11;tab_Dee(41).posi_nom = nbenumddl + 41;
tab_Dee(42).nom = "Vit_principaleIII" ;tab_Dee(42).enu = DEPS11;tab_Dee(42).posi_nom = nbenumddl + 42;
tab_Dee(43).nom = "Delta_def11" ;tab_Dee(43).enu = EPS11;tab_Dee(43).posi_nom = nbenumddl + 43;
tab_Dee(44).nom = "Delta_def22" ;tab_Dee(44).enu = EPS22;tab_Dee(44).posi_nom = nbenumddl + 44;
tab_Dee(45).nom = "Delta_def33" ;tab_Dee(45).enu = EPS33;tab_Dee(45).posi_nom = nbenumddl + 45;
tab_Dee(46).nom = "Delta_def12" ;tab_Dee(46).enu = EPS12;tab_Dee(46).posi_nom = nbenumddl + 46;
tab_Dee(47).nom = "Delta_def13" ;tab_Dee(47).enu = EPS13;tab_Dee(47).posi_nom = nbenumddl + 47;
tab_Dee(48).nom = "Delta_def23" ;tab_Dee(48).enu = EPS23;tab_Dee(48).posi_nom = nbenumddl + 48;
tab_Dee(49).nom = "logarithmique11" ;tab_Dee(49).enu = EPS11;tab_Dee(49).posi_nom = nbenumddl + 49;
tab_Dee(50).nom = "logarithmique22" ;tab_Dee(50).enu = EPS22;tab_Dee(50).posi_nom = nbenumddl + 50;
tab_Dee(51).nom = "logarithmique33" ;tab_Dee(51).enu = EPS33;tab_Dee(51).posi_nom = nbenumddl + 51;
tab_Dee(52).nom = "logarithmique12" ;tab_Dee(52).enu = EPS12;tab_Dee(52).posi_nom = nbenumddl + 52;
tab_Dee(53).nom = "logarithmique13" ;tab_Dee(53).enu = EPS13;tab_Dee(53).posi_nom = nbenumddl + 53;
tab_Dee(54).nom = "logarithmique23" ;tab_Dee(54).enu = EPS23;tab_Dee(54).posi_nom = nbenumddl + 54;
tab_Dee(55).nom = "Almansi_totale11" ;tab_Dee(55).enu = EPS11;tab_Dee(55).posi_nom = nbenumddl + 55;
tab_Dee(56).nom = "Almansi_totale22" ;tab_Dee(56).enu = EPS22;tab_Dee(56).posi_nom = nbenumddl + 56;
tab_Dee(57).nom = "Almansi_totale33" ;tab_Dee(57).enu = EPS33;tab_Dee(57).posi_nom = nbenumddl + 57;
tab_Dee(58).nom = "Almansi_totale12" ;tab_Dee(58).enu = EPS12;tab_Dee(58).posi_nom = nbenumddl + 58;
tab_Dee(59).nom = "Almansi_totale13" ;tab_Dee(59).enu = EPS13;tab_Dee(59).posi_nom = nbenumddl + 59;
tab_Dee(60).nom = "Almansi_totale23" ;tab_Dee(60).enu = EPS23;tab_Dee(60).posi_nom = nbenumddl + 60;
tab_Dee(61).nom = "Green_Lagrange_totale11" ;tab_Dee(61).enu = EPS11;tab_Dee(61).posi_nom = nbenumddl + 61;
tab_Dee(62).nom = "Green_Lagrange_totale22" ;tab_Dee(62).enu = EPS22;tab_Dee(62).posi_nom = nbenumddl + 62;
tab_Dee(63).nom = "Green_Lagrange_totale33" ;tab_Dee(63).enu = EPS33;tab_Dee(63).posi_nom = nbenumddl + 63;
tab_Dee(64).nom = "Green_Lagrange_totale12" ;tab_Dee(64).enu = EPS12;tab_Dee(64).posi_nom = nbenumddl + 64;
tab_Dee(65).nom = "Green_Lagrange_totale13" ;tab_Dee(65).enu = EPS13;tab_Dee(65).posi_nom = nbenumddl + 65;
tab_Dee(66).nom = "Green_Lagrange_totale23" ;tab_Dee(66).enu = EPS23;tab_Dee(66).posi_nom = nbenumddl + 66;
tab_Dee(67).nom = "logarithmique_totale11" ;tab_Dee(67).enu = EPS11;tab_Dee(67).posi_nom = nbenumddl + 67;
tab_Dee(68).nom = "logarithmique_totale22" ;tab_Dee(68).enu = EPS22;tab_Dee(68).posi_nom = nbenumddl + 68;
tab_Dee(69).nom = "logarithmique_totale33" ;tab_Dee(69).enu = EPS33;tab_Dee(69).posi_nom = nbenumddl + 69;
tab_Dee(70).nom = "logarithmique_totale12" ;tab_Dee(70).enu = EPS12;tab_Dee(70).posi_nom = nbenumddl + 70;
tab_Dee(71).nom = "logarithmique_totale13" ;tab_Dee(71).enu = EPS13;tab_Dee(71).posi_nom = nbenumddl + 71;
tab_Dee(72).nom = "logarithmique_totale23" ;tab_Dee(72).enu = EPS23;tab_Dee(72).posi_nom = nbenumddl + 72;
tab_Dee(73).nom = "energie_elastique" ; tab_Dee(73).enu = EPS11; tab_Dee(73).posi_nom = nbenumddl + 73;
tab_Dee(74).nom = "dissipation_plastique" ;tab_Dee(74).enu = EPS11;tab_Dee(74).posi_nom = nbenumddl + 74;
tab_Dee(75).nom = "dissipation_visqueuse" ;tab_Dee(75).enu = EPS11;tab_Dee(75).posi_nom = nbenumddl + 75;
tab_Dee(76).nom = "masse_relax_dyn" ;tab_Dee(76).enu = X1;tab_Dee(76).posi_nom = nbenumddl + 76;
tab_Dee(77).nom = "def_duale_mises" ;tab_Dee(77).enu = EPS11;tab_Dee(77).posi_nom = nbenumddl + 77;
tab_Dee(78).nom = "Spherique_eps" ; tab_Dee(78).enu = EPS11; tab_Dee(78).posi_nom = nbenumddl + 78;
tab_Dee(79).nom = "Q_eps" ; tab_Dee(79).enu = EPS11; tab_Dee(79).posi_nom = nbenumddl + 79;
tab_Dee(80).nom = "Cos3phi_eps" ; tab_Dee(80).enu = EPS11; tab_Dee(80).posi_nom = nbenumddl + 80;
tab_Dee(81).nom = "Spherique_sig" ; tab_Dee(81).enu = SIG11; tab_Dee(81).posi_nom = nbenumddl + 81;
tab_Dee(82).nom = "Q_sig" ; tab_Dee(82).enu = SIG11; tab_Dee(82).posi_nom = nbenumddl + 82;
tab_Dee(83).nom = "Cos3phi_sig" ; tab_Dee(83).enu = SIG11; tab_Dee(83).posi_nom = nbenumddl + 83;
tab_Dee(84).nom = "Spherique_Deps" ; tab_Dee(84).enu = DEPS11; tab_Dee(84).posi_nom = nbenumddl + 84;
tab_Dee(85).nom = "Q_Deps" ; tab_Dee(85).enu = DEPS11; tab_Dee(85).posi_nom = nbenumddl + 85;
tab_Dee(86).nom = "Cos3phi_Deps" ; tab_Dee(86).enu = DEPS11; tab_Dee(86).posi_nom = nbenumddl + 86;
tab_Dee(87).nom = "def_equivalente" ; tab_Dee(87).enu = DEPS11; tab_Dee(87).posi_nom = nbenumddl + 87;
tab_Dee(88).nom = "def_duale_mises_maxi" ;tab_Dee(88).enu = EPS11;tab_Dee(88).posi_nom = nbenumddl + 88;
tab_Dee(89).nom = "vitesse_def_equivalente" ;tab_Dee(89).enu = DEPS11;tab_Dee(89).posi_nom = nbenumddl + 89;
tab_Dee(90).nom = "reaction_normale" ;tab_Dee(90).enu = X1;tab_Dee(90).posi_nom = nbenumddl + 90;
tab_Dee(91).nom = "reaction_tangentielle" ;tab_Dee(91).enu = X1;tab_Dee(91).posi_nom = nbenumddl + 91;
tab_Dee(92).nom = "force_gene_ext" ;tab_Dee(92).enu = X1;tab_Dee(92).posi_nom = nbenumddl + 92;
tab_Dee(93).nom = "force_gene_int" ;tab_Dee(93).enu = X1;tab_Dee(93).posi_nom = nbenumddl + 93;
tab_Dee(94).nom = "pression_ext" ;tab_Dee(94).enu = X1;tab_Dee(94).posi_nom = nbenumddl + 94;
tab_Dee(95 ).nom = "N_11" ;tab_Dee(95).enu = SIG11;tab_Dee(95).posi_nom = nbenumddl + 95;
tab_Dee(96 ).nom = "N_22" ;tab_Dee(96).enu = SIG22;tab_Dee(96).posi_nom = nbenumddl + 96;
tab_Dee(97 ).nom = "N_33" ;tab_Dee(97).enu = SIG33;tab_Dee(97).posi_nom = nbenumddl + 97;
tab_Dee(98 ).nom = "N_12" ;tab_Dee(98).enu = SIG12;tab_Dee(98).posi_nom = nbenumddl + 98;
tab_Dee(99 ).nom = "N_13" ;tab_Dee(99).enu = SIG13;tab_Dee(99).posi_nom = nbenumddl + 99;
tab_Dee(100).nom = "N_23" ;tab_Dee(100).enu = SIG23;tab_Dee(100).posi_nom = nbenumddl + 100;
tab_Dee(101).nom = "M_11" ;tab_Dee(101).enu = SIG11;tab_Dee(101).posi_nom = nbenumddl + 101;
tab_Dee(102).nom = "M_22" ;tab_Dee(102).enu = SIG22;tab_Dee(102).posi_nom = nbenumddl + 102;
tab_Dee(103).nom = "M_33" ;tab_Dee(103).enu = SIG33;tab_Dee(103).posi_nom = nbenumddl + 103;
tab_Dee(104).nom = "M_12" ;tab_Dee(104).enu = SIG12;tab_Dee(104).posi_nom = nbenumddl + 104;
tab_Dee(105).nom = "M_13" ;tab_Dee(105).enu = SIG13;tab_Dee(105).posi_nom = nbenumddl + 105;
tab_Dee(106).nom = "M_23" ;tab_Dee(106).enu = SIG23;tab_Dee(106).posi_nom = nbenumddl + 106;
tab_Dee(107).nom = "norme_gradT" ;tab_Dee(107).enu = GRADT1;tab_Dee(107).posi_nom = nbenumddl + 107;
tab_Dee(108).nom = "norme_DgradT" ;tab_Dee(108).enu = DGRADT1;tab_Dee(108).posi_nom = nbenumddl + 108;
tab_Dee(109).nom = "norme_dens_flux" ;tab_Dee(109).enu = FLUXD1;tab_Dee(109).posi_nom = nbenumddl + 109;
tab_Dee(110).nom = "contact_actif" ;tab_Dee(110).enu = X1;tab_Dee(110).posi_nom = nbenumddl + 110;
tab_Dee(111).nom = "DeltagradT1" ;tab_Dee(111).enu = GRADT1;tab_Dee(111).posi_nom = nbenumddl + 111;
tab_Dee(112).nom = "DeltagradT2" ;tab_Dee(112).enu = GRADT1;tab_Dee(112).posi_nom = nbenumddl + 112;
tab_Dee(113).nom = "DeltagradT3" ;tab_Dee(113).enu = GRADT1;tab_Dee(113).posi_nom = nbenumddl + 113;
tab_Dee(114).nom = "N_surf_1" ;tab_Dee(114).enu = X1;tab_Dee(114).posi_nom = nbenumddl + 114;
tab_Dee(115).nom = "N_surf_2" ;tab_Dee(115).enu = X2;tab_Dee(115).posi_nom = nbenumddl + 115;
tab_Dee(116).nom = "N_surf_3" ;tab_Dee(116).enu = X3;tab_Dee(116).posi_nom = nbenumddl + 116;
tab_Dee(117).nom = "N_surf_1_t" ;tab_Dee(117).enu = X1;tab_Dee(117).posi_nom = nbenumddl + 117;
tab_Dee(118).nom = "N_surf_2_t" ;tab_Dee(118).enu = X2;tab_Dee(118).posi_nom = nbenumddl + 118;
tab_Dee(119).nom = "N_surf_3_t" ;tab_Dee(119).enu = X3;tab_Dee(119).posi_nom = nbenumddl + 119;
tab_Dee(120).nom = "N_surf_1_t0" ;tab_Dee(120).enu = X1;tab_Dee(120).posi_nom = nbenumddl + 120;
tab_Dee(121).nom = "N_surf_2_t0" ;tab_Dee(121).enu = X2;tab_Dee(121).posi_nom = nbenumddl + 121;
tab_Dee(122).nom = "N_surf_3_t0" ;tab_Dee(122).enu = X3;tab_Dee(122).posi_nom = nbenumddl + 122;
tab_Dee(123).nom = "X1_t" ;tab_Dee(123).enu = X1;tab_Dee(123).posi_nom = nbenumddl + 123;
tab_Dee(124).nom = "X2_t" ;tab_Dee(124).enu = X2;tab_Dee(124).posi_nom = nbenumddl + 124;
tab_Dee(125).nom = "X3_t" ;tab_Dee(125).enu = X3;tab_Dee(125).posi_nom = nbenumddl + 125;
tab_Dee(126).nom = "X1_t0" ;tab_Dee(126).enu = X1;tab_Dee(126).posi_nom = nbenumddl + 126;
tab_Dee(127).nom = "X2_t0" ;tab_Dee(127).enu = X2;tab_Dee(127).posi_nom = nbenumddl + 127;
tab_Dee(128).nom = "X3_t0" ;tab_Dee(128).enu = X3;tab_Dee(128).posi_nom = nbenumddl + 128;
tab_Dee(129).nom = "Masse_diago_noeud" ;tab_Dee(129).enu = X1;tab_Dee(129).posi_nom = nbenumddl + 129;
tab_Dee(130).nom = "comp_tors_reaction" ;tab_Dee(130).enu = X1;tab_Dee(130).posi_nom = nbenumddl + 130;
tab_Dee(131).nom = "I_B" ; tab_Dee(131).enu = EPS11; tab_Dee(131).posi_nom = nbenumddl + 131;
tab_Dee(132).nom = "II_B" ; tab_Dee(132).enu = EPS11; tab_Dee(132).posi_nom = nbenumddl + 132;
tab_Dee(133).nom = "III_B" ; tab_Dee(133).enu = EPS11; tab_Dee(133).posi_nom = nbenumddl + 133;
tab_Dee(134).nom = "J1" ; tab_Dee(134).enu = EPS11; tab_Dee(134).posi_nom = nbenumddl + 134;
tab_Dee(135).nom = "J2" ; tab_Dee(135).enu = EPS11; tab_Dee(135).posi_nom = nbenumddl + 135;
tab_Dee(136).nom = "J3" ; tab_Dee(136).enu = EPS11; tab_Dee(136).posi_nom = nbenumddl + 136;
tab_Dee(137).nom = "ERREUR_RELATIVE" ; tab_Dee(137).enu = ERREUR; tab_Dee(137).posi_nom = nbenumddl + 137;
// initialisation de la map qui relie string et Ddl_enum_etendu
for (int i=1; i<= Ddl_enum_etendu::taillTab; i++)
Ddl_enum_etendu::map_Ddl_enum_etendu[tab_Dee(i).nom] = i;
// cas de tableaux particuliers
Ddl_enum_etendu::tab_FN_FT.Change_taille(2);
Ddl_enum_etendu::tab_FN_FT(1) = tab_Dee(90);Ddl_enum_etendu::tab_FN_FT(2) = tab_Dee(91);
};
// 3) initialisation réelle du tableau
Initialisation_tab_Dee Ddl_enum_etendu::init_tab_Dee;
//======================== fin tableau tab_Dee ===============================
Ddl_enum_etendu::Ddl_enum_etendu(Enum_ddl en , string no ) :
nom(no), enu(en)
{// vérification dans grandeurs
if (nom != "-")
{ // cas 1: le nom est connu et différent d'un nom énuméré
map < string, int , std::less < string> >::iterator ili=
map_Ddl_enum_etendu.find(nom);
if (ili != map_Ddl_enum_etendu.end())
{ *this = tab_Dee((*ili).second);}
else
{// cas 2: le nom est égal à un type énuméré
if (ExisteEnum_ddl(no))
{ nom ="-"; enu = Id_nom_ddl(no); posi_nom = enu;}
else
{ cout << "\n erreur de construction d un Ddl_enum_etendu !!"
<< " le nom " << nom << " n'est pas connu ";
cout << "\n Ddl_enum_etendu(Enum_ddl en = NU_DDL, string no = )";
Sortie(1);
}
}
}
else
posi_nom = enu;
};
// constructeur fonction d'un string
Ddl_enum_etendu::Ddl_enum_etendu( string no ) :
nom(no)
{// vérification dans grandeurs
if (nom != "-")
{ // cas 1: le nom est connu et différent d'un nom énuméré
map < string, int , std::less < string> >::iterator ili=
map_Ddl_enum_etendu.find(nom);
if (ili != map_Ddl_enum_etendu.end())
{ *this = tab_Dee((*ili).second);}
else
{// cas 2: le nom est égal à un type énuméré
if (ExisteEnum_ddl(no))
{ nom ="-"; enu = Id_nom_ddl(no); posi_nom = enu;}
else
{ cout << "\n erreur de construction d un Ddl_enum_etendu !!"
<< " le nom " << nom << " n'est pas connu ";
cout << "\n Ddl_enum_etendu(Enum_ddl en = NU_DDL, string no = )";
Sortie(1);
}
}
}
else
{ posi_nom = NbEnum_ddl();
enu = NU_DDL;
}
};
/*// constructeur fonction d'un tableau de caractère
Ddl_enum_etendu::Ddl_enum_etendu( char* no ) :
nom(no)
{// vérification dans grandeurs
if (nom != "-")
{ bool verif = false; //int posi;
// cas 1: le nom est connu et différent d'un nom énuméré
map < string, int , std::less < string> >::iterator ili=
map_Ddl_enum_etendu.find(nom);
if (ili != map_Ddl_enum_etendu.end())
{ *this = tab_Dee((*ili).second);}
// for (int i=1;i<= taillTab;i++)
// if (tab_Dee(i).nom == nom)
// { verif = true;posi = i; break;}
// if (verif)
// {posi_nom = NbEnum_ddl() + posi;enu=tab_Dee(posi).enu;}
else
{// cas 2: le nom est égal à un type énuméré
if (ExisteEnum_ddl(no))
{ nom ="-"; enu = Id_nom_ddl(no); posi_nom = enu;}
else
{ cout << "\n erreur de construction d un Ddl_enum_etendu !!"
<< " le nom " << nom << " n'est pas connu ";
cout << "\n Ddl_enum_etendu( char* no )";
Sortie(1);
}
}
}
else
{ posi_nom = NbEnum_ddl();
enu = NU_DDL;
}
}; */
// retour le type de grandeur auquel apartient le ddl étendue
// par exemple : UY : apartiend à un vecteur
// SIG12 : à un tenseur, TEMP : à un scalaire
EnumTypeGrandeur Ddl_enum_etendu::TypeDeGrandeur() const
{ int nbenumddl = NbEnum_ddl();
if (nom=="-")
{// cas d'un ddl pur
return TypeGrandeur(enu);
}
else if (((posi_nom >=1+nbenumddl)&&(posi_nom<=24+nbenumddl)) ||
((posi_nom >=34+nbenumddl)&&(posi_nom<=39+nbenumddl)) ||
((posi_nom >=43+nbenumddl)&&(posi_nom<=72+nbenumddl)) ||
((posi_nom >=95+nbenumddl)&&(posi_nom<=106+nbenumddl)))
{return TENSEURBB;}
else if (((posi_nom >=92+nbenumddl)&&(posi_nom<=93+nbenumddl))||
((posi_nom >=111+nbenumddl)&&(posi_nom<=128+nbenumddl)))
{return COORDONNEE;}
else
{return SCALAIRE;};
};
// test pour savoir si le nom passer en paramètre est valide
// ramène vrai si no correspond à un Enum_ddl ou
// s'il correspond à un type dérivé : ex contrainte de mise est un type
// dérivée de contrainte
bool Ddl_enum_etendu::VerifExistence(string rep)
{ // tout d'abord on vérifie pour les Enum_ddl
if (ExisteEnum_ddl(rep)) return true;
// maintenant vérification des types dérivées
return ( map_Ddl_enum_etendu.find(rep) != map_Ddl_enum_etendu.end());
};
// récupération d'un Ddl_enum_etendu correspondant à un string
Ddl_enum_etendu Ddl_enum_etendu::RecupDdl_enum_etendu(string rep)
{ // tout d'abord on balaie les Enum_ddl
if (ExisteEnum_ddl(rep))
{ // recup du ddl
Enum_ddl en = Id_nom_ddl (rep);
Ddl_enum_etendu a(en);
// retour
return a;
};
// sinon cas des types dérivées
map < string, int , std::less < string> >::iterator ili=
map_Ddl_enum_etendu.find(rep);
if (ili != map_Ddl_enum_etendu.end())
{ return tab_Dee((*ili).second);}
else
{ cout << "\n erreur il n'existe pas de type de ddl etendue correspondant à "
<< rep << " !!!!!";
cout << "\n Ddl_enum_etendu RecupDdl_enum_etendu(string rep)";
Sortie(1);
};
// pour taire le compilo
Ddl_enum_etendu a;
return a;
};
// transformation d'une liste d'Enum_ddl en Ddl_enum_etendu
List_io <Ddl_enum_etendu> Ddl_enum_etendu::TransfoList_io(const List_io <Enum_ddl> & li)
{ List_io <Ddl_enum_etendu> ret;
List_io <Enum_ddl>::const_iterator ii,iifin= li.end();
for (ii = li.begin();ii != iifin; ii++)
ret.push_back(Ddl_enum_etendu(*ii));
return ret;
}
// transformation d'un tableau d'énumération en un tableau de Ddl_enum_etendu
Tableau < Ddl_enum_etendu > Ddl_enum_etendu::TransfoTableau(const Tableau <Enum_ddl> & tab)
{ int taille = tab.Taille();
Tableau < Ddl_enum_etendu > taa(taille);
for (int i=1;i<= taille;i++)
taa(i) = Ddl_enum_etendu(tab(i));
return taa;
};
// test si un élément existe dans une liste donnée
bool Ddl_enum_etendu::Existe_dans_la_liste
(const List_io <Ddl_enum_etendu> & lis, const Ddl_enum_etendu& dd)
{ List_io < Ddl_enum_etendu>::const_iterator retour_existe =
find(lis.begin(),lis.end(),dd);
if (retour_existe != lis.end())
return true;
else //
return false;
};
// récupération du premier Ddl_enum_etendu du même type : i.e. la première composante
Ddl_enum_etendu Ddl_enum_etendu::PremierDdlEnumEtenduFamille(const Ddl_enum_etendu& a)
{ int nbenumddl = NbEnum_ddl();
if (a.nom=="-")
{// cas d'un ddl pur
return Ddl_enum_etendu(PremierDdlFamille(a.Enum()),"-");
}
else
{int posi = a.posi_nom - nbenumddl;
if (posi < 7)
return Ddl_enum_etendu(EPS11,"Green-Lagrange11");
else if (posi < 13)
return Ddl_enum_etendu(EPS11,"Almansi11");
else if (posi < 19)
return Ddl_enum_etendu(SIG11,"Cauchy_local11");
else if (posi < 25)
return Ddl_enum_etendu(SIG11,"Almansi_local11");
else if (posi < 34) // scalaire idem
return Ddl_enum_etendu(a);
else if (posi < 40)
return Ddl_enum_etendu(DEPS11,"Vit_def11");
else if (posi < 43)
return Ddl_enum_etendu(a);
else if (posi < 49)
return Ddl_enum_etendu(EPS11,"Delta_def11");
else if (posi < 55)
return Ddl_enum_etendu(EPS11,"logarithmique11");
else if (posi < 61)
return Ddl_enum_etendu(EPS11,"Almansi_totale11");
else if (posi < 67)
return Ddl_enum_etendu(EPS11,"Green_Lagrange_totale11");
else if (posi < 73)
return Ddl_enum_etendu(EPS11,"logarithmique_totale11");
else if (posi < 95)
return Ddl_enum_etendu(a);
else if (posi < 101)
return Ddl_enum_etendu(SIG11,"N_11");
else if (posi < 107)
return Ddl_enum_etendu(SIG11,"M_11");
else if (posi < 111)
return Ddl_enum_etendu(a);
else if (posi < 114)
return Ddl_enum_etendu(GRADT1,"DeltagradT1");
else if (posi < 117)
return Ddl_enum_etendu(X1,"N_surf_1");
else if (posi < 120)
return Ddl_enum_etendu(X1,"N_surf_1_t");
else if (posi < 123)
return Ddl_enum_etendu(X1,"N_surf_1_t0");
else if (posi < 126)
return Ddl_enum_etendu(X1,"X1_t");
else if (posi < 129)
return Ddl_enum_etendu(X1,"X1_t0");
else if (posi < 138)
return Ddl_enum_etendu(a);
else
{cout << "\n *** erreur *** cas non prevu " << a
<< "\n Ddl_enum_etendu::PremierDdlEnumEtenduFamille(..."
<< endl;
Sortie(1);
};
};
};
// création et récupération d'une liste d'enum de grandeurs quelconques équivalentes
// sous forme de grandeurs évoluées, à la liste de Ddl_enum_etendu passée en argument
// et d'une liste de ddl_enum_etendu, pour les grandeurs qui n'ont pas d'équivalent
// retourne également true ou false suivant que toutes les grandeurs ont un équivalent ou pas
void Ddl_enum_etendu::Equivalent_en_grandeur_quelconque
(const list <Ddl_enum_etendu> & list_enu_etendu
, list <EnumTypeQuelconque> & list_enu_quelconque
, list <Ddl_enum_etendu> & list_enu_restant)
{ // on vide les listes de retour
list_enu_quelconque.clear();
list_enu_restant.clear();
// on balaie la list des énu
list <Ddl_enum_etendu>::const_iterator ie,iefin=list_enu_etendu.end();
for (ie=list_enu_etendu.begin();ie!=iefin;ie++)
{ // on traite d'abord le cas des ddl pur
if ((*ie).Position() <= NbEnum_ddl())
{EnumTypeQuelconque enu_quelc = Equi_Enum_ddl_en_enu_quelconque((*ie).Enum());
if (enu_quelc ==UN_DDL_ENUM_ETENDUE)
list_enu_restant.push_back((*ie));
else list_enu_quelconque.push_back(enu_quelc);
}
else // sinon c'est un cas évolué
{int posi = (*ie).Position();
switch (posi)
{ case 1: case 2: case 3: case 4: case 5: case 6:
{list_enu_quelconque.push_back(GREEN_LAGRANGE); break;}
case 7: case 8: case 9: case 10: case 11: case 12:
{list_enu_quelconque.push_back(ALMANSI); break;}
case 25: case 26: case 27:
{list_enu_quelconque.push_back(DEF_PRINCIPALES); break;}
case 28: case 29: case 30:
{list_enu_quelconque.push_back(SIGMA_PRINCIPALES); break;}
case 31: {list_enu_quelconque.push_back(CONTRAINTE_MISES); break;}
case 32: {list_enu_quelconque.push_back(CONTRAINTE_TRESCA); break;}
case 34:case 35:case 36:case 37:case 38:case 39:
{list_enu_quelconque.push_back(VITESSE_DEFORMATION_COURANTE); break;}
case 40: case 41: case 42:
{list_enu_quelconque.push_back(VIT_PRINCIPALES); break;}
case 43:case 44:case 45:case 46:case 47:case 48:
{list_enu_quelconque.push_back(DELTA_DEF); break;}
case 49: case 50: case 51: case 52: case 53: case 54:
{list_enu_quelconque.push_back(LOGARITHMIQUE); break;}
case 55: case 56: case 57: case 58: case 59: case 60:
{list_enu_quelconque.push_back(ALMANSI_TOTAL);
break;
}
case 61: case 62: case 63: case 64: case 65: case 66:
{list_enu_quelconque.push_back( GREEN_LAGRANGE_TOTAL);
break;
}
case 67: case 68: case 69: case 70: case 71: case 72:
{list_enu_quelconque.push_back(LOGARITHMIQUE_TOTALE);
break;
}
case 77: {list_enu_quelconque.push_back(DEF_DUALE_MISES); break;}
case 78: {list_enu_quelconque.push_back(SPHERIQUE_EPS); break;}
case 79: {list_enu_quelconque.push_back(Q_EPS); break;}
case 80: {list_enu_quelconque.push_back(COS3PHI_EPS); break;}
case 81: {list_enu_quelconque.push_back(SPHERIQUE_SIG); break;}
case 82: {list_enu_quelconque.push_back(Q_SIG); break;}
case 83: {list_enu_quelconque.push_back(COS3PHI_SIG); break;}
case 84: {list_enu_quelconque.push_back(SPHERIQUE_DEPS); break;}
case 85: {list_enu_quelconque.push_back(Q_DEPS); break;}
case 86: {list_enu_quelconque.push_back(COS3PHI_DEPS); break;}
case 114: case 115: case 116: // le vecteur normal au temps t+dt
{list_enu_quelconque.push_back( NN_SURF); break;}
case 117: case 118: case 119: // le vecteur normal au temps t
{list_enu_quelconque.push_back( NN_SURF_t); break;}
case 120: case 121: case 122: // le vecteur normal au temps t0
{list_enu_quelconque.push_back( NN_SURF_t0); break;}
case 123: case 124: case 125: // la position à t
{list_enu_quelconque.push_back( POSITION_GEOMETRIQUE_t); break;}
case 126: case 127: case 128: // la position à t0
{list_enu_quelconque.push_back( POSITION_GEOMETRIQUE_t0); break;}
case 130:
{list_enu_quelconque.push_back(COMP_TORSEUR_REACTION); break;}
case 131:
{list_enu_quelconque.push_back(INVAR_B1); break;}
case 132:
{list_enu_quelconque.push_back(INVAR_B2); break;}
case 133:
{list_enu_quelconque.push_back(INVAR_B3); break;}
case 134:
{list_enu_quelconque.push_back(INVAR_J1); break;}
case 135:
{list_enu_quelconque.push_back(INVAR_J2); break;}
case 136:
{list_enu_quelconque.push_back(INVAR_J3); break;}
case 137:
{list_enu_quelconque.push_back(ERREUR_SIG_RELATIVE); break;}
default: // sinon on le stock en ddl_étendu
list_enu_restant.push_back((*ie));break;
};// fin du switch
}; // fin du test: if ((*ie).Position() <= NbEnum_ddl())
}; // fin de la boucle sur les ddl étendues de départ
};
// idem mais pour une seule grandeur: ramène l'énum quelconque s'il existe sinon
// ramène RIEN_TYPEQUELCONQUE
EnumTypeQuelconque Ddl_enum_etendu::Equivalent_en_grandeur_quelconque(const Ddl_enum_etendu & enu_etendu)
{ EnumTypeQuelconque en_tQ = RIEN_TYPEQUELCONQUE; // init par défaut
// on traite d'abord le cas des ddl pur
if (enu_etendu.Position() <= NbEnum_ddl())
{EnumTypeQuelconque enu_quelc = Equi_Enum_ddl_en_enu_quelconque(enu_etendu.Enum());
if (enu_quelc ==UN_DDL_ENUM_ETENDUE)
en_tQ = RIEN_TYPEQUELCONQUE;
else en_tQ = enu_quelc;
}
else // sinon c'est un cas évolué
{int posi = enu_etendu.Position()-NbEnum_ddl();
switch (posi)
{ case 1: case 2: case 3: case 4: case 5: case 6:
{en_tQ = GREEN_LAGRANGE; break;}
case 7: case 8: case 9: case 10: case 11: case 12:
{en_tQ = ALMANSI; break;}
case 25: case 26: case 27:
{en_tQ = DEF_PRINCIPALES; break;}
case 28: case 29: case 30:
{en_tQ = SIGMA_PRINCIPALES; break;}
case 31: {en_tQ = CONTRAINTE_MISES; break;}
case 32: {en_tQ = CONTRAINTE_TRESCA; break;}
case 34:case 35:case 36:case 37:case 38:case 39:
{en_tQ = VITESSE_DEFORMATION_COURANTE; break;}
case 40: case 41: case 42:
{en_tQ = VIT_PRINCIPALES; break;}
case 43:case 44:case 45:case 46:case 47:case 48:
{en_tQ = DELTA_DEF; break;}
case 49: case 50: case 51: case 52: case 53: case 54:
{en_tQ = LOGARITHMIQUE; break;}
case 55: case 56: case 57: case 58: case 59: case 60:
{en_tQ = ALMANSI_TOTAL;break;
}
case 61: case 62: case 63: case 64: case 65: case 66:
{en_tQ = GREEN_LAGRANGE_TOTAL;break;
}
case 67: case 68: case 69: case 70: case 71: case 72:
{en_tQ = LOGARITHMIQUE_TOTALE;break;
}
case 77: {en_tQ = DEF_DUALE_MISES; break;}
case 78: {en_tQ = SPHERIQUE_EPS; break;}
case 79: {en_tQ = Q_EPS; break;}
case 80: {en_tQ = COS3PHI_EPS; break;}
case 81: {en_tQ = SPHERIQUE_SIG; break;}
case 82: {en_tQ = Q_SIG; break;}
case 83: {en_tQ = COS3PHI_SIG; break;}
case 84: {en_tQ = SPHERIQUE_DEPS; break;}
case 85: {en_tQ = Q_DEPS; break;}
case 86: {en_tQ = COS3PHI_DEPS; break;}
case 114: case 115: case 116: // le vecteur normal
{en_tQ = NN_SURF; break;}
case 117: case 118: case 119: // le vecteur normal au temps t
{en_tQ = NN_SURF_t; break;}
case 120: case 121: case 122: // le vecteur normal au temps t0
{en_tQ = NN_SURF_t0; break;}
case 123: case 124: case 125: // la position à t
{en_tQ = POSITION_GEOMETRIQUE_t; break;}
case 126: case 127: case 128: // la position à t0
{en_tQ = POSITION_GEOMETRIQUE_t0; break;}
case 130:
{en_tQ = COMP_TORSEUR_REACTION; break;}
case 131:
{en_tQ = INVAR_B1; break;}
case 132:
{en_tQ = INVAR_B2; break;}
case 133:
{en_tQ = INVAR_B3; break;}
case 134:
{en_tQ = INVAR_J1; break;}
case 135:
{en_tQ = INVAR_J2; break;}
case 136:
{en_tQ = INVAR_J3; break;}
case 137:
{en_tQ = ERREUR_SIG_RELATIVE; break;}
default: // sinon on le stock en ddl_étendu
en_tQ = RIEN_TYPEQUELCONQUE;break;
};// fin du switch
}; // fin du test: if (enu_etendu.Position() <= NbEnum_ddl())
// retour
return en_tQ;
};