// 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 "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::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::TransfoList_io(const List_io & li) { List_io ret; List_io ::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 & 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 & 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(EPS11,"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 & list_enu_etendu , list & list_enu_quelconque , list & list_enu_restant) { // on vide les listes de retour list_enu_quelconque.clear(); list_enu_restant.clear(); // on balaie la list des énu list ::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; };