ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/microstructure/src/mstruct_parametres.cpp
Revision: 929
Committed: Fri May 11 18:14:54 2018 UTC (7 years ago) by couturad
File size: 49404 byte(s)
Log Message:
Mise a jour des fonctionnalites de MICROSTRUCTURE

File Contents

# User Rev Content
1 couturad 919 #include "mstruct_parametres.h"
2     #include "mstruct_generateur_rsa.h"
3 couturad 926 #include "mg_export.h"
4 couturad 919 #include <string.h>
5     #include <fstream>
6     #include <cstdlib>
7    
8     using namespace MICROSTRUCTURE;
9    
10     void PARAMETRES::ini_param_generateur_rsa(OT_PARAMETRES* params, int type_inclusion,char* nom_groupe_forme)
11     {
12     params->ajouter("Type_generateur","0",OT_PARAMETRES::DOUBLE,"Type de generateur : RSA [1], ");
13     params->ajouter("Nom_mgcg_modele","VES",OT_PARAMETRES::STRING,"Nom du MG_CG_MODELE");
14     params->ajouter("Nom_groupe_inclusion",nom_groupe_forme,OT_PARAMETRES::STRING,"Nom du groupe d'inclusion (Ex: Sphere)");
15     params->ajouter("Boite3D_distribution_Xmin","-0.1",OT_PARAMETRES::DOUBLE,"Xmin boite3D de distribution d'inclusion");
16     params->ajouter("Boite3D_distribution_Ymin","-0.1",OT_PARAMETRES::DOUBLE,"Ymin boite3D de distribution d'inclusion");
17     params->ajouter("Boite3D_distribution_Zmin","-0.1",OT_PARAMETRES::DOUBLE,"Zmin boite3D de distribution d'inclusion");
18     params->ajouter("Boite3D_distribution_Xmax","1.1",OT_PARAMETRES::DOUBLE,"Xmax boite3D de distribution d'inclusion");
19     params->ajouter("Boite3D_distribution_Ymax","1.1",OT_PARAMETRES::DOUBLE,"Ymax boite3D de distribution d'inclusion");
20     params->ajouter("Boite3D_distribution_Zmax","1.1",OT_PARAMETRES::DOUBLE,"Zmax boite3D de distribution d'inclusion");
21     params->ajouter("Nb_pas_X","20",OT_PARAMETRES::DOUBLE,"Nombre de pas selon X pout la creation d'un octree");
22     params->ajouter("Nb_pas_Y","20",OT_PARAMETRES::DOUBLE,"Nombre de pas selon Y pout la creation d'un octree");
23     params->ajouter("Nb_pas_Z","20",OT_PARAMETRES::DOUBLE,"Nombre de pas selon Z pout la creation d'un octree");
24 couturad 929 params->ajouter("Fraction_volumique_cible","0.05",OT_PARAMETRES::DOUBLE,"Fraction volumique cible d'inclusion [0.0, 1.0]");
25     params->ajouter("Eps_fraction_volumique","0.001",OT_PARAMETRES::DOUBLE,"Epsilon fraction volumique");
26 couturad 919 if(type_inclusion==GENERATEUR_RSA::TYPE_INCLUSION::SPHERE)
27     {
28     params->ajouter("Type_inclusion","0",OT_PARAMETRES::DOUBLE,"Type d'inclusion : Sphere [0], Cylindre [1]");
29     params->ajouter("Mu_rayon","0.2",OT_PARAMETRES::DOUBLE,"Moyenne du rayon de la sphere");
30     params->ajouter("Sigma_rayon","0.0",OT_PARAMETRES::DOUBLE,"Ecart type du rayon de la sphere");
31     }
32     if(type_inclusion==GENERATEUR_RSA::TYPE_INCLUSION::CYLINDRE)
33     {
34     params->ajouter("Type_inclusion","1",OT_PARAMETRES::DOUBLE,"Type d'inclusion : Sphere [0], Cylindre [1]");
35 couturad 926 params->ajouter("Mu_rayon","0.05",OT_PARAMETRES::DOUBLE,"Moyenne du rayon du cylindre");
36 couturad 919 params->ajouter("Sigma_rayon","0.0",OT_PARAMETRES::DOUBLE,"Ecart type du rayon du cylindre");
37 couturad 926 params->ajouter("Mu_longueur","0.4",OT_PARAMETRES::DOUBLE,"Moyenne de la longueur du cylindre");
38 couturad 919 params->ajouter("Sigma_longueur","0.0",OT_PARAMETRES::DOUBLE,"Ecart type de la longueur du cylindre");
39 couturad 929 params->ajouter("Mu_theta","0.0",OT_PARAMETRES::DOUBLE,"Moyenne de l'angle theta");
40     params->ajouter("Sigma_theta","0.0",OT_PARAMETRES::DOUBLE,"Ecart type de l'angle theta");
41     params->ajouter("Type_distribution_theta","0",OT_PARAMETRES::DOUBLE,"Type de distribution de l'angle theta : Uniforme[0], Normale[1]");
42     params->ajouter("Mu_phi","0.0",OT_PARAMETRES::DOUBLE,"Moyenne de l'angle phi");
43     params->ajouter("Sigma_phi","0.0",OT_PARAMETRES::DOUBLE,"Ecart type de l'angle phi");
44     params->ajouter("Type_distribution_phi","0",OT_PARAMETRES::DOUBLE,"Type de distribution de l'angle phi : Uniforme[0], Normale[1]");
45 couturad 919 }
46     params->ajouter("Porosite","0",OT_PARAMETRES::DOUBLE,"Considerer l'inclusion comme etant une porosite (vide) [1]");
47 couturad 926 params->ajouter("Distance_min_inter_volume","0.04",OT_PARAMETRES::DOUBLE,"Distance minimale qui separe deux inclusions");
48     params->ajouter("Volume_min","0.0008",OT_PARAMETRES::DOUBLE,"Volume minimal admissible de l'inclusion");
49     params->ajouter("Aire_min","0.001963",OT_PARAMETRES::DOUBLE,"Aire minimal admissible d'une face de l'inclusion");
50 couturad 919 params->ajouter("Longueur_min","0.02",OT_PARAMETRES::DOUBLE,"Longueur minimal admissible d'une arete ");
51     params->ajouter("Angle_min","0.7854",OT_PARAMETRES::DOUBLE,"Angle minimal admissible entre deux faces");
52     params->ajouter("Nb_volume_max","500",OT_PARAMETRES::DOUBLE,"Nombre maximal d'inclusion");
53     params->ajouter("Nb_iteration_max","2000",OT_PARAMETRES::DOUBLE,"Nombre maximal d'iteration");
54     }
55    
56     void PARAMETRES::ini_param_materiau(OT_PARAMETRES* params,char* nom_groupe_forme)
57     {
58     params->ajouter("Nom_groupe_forme",nom_groupe_forme,OT_PARAMETRES::STRING,"Nom du groupe de forme (Ex: Sphere, Matrice)");
59     params->ajouter("Mu_E","69.0e9",OT_PARAMETRES::DOUBLE,"Moyenne du module d'elasticite");
60     params->ajouter("Sigma_E","0.0",OT_PARAMETRES::DOUBLE,"Ecart type du module d'elasticite");
61     params->ajouter("Mu_nu","0.3",OT_PARAMETRES::DOUBLE,"Moyenne du coefficient de Poisson");
62     params->ajouter("Sigma_nu","0.0",OT_PARAMETRES::DOUBLE,"Ecart type du coefficient de Poisson");
63     }
64    
65     void PARAMETRES::ini_param_carte_taille(OT_PARAMETRES* params)
66     {
67     params->ajouter("Nom_carte","carte",OT_PARAMETRES::STRING,"Nom de la carte de taille");
68 couturad 926 params->ajouter("Ecart_nodal","0.04",OT_PARAMETRES::DOUBLE,"Ecart nodal");
69 couturad 919 params->ajouter("Fechantillonnage","20",OT_PARAMETRES::DOUBLE,"Nombre d'échantillon par entité");
70 couturad 926 params->ajouter("Nb_cellule_direction","50",OT_PARAMETRES::DOUBLE,"Nombre de cellules de la FEM_SOLUTION dans les directions x,y,z");
71 couturad 919 params->ajouter("Nom_fem_solution","solcarte",OT_PARAMETRES::STRING,"Nom de la FEM_SOLUTION");
72     params->ajouter("Nb_couche_min","2",OT_PARAMETRES::DOUBLE,"Nombre de couches entre chaque solide");
73     params->ajouter("Nb_pas","32",OT_PARAMETRES::DOUBLE,"Nombre de pas de balayage");
74     params->ajouter("Facteur_augmentation","25",OT_PARAMETRES::DOUBLE,"Facteur d'augmentation de l'ecart nodal d'une cellule a l'autre");
75     }
76    
77     void PARAMETRES::ini_param_mailleur(OT_PARAMETRES* params)
78     {
79     params->ajouter("Niveau","3",OT_PARAMETRES::DOUBLE,"Niveau du maillage : 1D [1], 2D [2], 3D [3]");
80     params->ajouter("Niveau_opt_2d","5",OT_PARAMETRES::DOUBLE,"Limite supérieure des mailles à optimiser");
81     params->ajouter("Niveau_opt_3d","2",OT_PARAMETRES::DOUBLE,"Limite supérieure des mailles à optimiser");
82     params->ajouter("Priorite_metrique","0.65",OT_PARAMETRES::DOUBLE,"Valeur de la prise en compte de la métrique versus la qualité");
83     params->ajouter("Analyse","0",OT_PARAMETRES::DOUBLE,"Analyse de la qualité du maillage après le maillage : Analyse [1]");
84     }
85    
86     void PARAMETRES::ini_param_mailleur_fem(OT_PARAMETRES* params)
87     {
88     params->ajouter("Degre","2",OT_PARAMETRES::DOUBLE,"Degre du maillage a creer");
89     params->ajouter("Analyse","0",OT_PARAMETRES::DOUBLE,"Analyse de la qualité du maillage après le maillage : Analyse [1]");
90     params->ajouter("Optimisation_num_noeud","0",OT_PARAMETRES::DOUBLE,"Optimisation de la numerotation des noeuds : Optimisation [1]");
91     }
92    
93     void PARAMETRES::ini_param_etude(OT_PARAMETRES* params, int type_etude)
94     {
95     params->ajouter("Nom_etude","etude_1",OT_PARAMETRES::STRING,"Nom de l'etude");
96     params->ajouter("Fichier_param_aster","param_aster.txt",OT_PARAMETRES::STRING,"Nom du fichier de parametres aster");
97     params->ajouter("Type_etude",type_etude,OT_PARAMETRES::DOUBLE,"Type d'etude : Mecanique [0], Thermique [1]");
98     params->ajouter("Type_calcul","0",OT_PARAMETRES::DOUBLE,"Type de calcul : Elastique [0]");
99     params->ajouter("Code_resu","11111111",OT_PARAMETRES::STRING,"Code de resolution");
100 couturad 926 if(type_etude==MSTRUCT_VES::TYPE_ETUDE::MECANIQUE)
101 couturad 919 {
102     params->ajouter("Type_Chargement","0",OT_PARAMETRES::DOUBLE,"Type de chargement : Spherique [0], Deviatorique [1]");
103     params->ajouter("Type_CL","0",OT_PARAMETRES::DOUBLE,"Type de conditions aux limites : CLDH [0], CLCH[1]");
104     params->ajouter("Valeur_CL","0.0001",OT_PARAMETRES::DOUBLE,"Valeur de la condition aux limites");
105     }
106     }
107    
108     void PARAMETRES::ini_param_homogeneisation(OT_PARAMETRES* params)
109     {
110     params->ajouter("Fraction_volumique_CAD",0,OT_PARAMETRES::DOUBLE,"Calculer la fraction volumique CAD d'un groupe de forme [1]");
111     params->ajouter("Fraction_volumique_mg_maillage",0,OT_PARAMETRES::DOUBLE,"Calculer la fraction volumique du mg_maillage d'un groupe de forme [1]");
112     params->ajouter("Fraction_volumique_fem_maillage",0,OT_PARAMETRES::DOUBLE,"Calculer la fraction volumique du fem_maillage d'un groupe de forme [1]");
113     params->ajouter("Tenseur_orientation",0,OT_PARAMETRES::DOUBLE,"Calculer le tenseur d'orientation d'un groupe de forme [1]");
114     params->ajouter("Comparer_champ_theorie",0,OT_PARAMETRES::DOUBLE,"Comparer un champ par rapport a un champ theorique [1]");
115     params->ajouter("Critere_comparaison",0,OT_PARAMETRES::DOUBLE,"Erreur moyenne absolue [0], Erreur moyenne au carre [2]");
116     params->ajouter("Moyenne_volumique_champ",0,OT_PARAMETRES::DOUBLE,"Calculer la moyenne volumique d'un champ [1]");
117     params->ajouter("Num_solution",0,OT_PARAMETRES::DOUBLE,"Numero de la solution");
118     params->ajouter("Nom_champ","Sigma",OT_PARAMETRES::STRING,"Nom du champ");
119 couturad 926 params->ajouter("Nom_groupe_forme","ALL",OT_PARAMETRES::STRING,"Nom du groupe d'inclusion. Si [ALL] prend le ves au complet");
120 couturad 919 params->ajouter("Boite_analyse",0,OT_PARAMETRES::DOUBLE,"Calculer à partir des elements donc le centre de la boite englobante figure dans la boite d'analyse");
121     params->ajouter("Boite3D_analyse_Xmin","0.1",OT_PARAMETRES::DOUBLE,"Xmin boite3D d'analyse");
122     params->ajouter("Boite3D_analyse_Ymin","0.1",OT_PARAMETRES::DOUBLE,"Ymin boite3D d'analyse");
123     params->ajouter("Boite3D_analyse_Zmin","0.1",OT_PARAMETRES::DOUBLE,"Zmin boite3D d'analyse");
124     params->ajouter("Boite3D_analyse_Xmax","0.9",OT_PARAMETRES::DOUBLE,"Xmax boite3D d'analyse");
125     params->ajouter("Boite3D_analyse_Ymax","0.9",OT_PARAMETRES::DOUBLE,"Ymax boite3D d'analyse");
126     params->ajouter("Boite3D_analyse_Zmax","0.9",OT_PARAMETRES::DOUBLE,"Zmax boite3D d'analyse");
127     params->ajouter("Exporter_liste_resultat","0",OT_PARAMETRES::DOUBLE,"Exporter une liste de resultats");
128     params->ajouter("Fichier_liste_resultat","fichier_liste_resultat.txt",OT_PARAMETRES::STRING,"Exporter une liste de resultats");
129     params->ajouter("Val_champ_theorique_XX","0.0",OT_PARAMETRES::DOUBLE,"Valeur d'un champ theorique XX");
130     params->ajouter("Val_champ_theorique_YY","0.0",OT_PARAMETRES::DOUBLE,"Valeur d'un champ theorique YY");
131     params->ajouter("Val_champ_theorique_ZZ","0.0",OT_PARAMETRES::DOUBLE,"Valeur d'un champ theorique ZZ");
132     params->ajouter("Val_champ_theorique_XY","0.0",OT_PARAMETRES::DOUBLE,"Valeur d'un champ theorique XY");
133     params->ajouter("Val_champ_theorique_XZ","0.0",OT_PARAMETRES::DOUBLE,"Valeur d'un champ theorique XZ");
134     params->ajouter("Val_champ_theorique_YZ","0.0",OT_PARAMETRES::DOUBLE,"Valeur d'un champ theorique YZ");
135     }
136    
137 couturad 926 void PARAMETRES::ini_param_analyse(OT_PARAMETRES* params,int type_analyse)
138     {
139     if(type_analyse==MSTRUCT_ANALYSE::TYPE_ANALYSE::CHAMP)
140     {
141     params->ajouter("Identifiant","Champ_SIGMA",OT_PARAMETRES::STRING,"Identifiant de l'analyse");
142     params->ajouter("Type_analyse",0,OT_PARAMETRES::DOUBLE,"Type d'analyse : Champ [0], Orientation [1], CAO [2], MAILLAGE_MG [3], MAILLAGE_FEM [4]");
143     params->ajouter("Num_solution",2,OT_PARAMETRES::DOUBLE,"Numero de la FEM_SOLUTION solution (0,1,2,...)");
144     params->ajouter("Nom_groupe_forme","ALL",OT_PARAMETRES::STRING,"Nom du groupe d'inclusion. Si [ALL] prend le ves au complet");
145     params->ajouter("Boite_analyse",0,OT_PARAMETRES::DOUBLE,"Calculer à partir des elements donc le centre de la boite englobante figure dans la boite d'analyse [1]");
146     params->ajouter("Boite3D_analyse_Xmin","0.1",OT_PARAMETRES::DOUBLE,"Xmin boite3D d'analyse");
147     params->ajouter("Boite3D_analyse_Ymin","0.1",OT_PARAMETRES::DOUBLE,"Ymin boite3D d'analyse");
148     params->ajouter("Boite3D_analyse_Zmin","0.1",OT_PARAMETRES::DOUBLE,"Zmin boite3D d'analyse");
149     params->ajouter("Boite3D_analyse_Xmax","0.9",OT_PARAMETRES::DOUBLE,"Xmax boite3D d'analyse");
150     params->ajouter("Boite3D_analyse_Ymax","0.9",OT_PARAMETRES::DOUBLE,"Ymax boite3D d'analyse");
151     params->ajouter("Boite3D_analyse_Zmax","0.9",OT_PARAMETRES::DOUBLE,"Zmax boite3D d'analyse");
152     params->ajouter("Largeur_colonne_distribution","0.1",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
153     }
154     else if(type_analyse==MSTRUCT_ANALYSE::TYPE_ANALYSE::ORIENTATION)
155     {
156     params->ajouter("Identifiant","Orientation_Cylindre",OT_PARAMETRES::STRING,"Identifiant de l'analyse");
157     params->ajouter("Type_analyse",1,OT_PARAMETRES::DOUBLE,"Type d'analyse : Champ [0], Orientation [1], CAO [2], MAILLAGE_MG [3], MAILLAGE_FEM [4]");
158     params->ajouter("Nom_groupe_forme","Cylindre",OT_PARAMETRES::STRING,"Nom du groupe d'inclusion.");
159     params->ajouter("Boite_analyse",0,OT_PARAMETRES::DOUBLE,"Calculer à partir des elements donc le centre de la boite englobante figure dans la boite d'analyse [1]");
160     params->ajouter("Boite3D_analyse_Xmin","0.1",OT_PARAMETRES::DOUBLE,"Xmin boite3D d'analyse");
161     params->ajouter("Boite3D_analyse_Ymin","0.1",OT_PARAMETRES::DOUBLE,"Ymin boite3D d'analyse");
162     params->ajouter("Boite3D_analyse_Zmin","0.1",OT_PARAMETRES::DOUBLE,"Zmin boite3D d'analyse");
163     params->ajouter("Boite3D_analyse_Xmax","0.9",OT_PARAMETRES::DOUBLE,"Xmax boite3D d'analyse");
164     params->ajouter("Boite3D_analyse_Ymax","0.9",OT_PARAMETRES::DOUBLE,"Ymax boite3D d'analyse");
165     params->ajouter("Boite3D_analyse_Zmax","0.9",OT_PARAMETRES::DOUBLE,"Zmax boite3D d'analyse");
166     }
167     else if(type_analyse==MSTRUCT_ANALYSE::TYPE_ANALYSE::CAO)
168     {
169     params->ajouter("Identifiant","Cao",OT_PARAMETRES::STRING,"Identifiant de l'analyse");
170     params->ajouter("Type_analyse",2,OT_PARAMETRES::DOUBLE,"Type d'analyse : Champ [0], Orientation [1], CAO [2], MAILLAGE_MG [3], MAILLAGE_FEM [4]");
171     params->ajouter("Nom_groupe_forme","ALL",OT_PARAMETRES::STRING,"Nom du groupe d'inclusion. Si [NULL] prend le ves au complet");
172     params->ajouter("Largeur_colonne_distribution_nb_volume","1.0",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
173     params->ajouter("Largeur_colonne_distribution_nb_forme","1.0",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
174     params->ajouter("Largeur_colonne_distribution_volume","0.001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
175     params->ajouter("Largeur_colonne_distribution_fraction_volumique","0.001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
176     params->ajouter("Largeur_colonne_distribution_volume_forme","0.001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
177     }
178     else if(type_analyse==MSTRUCT_ANALYSE::TYPE_ANALYSE::MAILLAGE_MG)
179     {
180     params->ajouter("Identifiant","Maillage_MG",OT_PARAMETRES::STRING,"Identifiant de l'analyse");
181     params->ajouter("Type_analyse",3,OT_PARAMETRES::DOUBLE,"Type d'analyse : Champ [0], Orientation [1], CAO [2], MAILLAGE_MG [3], MAILLAGE_FEM [4]");
182     params->ajouter("Nom_groupe_forme","ALL",OT_PARAMETRES::STRING,"Nom du groupe d'inclusion. Si [ALL] prend le ves au complet");
183     params->ajouter("Boite_analyse",0,OT_PARAMETRES::DOUBLE,"Calculer à partir des elements donc le centre de la boite englobante figure dans la boite d'analyse [1]");
184     params->ajouter("Boite3D_analyse_Xmin","0.1",OT_PARAMETRES::DOUBLE,"Xmin boite3D d'analyse");
185     params->ajouter("Boite3D_analyse_Ymin","0.1",OT_PARAMETRES::DOUBLE,"Ymin boite3D d'analyse");
186     params->ajouter("Boite3D_analyse_Zmin","0.1",OT_PARAMETRES::DOUBLE,"Zmin boite3D d'analyse");
187     params->ajouter("Boite3D_analyse_Xmax","0.9",OT_PARAMETRES::DOUBLE,"Xmax boite3D d'analyse");
188     params->ajouter("Boite3D_analyse_Ymax","0.9",OT_PARAMETRES::DOUBLE,"Ymax boite3D d'analyse");
189     params->ajouter("Boite3D_analyse_Zmax","0.9",OT_PARAMETRES::DOUBLE,"Zmax boite3D d'analyse");
190     params->ajouter("Largeur_colonne_distribution_nb_element_2D","100",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
191     params->ajouter("Largeur_colonne_distribution_nb_element_3D","100",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
192     params->ajouter("Largeur_colonne_distribution_qualite_2D","0.001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
193     params->ajouter("Largeur_colonne_distribution_qualite_3D","0.001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
194     params->ajouter("Largeur_colonne_distribution_taille_2D","0.0001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
195     params->ajouter("Largeur_colonne_distribution_taille_3D","0.0001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
196     }
197     else if(type_analyse==MSTRUCT_ANALYSE::TYPE_ANALYSE::MAILLAGE_FEM)
198     {
199     params->ajouter("Identifiant","Maillage_FEM",OT_PARAMETRES::STRING,"Identifiant de l'analyse");
200     params->ajouter("Type_analyse",4,OT_PARAMETRES::DOUBLE,"Type d'analyse : Champ [0], Orientation [1], CAO [2], MAILLAGE_MG [3], MAILLAGE_FEM [4]");
201     params->ajouter("Nom_groupe_forme","ALL",OT_PARAMETRES::STRING,"Nom du groupe d'inclusion. Si [ALL] prend le ves au complet");
202     params->ajouter("Boite_analyse",0,OT_PARAMETRES::DOUBLE,"Calculer à partir des elements donc le centre de la boite englobante figure dans la boite d'analyse [1]");
203     params->ajouter("Boite3D_analyse_Xmin","0.1",OT_PARAMETRES::DOUBLE,"Xmin boite3D d'analyse");
204     params->ajouter("Boite3D_analyse_Ymin","0.1",OT_PARAMETRES::DOUBLE,"Ymin boite3D d'analyse");
205     params->ajouter("Boite3D_analyse_Zmin","0.1",OT_PARAMETRES::DOUBLE,"Zmin boite3D d'analyse");
206     params->ajouter("Boite3D_analyse_Xmax","0.9",OT_PARAMETRES::DOUBLE,"Xmax boite3D d'analyse");
207     params->ajouter("Boite3D_analyse_Ymax","0.9",OT_PARAMETRES::DOUBLE,"Ymax boite3D d'analyse");
208     params->ajouter("Boite3D_analyse_Zmax","0.9",OT_PARAMETRES::DOUBLE,"Zmax boite3D d'analyse");
209     params->ajouter("Largeur_colonne_distribution_nb_element_2D","100",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
210     params->ajouter("Largeur_colonne_distribution_nb_element_3D","100",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
211     params->ajouter("Largeur_colonne_distribution_jacobien_2D_min","0.001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
212     params->ajouter("Largeur_colonne_distribution_jacobien_2D_max","0.001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
213     params->ajouter("Largeur_colonne_distribution_jacobien_3D_min","0.001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
214     params->ajouter("Largeur_colonne_distribution_jacobien_3D_max","0.001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
215     params->ajouter("Largeur_colonne_distribution_distortion_2D","0.001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
216     params->ajouter("Largeur_colonne_distribution_distortion_3D","0.001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
217     }
218     }
219    
220     void PARAMETRES::ini_param_ver(OT_PARAMETRES* params)
221     {
222     params->ajouter("Identifiant_epsilon","Champ_EPSILON",OT_PARAMETRES::STRING,"Identifiant de l'analyse du champ epsilon");
223     params->ajouter("Identifiant_sigma","Champ_SIGMA",OT_PARAMETRES::STRING,"Identifiant de l'analyse du champ sigma");
224 couturad 927 params->ajouter("Largeur_colonne_distribution_module_Kapp","100000",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
225     params->ajouter("Largeur_colonne_distribution_module_Gapp","100000",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
226     params->ajouter("Largeur_colonne_distribution_module_Eapp","100000",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
227     params->ajouter("Largeur_colonne_distribution_module_Nuapp","0.001",OT_PARAMETRES::DOUBLE,"Largeur d'une colonne pour graph de distribution");
228 couturad 926 }
229    
230    
231    
232    
233 couturad 919 int PARAMETRES::generer_fichier_parametres(char* nom_dossier_param)
234     {
235     int mkdir_err=0;
236     std::string sys_command = "mkdir "; sys_command.append(nom_dossier_param);
237     mkdir_err = system(sys_command.c_str());
238     if(mkdir_err !=0)
239     {
240     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametres! ***" << std::endl;
241     return FAIL;
242     }
243     sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/geometrie");
244     mkdir_err = system(sys_command.c_str());
245     if(mkdir_err !=0)
246     {
247     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametres/geometrie ! ***" << std::endl;
248     return FAIL;
249     }
250     sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/materiau");
251     mkdir_err = system(sys_command.c_str());
252     if(mkdir_err !=0)
253     {
254     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametre/materiau ! ***" << std::endl;
255     return FAIL;
256     }
257     sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/carte");
258     mkdir_err = system(sys_command.c_str());
259     if(mkdir_err !=0)
260     {
261     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametres/carte ! ***" << std::endl;
262     return FAIL;
263     }
264     sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/maillage");
265     mkdir_err = system(sys_command.c_str());
266     if(mkdir_err !=0)
267     {
268     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametre/maillage ! ***" << std::endl;
269     return FAIL;
270     }
271     sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/fem_maillage");
272     mkdir_err = system(sys_command.c_str());
273     if(mkdir_err !=0)
274     {
275     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametre/fem_maillage ! ***" << std::endl;
276     return FAIL;
277     }
278     sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/etude");
279     mkdir_err = system(sys_command.c_str());
280     if(mkdir_err !=0)
281     {
282     std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametre/etude ! ***" << std::endl;
283     return FAIL;
284     }
285 couturad 926 sys_command.clear(); sys_command.append("mkdir -p ");sys_command.append(nom_dossier_param); sys_command.append("/analyse");
286 couturad 919 mkdir_err = system(sys_command.c_str());
287     if(mkdir_err !=0)
288     {
289 couturad 926 std::cerr << "*** PARAMETRES::generer_fichier_parametres -> Erreur lors de la creation des dossiers parametre/analyse ! ***" << std::endl;
290 couturad 919 return FAIL;
291     }
292     std::ofstream f;
293     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/geometrie/lstparam_geo.txt");
294     f.open(sys_command.c_str(),ios::out);
295     f << "// Fichier de parametres GEOMETRIE" << std::endl;
296     f << "// [Nombre de fichier de parametres]" << std::endl;
297 couturad 926 f << "NB_FICHIER_PARAM 1" << std::endl;
298 couturad 919 f << "param_geo_cylindre.txt" << std::endl;
299     f.close();
300     OT_PARAMETRES params_geo_1;
301 couturad 926 ini_param_generateur_rsa(&params_geo_1,GENERATEUR_RSA::TYPE_INCLUSION::CYLINDRE,(char*)"Cylindre");
302     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/geometrie/param_geo_cylindre.txt");
303 couturad 919 params_geo_1.enregistrer((char*)sys_command.c_str());
304    
305     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/materiau/lstparam_mat.txt");
306     f.open(sys_command.c_str(),ios::out);
307     f << "// Fichier de parametres MATERIAU" << std::endl;
308     f << "// [Nombre de fichier de parametres]" << std::endl;
309 couturad 926 f << "NB_FICHIER_PARAM 2" << std::endl;
310 couturad 919 f << "param_mat_cylindre.txt" << std::endl;
311     f << "param_mat_matrice.txt" << std::endl;
312     f.close();
313     OT_PARAMETRES params_mat_cylindre;
314     ini_param_materiau(&params_mat_cylindre,(char*)"Cylindre");
315 couturad 926 params_mat_cylindre.change_valeur("Mu_E",75.0e9);
316     params_mat_cylindre.change_valeur("Mu_nu",0.22);
317 couturad 919 sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/materiau/param_mat_cylindre.txt");
318     params_mat_cylindre.enregistrer((char*)sys_command.c_str());
319     OT_PARAMETRES params_mat_matrice;
320     ini_param_materiau(&params_mat_matrice,(char*)"Matrice");
321 couturad 926 params_mat_matrice.change_valeur("Mu_E",3.5e9);
322     params_mat_matrice.change_valeur("Mu_nu",0.33);
323 couturad 919 sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/materiau/param_mat_matrice.txt");
324     params_mat_matrice.enregistrer((char*)sys_command.c_str());
325    
326     OT_PARAMETRES params_carte;
327     ini_param_carte_taille(&params_carte);
328     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/carte/param_carte.txt");
329     params_carte.enregistrer((char*)sys_command.c_str());
330    
331     OT_PARAMETRES params_maill;
332     ini_param_mailleur(&params_maill);
333     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/maillage/param_maill.txt");
334     params_maill.enregistrer((char*)sys_command.c_str());
335    
336     OT_PARAMETRES params_fem_maillage;
337     ini_param_mailleur_fem(&params_fem_maillage);
338     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/fem_maillage/param_fem_maill.txt");
339     params_fem_maillage.enregistrer((char*)sys_command.c_str());
340    
341 couturad 926 OT_PARAMETRES params_etude_CLDH_sph;
342     ini_param_etude(&params_etude_CLDH_sph,MSTRUCT_VES::TYPE_ETUDE::MECANIQUE);
343     params_etude_CLDH_sph.change_valeur("Nom_etude","etude_CLDH_sph");
344     params_etude_CLDH_sph.change_valeur("Type_Chargement",0);
345     params_etude_CLDH_sph.change_valeur("Type_CL",0);
346     params_etude_CLDH_sph.change_valeur("Valeur_CL",0.0001);
347     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/etude/param_etude_CLDH_sph.txt");
348     params_etude_CLDH_sph.enregistrer((char*)sys_command.c_str());
349 couturad 919
350 couturad 926 OT_PARAMETRES params_etude_CLCH_sph;
351     ini_param_etude(&params_etude_CLCH_sph,MSTRUCT_VES::TYPE_ETUDE::MECANIQUE);
352     params_etude_CLCH_sph.change_valeur("Nom_etude","etude_CLCH_sph");
353     params_etude_CLCH_sph.change_valeur("Type_Chargement",0);
354     params_etude_CLCH_sph.change_valeur("Type_CL",1);
355     params_etude_CLCH_sph.change_valeur("Valeur_CL",1000);
356     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/etude/param_etude_CLCH_sph.txt");
357     params_etude_CLCH_sph.enregistrer((char*)sys_command.c_str());
358    
359     OT_PARAMETRES params_etude_CLDH_dev;
360     ini_param_etude(&params_etude_CLDH_dev,MSTRUCT_VES::TYPE_ETUDE::MECANIQUE);
361     params_etude_CLDH_dev.change_valeur("Nom_etude","etude_CLDH_dev");
362     params_etude_CLDH_dev.change_valeur("Type_Chargement",1);
363     params_etude_CLDH_dev.change_valeur("Type_CL",0);
364     params_etude_CLDH_dev.change_valeur("Valeur_CL",0.0001);
365     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/etude/param_etude_CLDH_dev.txt");
366     params_etude_CLDH_dev.enregistrer((char*)sys_command.c_str());
367    
368     OT_PARAMETRES params_etude_CLCH_dev;
369     ini_param_etude(&params_etude_CLCH_dev,MSTRUCT_VES::TYPE_ETUDE::MECANIQUE);
370     params_etude_CLCH_dev.change_valeur("Nom_etude","etude_CLCH_dev");
371     params_etude_CLCH_dev.change_valeur("Type_Chargement",1);
372     params_etude_CLCH_dev.change_valeur("Type_CL",1);
373     params_etude_CLCH_dev.change_valeur("Valeur_CL",1000);
374     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/etude/param_etude_CLCH_dev.txt");
375     params_etude_CLCH_dev.enregistrer((char*)sys_command.c_str());
376    
377     MG_EXPORT exp;
378     OT_PARAMETRES *params_aster=exp.get_param_aster();
379     params_aster->change_valeur("Memoire",3072);
380     params_aster->change_valeur("Temps_max",250000);
381     params_aster->change_valeur("Nb_CPU",8);
382     params_aster->change_valeur("Noeud_ele",2);
383 couturad 929 params_aster->change_valeur("Base_num_mail",36);
384 couturad 926 sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/etude/param_aster.txt");
385     params_aster->enregistrer((char*)sys_command.c_str());
386    
387     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/lstparam_analyse.txt");
388 couturad 919 f.open(sys_command.c_str(),ios::out);
389 couturad 926 f << "// Fichier de parametres ANALYSE" << std::endl;
390 couturad 919 f << "// Nombre de fichier de parametres" << std::endl;
391 couturad 926 f << "NB_FICHIER_PARAM 16" << std::endl;
392     f << "params_analyse_champ_sigma.txt" << std::endl;
393     f << "params_analyse_champ_sigma_boite.txt" << std::endl;
394     f << "params_analyse_champ_epsilon.txt" << std::endl;
395     f << "params_analyse_champ_epsilon_boite.txt" << std::endl;
396     f << "params_analyse_orientation.txt" << std::endl;
397     f << "params_analyse_orientation_boite.txt" << std::endl;
398     f << "params_analyse_cao_all.txt" << std::endl;
399     f << "params_analyse_cao_cylindre.txt" << std::endl;
400     f << "params_analyse_cao_matrice.txt" << std::endl;
401     f << "params_analyse_mg_maillage_all.txt" << std::endl;
402     f << "params_analyse_mg_maillage_cylindre.txt" << std::endl;
403     f << "params_analyse_mg_maillage_matrice.txt" << std::endl;
404     f << "params_analyse_fem_maillage_all.txt" << std::endl;
405     f << "params_analyse_fem_maillage_all_boite.txt" << std::endl;
406     f << "params_analyse_fem_maillage_cylindre.txt" << std::endl;
407     f << "params_analyse_fem_maillage_matrice.txt" << std::endl;
408 couturad 919 f.close();
409 couturad 926 OT_PARAMETRES params_analyse_champ_sigma;
410     ini_param_analyse(&params_analyse_champ_sigma,MSTRUCT_ANALYSE::TYPE_ANALYSE::CHAMP);
411     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_champ_sigma.txt");
412     params_analyse_champ_sigma.change_valeur("Identifiant","Champ_SIGMA");
413     params_analyse_champ_sigma.enregistrer((char*)sys_command.c_str());
414     OT_PARAMETRES params_analyse_champ_sigma_boite;
415     ini_param_analyse(&params_analyse_champ_sigma_boite,MSTRUCT_ANALYSE::TYPE_ANALYSE::CHAMP);
416     params_analyse_champ_sigma_boite.change_valeur("Boite_analyse",1);
417     params_analyse_champ_sigma_boite.change_valeur("Identifiant","Champ_SIGMA_boite");
418     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_champ_sigma_boite.txt");
419     params_analyse_champ_sigma_boite.enregistrer((char*)sys_command.c_str());
420 couturad 919
421 couturad 926 OT_PARAMETRES params_analyse_champ_epsilon;
422     ini_param_analyse(&params_analyse_champ_epsilon,MSTRUCT_ANALYSE::TYPE_ANALYSE::CHAMP);
423     params_analyse_champ_epsilon.change_valeur("Identifiant","Champ_EPSILON");
424     params_analyse_champ_epsilon.change_valeur("Num_solution",1);
425     params_analyse_champ_epsilon.change_valeur("Largeur_colonne_distribution",0.00000000001);
426     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_champ_epsilon.txt");
427     params_analyse_champ_epsilon.enregistrer((char*)sys_command.c_str());
428     OT_PARAMETRES params_analyse_champ_epsilon_boite;
429     ini_param_analyse(&params_analyse_champ_epsilon_boite,MSTRUCT_ANALYSE::TYPE_ANALYSE::CHAMP);
430     params_analyse_champ_epsilon_boite.change_valeur("Identifiant","Champ_EPSILON_boite");
431     params_analyse_champ_epsilon_boite.change_valeur("Num_solution",1);
432     params_analyse_champ_epsilon_boite.change_valeur("Boite_analyse",1);
433     params_analyse_champ_epsilon_boite.change_valeur("Largeur_colonne_distribution",0.00000000001);
434     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_champ_epsilon_boite.txt");
435     params_analyse_champ_epsilon_boite.enregistrer((char*)sys_command.c_str());
436    
437     OT_PARAMETRES params_analyse_orientation;
438     ini_param_analyse(&params_analyse_orientation,MSTRUCT_ANALYSE::TYPE_ANALYSE::ORIENTATION);
439     params_analyse_orientation.change_valeur("Identifiant","Orientation_Cylindre");
440     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_orientation.txt");
441     params_analyse_orientation.enregistrer((char*)sys_command.c_str());
442     OT_PARAMETRES params_analyse_orientation_boite;
443     ini_param_analyse(&params_analyse_orientation_boite,MSTRUCT_ANALYSE::TYPE_ANALYSE::ORIENTATION);
444     params_analyse_orientation_boite.change_valeur("Identifiant","Orientation_Cylindre_boite");
445     params_analyse_orientation_boite.change_valeur("Boite_analyse",1);
446     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_orientation_boite.txt");
447     params_analyse_orientation_boite.enregistrer((char*)sys_command.c_str());
448    
449    
450     OT_PARAMETRES params_analyse_cao_all;
451     ini_param_analyse(&params_analyse_cao_all,MSTRUCT_ANALYSE::TYPE_ANALYSE::CAO);
452     params_analyse_cao_all.change_valeur("Identifiant","Cao_ALL");
453     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_cao_all.txt");
454     params_analyse_cao_all.enregistrer((char*)sys_command.c_str());
455     OT_PARAMETRES params_analyse_cao_cylindre;
456     ini_param_analyse(&params_analyse_cao_cylindre,MSTRUCT_ANALYSE::TYPE_ANALYSE::CAO);
457     params_analyse_cao_cylindre.change_valeur("Identifiant","Cao_Cylindre");
458     params_analyse_cao_cylindre.change_valeur("Nom_groupe_forme","Cylindre");
459     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_cao_cylindre.txt");
460     params_analyse_cao_cylindre.enregistrer((char*)sys_command.c_str());
461     OT_PARAMETRES params_analyse_cao_matrice;
462     ini_param_analyse(&params_analyse_cao_matrice,MSTRUCT_ANALYSE::TYPE_ANALYSE::CAO);
463     params_analyse_cao_matrice.change_valeur("Identifiant","Cao_Matrice");
464     params_analyse_cao_matrice.change_valeur("Nom_groupe_forme","Matrice");
465     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_cao_matrice.txt");
466     params_analyse_cao_matrice.enregistrer((char*)sys_command.c_str());
467    
468     OT_PARAMETRES params_analyse_mg_maillage_all;
469     ini_param_analyse(&params_analyse_mg_maillage_all,MSTRUCT_ANALYSE::TYPE_ANALYSE::MAILLAGE_MG);
470     params_analyse_mg_maillage_all.change_valeur("Identifiant","MG_maillage_ALL");
471     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_mg_maillage_all.txt");
472     params_analyse_mg_maillage_all.enregistrer((char*)sys_command.c_str());
473     OT_PARAMETRES params_analyse_mg_maillage_cylindre;
474     ini_param_analyse(&params_analyse_mg_maillage_cylindre,MSTRUCT_ANALYSE::TYPE_ANALYSE::MAILLAGE_MG);
475     params_analyse_mg_maillage_cylindre.change_valeur("Identifiant","MG_maillage_Cylindre");
476     params_analyse_mg_maillage_cylindre.change_valeur("Nom_groupe_forme","Cylindre");
477     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_mg_maillage_cylindre.txt");
478     params_analyse_mg_maillage_cylindre.enregistrer((char*)sys_command.c_str());
479     OT_PARAMETRES params_analyse_mg_maillage_matrice;
480     ini_param_analyse(&params_analyse_mg_maillage_matrice,MSTRUCT_ANALYSE::TYPE_ANALYSE::MAILLAGE_MG);
481     params_analyse_mg_maillage_matrice.change_valeur("Identifiant","MG_maillage_Matrice");
482     params_analyse_mg_maillage_matrice.change_valeur("Nom_groupe_forme","Matrice");
483     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_mg_maillage_matrice.txt");
484     params_analyse_mg_maillage_matrice.enregistrer((char*)sys_command.c_str());
485    
486     OT_PARAMETRES params_analyse_fem_maillage_all;
487     ini_param_analyse(&params_analyse_fem_maillage_all,MSTRUCT_ANALYSE::TYPE_ANALYSE::MAILLAGE_FEM);
488     params_analyse_fem_maillage_all.change_valeur("Identifiant","FEM_maillage_ALL");
489     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_fem_maillage_all.txt");
490     params_analyse_fem_maillage_all.enregistrer((char*)sys_command.c_str());
491     OT_PARAMETRES params_analyse_fem_maillage_all_boite;
492     ini_param_analyse(&params_analyse_fem_maillage_all_boite,MSTRUCT_ANALYSE::TYPE_ANALYSE::MAILLAGE_FEM);
493     params_analyse_fem_maillage_all_boite.change_valeur("Identifiant","FEM_maillage_ALL_boite");
494     params_analyse_fem_maillage_all_boite.change_valeur("Boite_analyse",1);
495     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_fem_maillage_all_boite.txt");
496     params_analyse_fem_maillage_all_boite.enregistrer((char*)sys_command.c_str());
497     OT_PARAMETRES params_analyse_fem_maillage_cylindre;
498     ini_param_analyse(&params_analyse_fem_maillage_cylindre,MSTRUCT_ANALYSE::TYPE_ANALYSE::MAILLAGE_FEM);
499     params_analyse_fem_maillage_cylindre.change_valeur("Identifiant","FEM_maillage_Cylindre");
500     params_analyse_fem_maillage_cylindre.change_valeur("Nom_groupe_forme","Cylindre");
501     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_fem_maillage_cylindre.txt");
502     params_analyse_fem_maillage_cylindre.enregistrer((char*)sys_command.c_str());
503     OT_PARAMETRES params_analyse_fem_maillage_matrice;
504     ini_param_analyse(&params_analyse_fem_maillage_matrice,MSTRUCT_ANALYSE::TYPE_ANALYSE::MAILLAGE_FEM);
505     params_analyse_fem_maillage_matrice.change_valeur("Identifiant","FEM_maillage_Matrice");
506     params_analyse_fem_maillage_matrice.change_valeur("Nom_groupe_forme","Matrice");
507     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_analyse_fem_maillage_matrice.txt");
508     params_analyse_fem_maillage_matrice.enregistrer((char*)sys_command.c_str());
509    
510     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/lstparam_ver.txt");
511     f.open(sys_command.c_str(),ios::out);
512     f << "// Fichier de parametres VER" << std::endl;
513     f << "// Nombre de fichier de parametres" << std::endl;
514     f << "NB_FICHIER_PARAM 2" << std::endl;
515     f << "params_ver.txt" << std::endl;
516     f << "params_ver_boite.txt" << std::endl;
517     f.close();
518    
519     OT_PARAMETRES params_ver;
520     ini_param_ver(&params_ver);
521     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_ver.txt");
522     params_ver.enregistrer((char*)sys_command.c_str());
523    
524     OT_PARAMETRES params_ver_boite;
525     ini_param_ver(&params_ver_boite);
526     params_ver_boite.change_valeur("Identifiant_epsilon","Champ_EPSILON_boite");
527     params_ver_boite.change_valeur("Identifiant_sigma","Champ_SIGMA_boite");
528     sys_command.clear(); sys_command.append(nom_dossier_param); sys_command.append("/analyse/params_ver_boite.txt");
529     params_ver_boite.enregistrer((char*)sys_command.c_str());
530 couturad 919 return OK;
531     }
532    
533 couturad 929 int PARAMETRES::generer_script_ves(int type_etude)
534     {
535     if(type_etude==MSTRUCT_VES::TYPE_ETUDE::MECANIQUE)
536     {
537     ofstream ofstrm((char*)"generer_nb_ves",std::ios::out|std::ios::trunc);
538     ofstrm.precision(16);
539     ofstrm.setf(std::ios::showpoint);
540     ofstrm << "#!/bin/bash" << std::endl;
541     ofstrm << "INDEX_DEPART=$1" << std::endl;
542     ofstrm << "INDEX_FIN=$2" << std::endl;
543     ofstrm << "DOSSIER_PARAM=$3" << std::endl;
544     ofstrm << "CHEMINCOMPILE=$4" << std::endl;
545     ofstrm << "if [ -z ${INDEX_DEPART// } ]" << std::endl;
546     ofstrm << "then" << std::endl;
547     ofstrm << " echo \"Erreur : Numero du ves de depart manquant\"" << std::endl;
548     ofstrm << " exit" << std::endl;
549     ofstrm << "fi" << std::endl;
550     ofstrm << "if [ -z ${INDEX_FIN// } ]" << std::endl;
551     ofstrm << "then" << std::endl;
552     ofstrm << " echo \"Erreur : Numero du ves de fin manquant\"" << std::endl;
553     ofstrm << " exit" << std::endl;
554     ofstrm << "fi" << std::endl;
555     ofstrm << "if [ -z ${DOSSIER_PARAM// } ]" << std::endl;
556     ofstrm << "then" << std::endl;
557     ofstrm << " echo \"Erreur : Dossier de parametres manquant\"" << std::endl;
558     ofstrm << " exit" << std::endl;
559     ofstrm << "fi" << std::endl;
560     ofstrm << "if [ -z ${CHEMINCOMPILE// } ]" << std::endl;
561     ofstrm << "then" << std::endl;
562     ofstrm << " echo \"Erreur : Chemin vers exe/app manquant\"" << std::endl;
563     ofstrm << " exit" << std::endl;
564     ofstrm << "fi" << std::endl;
565     ofstrm << "function executer" << std::endl;
566     ofstrm << "{" << std::endl;
567     ofstrm << "OPERATION_REUSSIE=1;" << std::endl;
568     ofstrm << "$*" << std::endl;
569     ofstrm << "VAR=$?" << std::endl;
570     ofstrm << "if (( $VAR )) ; then " << std::endl;
571     ofstrm << " OPERATION_REUSSIE=0; " << std::endl;
572     ofstrm << " STAT=$VAR;" << std::endl;
573     ofstrm << "fi" << std::endl;
574     ofstrm << "}" << std::endl;
575     ofstrm << "" << std::endl;
576     ofstrm << "echo \"*********************************************************\"" << std::endl;
577     ofstrm << "echo \"Generation des microstructures $INDEX_DEPART - $INDEX_FIN\"" << std::endl;
578     ofstrm << "echo \"*********************************************************\"" << std::endl;
579     ofstrm << "STAT=$?" << std::endl;
580     ofstrm << "" << std::endl;
581     ofstrm << "if [ $INDEX_DEPART -eq 1 ]" << std::endl;
582     ofstrm << "then" << std::endl;
583     ofstrm << "mkdir etude" << std::endl;
584     ofstrm << "fi" << std::endl;
585     ofstrm << "cd etude" << std::endl;
586     ofstrm << "for (( k=$INDEX_DEPART; k<=$INDEX_FIN; k++ ))" << std::endl;
587     ofstrm << "do" << std::endl;
588     ofstrm << " echo \"Microstructure #$k\"" << std::endl;
589     ofstrm << " mkdir e$k" << std::endl;
590     ofstrm << " cd e$k" << std::endl;
591     ofstrm << " OPERATION_REUSSIE=0" << std::endl;
592     ofstrm << " until [ $OPERATION_REUSSIE -eq 1 ]; do" << std::endl;
593     ofstrm << " executer ../../ves $DOSSIER_PARAM $CHEMINCOMPILE" << std::endl;
594     ofstrm << " done" << std::endl;
595     ofstrm << " DOSSIER_ACTUEL=$(pwd)" << std::endl;
596     ofstrm << " echo \"$DOSSIER_ACTUEL/ves_analyse_CLDH_sph.ves\" >> ../../lst_ves_analyse_CLDH_sph.txt" << std::endl;
597     ofstrm << " echo \"$DOSSIER_ACTUEL/ves_analyse_CLCH_sph.ves\" >> ../../lst_ves_analyse_CLCH_sph.txt" << std::endl;
598     ofstrm << " echo \"$DOSSIER_ACTUEL/ves_analyse_CLDH_dev.ves\" >> ../../lst_ves_analyse_CLDH_dev.txt" << std::endl;
599     ofstrm << " echo \"$DOSSIER_ACTUEL/ves_analyse_CLCH_dev.ves\" >> ../../lst_ves_analyse_CLCH_dev.txt" << std::endl;
600     ofstrm << " cd .." << std::endl;
601     ofstrm << "done" << std::endl;
602     ofstrm << "cd .." << std::endl;
603     ofstrm << "echo \"**********************\"" << std::endl;
604     ofstrm << "echo \" FIN \"" << std::endl;
605     ofstrm << "echo \"**********************\"" << std::endl;
606     ofstrm << "exit $STAT" << std::endl;
607     ofstrm.close();
608     system((char*)"chmod 744 generer_nb_ves");
609    
610     ofstrm.open((char*)"ves",std::ios::out|std::ios::trunc);
611     ofstrm.precision(16);
612     ofstrm.setf(std::ios::showpoint);
613     ofstrm << "#!/bin/bash" << std::endl;
614     ofstrm << "DOSSIER_PARAM=$1" << std::endl;
615     ofstrm << "CHEMINCOMPILE=$2" << std::endl;
616     ofstrm << "function executer" << std::endl;
617     ofstrm << "{" << std::endl;
618     ofstrm << "$*" << std::endl;
619     ofstrm << "VAR=$?" << std::endl;
620     ofstrm << "if (( $VAR )) ; then " << std::endl;
621     ofstrm << " STATUSTXT=\"ERREUR dans les tests\"; " << std::endl;
622     ofstrm << " STAT=$VAR;" << std::endl;
623     ofstrm << " exit $STAT" << std::endl;
624     ofstrm << "fi" << std::endl;
625     ofstrm << "}" << std::endl;
626     ofstrm << "STATUSTXT=\"Test sans ERREUR\"" << std::endl;
627     ofstrm << "echo \"*******************************\"" << std::endl;
628     ofstrm << "echo \"Generation d'une microstructure\"" << std::endl;
629     ofstrm << "echo \"*******************************\"" << std::endl;
630     ofstrm << "STAT=$?" << std::endl;
631     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -gen_geo -ves_out ves_geo.ves -lstparam $DOSSIER_PARAM/geometrie/lstparam_geo.txt" << std::endl;
632     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -gen_mat -ves_in ves_geo.ves -ves_out ves_mat.ves -lstparam $DOSSIER_PARAM/materiau/lstparam_mat.txt" << std::endl;
633     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -gen_carte -ves_in ves_mat.ves -ves_out ves_carte.ves -param $DOSSIER_PARAM/carte/param_carte.txt" << std::endl;
634     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -gen_mg_maill -ves_in ves_carte.ves -ves_out ves_maill.ves -param $DOSSIER_PARAM/maillage/param_maill.txt -carte carte.ctt" << std::endl;
635     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -gen_fem_maill -ves_in ves_maill.ves -ves_out ves_fem_maill.ves -param $DOSSIER_PARAM/fem_maillage/param_fem_maill.txt" << std::endl;
636     ofstrm << "" << std::endl;
637     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -gen_etude -ves_in ves_fem_maill.ves -ves_out ves_etude_CLDH_sph.ves -param $DOSSIER_PARAM/etude/param_etude_CLDH_sph.txt" << std::endl;
638     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -gen_etude -ves_in ves_fem_maill.ves -ves_out ves_etude_CLCH_sph.ves -param $DOSSIER_PARAM/etude/param_etude_CLCH_sph.txt" << std::endl;
639     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -gen_etude -ves_in ves_fem_maill.ves -ves_out ves_etude_CLDH_dev.ves -param $DOSSIER_PARAM/etude/param_etude_CLDH_dev.txt" << std::endl;
640     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -gen_etude -ves_in ves_fem_maill.ves -ves_out ves_etude_CLCH_dev.ves -param $DOSSIER_PARAM/etude/param_etude_CLCH_dev.txt" << std::endl;
641     ofstrm << "" << std::endl;
642     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -calcul -ves_in ves_etude_CLDH_sph.ves -ves_out ves_calcul_CLDH_sph.ves -param $DOSSIER_PARAM/etude/param_etude_CLDH_sph.txt -paramaster $DOSSIER_PARAM/etude/param_aster.txt" << std::endl;
643     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -calcul -ves_in ves_etude_CLCH_sph.ves -ves_out ves_calcul_CLCH_sph.ves -param $DOSSIER_PARAM/etude/param_etude_CLCH_sph.txt -paramaster $DOSSIER_PARAM/etude/param_aster.txt" << std::endl;
644     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -calcul -ves_in ves_etude_CLDH_dev.ves -ves_out ves_calcul_CLDH_dev.ves -param $DOSSIER_PARAM/etude/param_etude_CLDH_dev.txt -paramaster $DOSSIER_PARAM/etude/param_aster.txt" << std::endl;
645     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -calcul -ves_in ves_etude_CLCH_dev.ves -ves_out ves_calcul_CLCH_dev.ves -param $DOSSIER_PARAM/etude/param_etude_CLCH_dev.txt -paramaster $DOSSIER_PARAM/etude/param_aster.txt" << std::endl;
646     ofstrm << "" << std::endl;
647     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -gen_analyse -ves_in ves_calcul_CLDH_sph.ves -ves_out ves_analyse_CLDH_sph.ves -lstparam $DOSSIER_PARAM/analyse/lstparam_analyse.txt" << std::endl;
648     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -gen_analyse -ves_in ves_calcul_CLCH_sph.ves -ves_out ves_analyse_CLCH_sph.ves -lstparam $DOSSIER_PARAM/analyse/lstparam_analyse.txt" << std::endl;
649     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -gen_analyse -ves_in ves_calcul_CLDH_dev.ves -ves_out ves_analyse_CLDH_dev.ves -lstparam $DOSSIER_PARAM/analyse/lstparam_analyse.txt" << std::endl;
650     ofstrm << "executer $CHEMINCOMPILE/microstructure/microstructure.exe -gen_analyse -ves_in ves_calcul_CLCH_dev.ves -ves_out ves_analyse_CLCH_dev.ves -lstparam $DOSSIER_PARAM/analyse/lstparam_analyse.txt" << std::endl;
651     ofstrm << "" << std::endl;
652     ofstrm << "#executer $CHEMINCOMPILE/microstructure/microstructure.exe -affiche_contenu -ves_in ves_analyse_CLDH_sph.ves" << std::endl;
653     ofstrm << "#executer $CHEMINCOMPILE/microstructure/microstructure.exe -affiche_contenu -ves_in ves_analyse_CLCH_sph.ves" << std::endl;
654     ofstrm << "#executer $CHEMINCOMPILE/microstructure/microstructure.exe -affiche_contenu -ves_in ves_analyse_CLDH_dev.ves" << std::endl;
655     ofstrm << "#executer $CHEMINCOMPILE/microstructure/microstructure.exe -affiche_contenu -ves_in ves_analyse_CLCH_dev.ves" << std::endl;
656     ofstrm << "cd .." << std::endl;
657     ofstrm << "echo \"**********************\"" << std::endl;
658     ofstrm << "echo $STATUSTXT" << std::endl;
659     ofstrm << "echo \"**********************\"" << std::endl;
660     ofstrm << "exit $STAT" << std::endl;
661     ofstrm.close();
662     system((char*)"chmod 744 ves");
663     }
664     }
665    
666    
667    
668 couturad 919 int PARAMETRES::importer_fichier_parametres(char* fichier, OT_PARAMETRES* params)
669     {
670     params->lire(fichier);
671     }
672    
673     int PARAMETRES::importer_fichier_liste_parametres(char* fichier, std::vector< OT_PARAMETRES* >& vector_params)
674     {
675     std::string str_fichier = fichier;
676     std::size_t found = str_fichier.rfind((char*)"/");
677     std::string chemin;
678     if(found!=-1)
679     {
680     chemin = str_fichier.substr(0,found+1);
681     }
682     else chemin = "";
683     FILE* in=fopen(fichier,"rt");
684     char ligne[4000];
685     while(!feof(in))
686     {
687     fgets(ligne,4000,in);
688     char *aide = strstr(ligne,"//");
689     if(aide==NULL)
690     {
691     char message[500];
692     int nb_fichier_param=0;
693     sscanf(ligne,"%s %i ",message,&nb_fichier_param);
694     if(strcmp(message,"NB_FICHIER_PARAM")==0)
695     {
696     for(int i=0;i<nb_fichier_param;i++)
697     {
698     fgets(ligne,4000,in);
699     if(feof(in)) std::cerr << "*** PARAMETRES::PARAMETRES::importer_fichier_liste_parametres : Erreur de lecture ! ***" << std::endl;
700     char sous_fichier[500];
701     sscanf(ligne,"%s",sous_fichier);
702     OT_PARAMETRES *param = new OT_PARAMETRES;
703     std::string str_sous_fichier = chemin;
704     str_sous_fichier.append(sous_fichier);
705     param->lire((char*)str_sous_fichier.c_str());
706     vector_params.push_back(param);
707     }
708     }
709     }
710     }
711     }