27 FCT_TAILLE_FEM_SOLUTION_GENERATEUR_GRADIENT::FCT_TAILLE_FEM_SOLUTION_GENERATEUR_GRADIENT(
MG_GESTIONNAIRE *gesttmp,
MG_GEOMETRIE* geotmp,
double dg,
int fechantillon,
int nnx,
int nny,
int nnz,
char *nomsolution,std::vector<double> lst,
double gradient):
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE(gesttmp,geotmp,dg,fechantillon,nnx,nny,nnz,nomsolution),gradientmax(gradient),lstraffine(lst)
32 FCT_TAILLE_FEM_SOLUTION_GENERATEUR_GRADIENT::FCT_TAILLE_FEM_SOLUTION_GENERATEUR_GRADIENT(
MG_GESTIONNAIRE *gesttmp,
MG_GEOMETRIE* geotmp,
FCT_TAILLE* carte,
int fechantillon,
int nnx,
int nny,
int nnz,
char *nomsolution,std::vector<double> lst,
double gradient):
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE(gesttmp,geotmp,carte,fechantillon,nnx,nny,nnz,nomsolution),gradientmax(gradient),lstraffine(lst)
37 FCT_TAILLE_FEM_SOLUTION_GENERATEUR_GRADIENT::FCT_TAILLE_FEM_SOLUTION_GENERATEUR_GRADIENT(
MG_GESTIONNAIRE *gesttmp,
MG_MAILLAGE* maitmp,
double dg,
int fechantillon,
int nnx,
int nny,
int nnz,
char *nomsolution,std::vector<double> lst,
double gradient):
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE(gesttmp,maitmp,dg,fechantillon,nnx,nny,nnz,nomsolution),gradientmax(gradient),lstraffine(lst)
42 FCT_TAILLE_FEM_SOLUTION_GENERATEUR_GRADIENT::FCT_TAILLE_FEM_SOLUTION_GENERATEUR_GRADIENT(
MG_GESTIONNAIRE *gesttmp,
MG_MAILLAGE* maitmp,
FCT_TAILLE* carte,
int fechantillon,
int nnx,
int nny,
int nnz,
char *nomsolution,std::vector<double> lst,
double gradient):
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE(gesttmp,maitmp,carte,fechantillon,nnx,nny,nnz,nomsolution),gradientmax(gradient),lstraffine(lst)
66 affiche((
char*)
" Points a raffiner");
70 affiche((
char*)
" Extrapolation aux noeuds");
76 LISTE_FEM_ELEMENT3::iterator it_ele3;
82 ele3->get_boite_3D().get_centre(xyz);
85 double ecart=1./
sqrt(tab[0]);
86 ele3->change_solution(ecart);
89 for (
int i=0;i<nb/4;i=i+1)
101 std::pair<FEM_ELEMENT3*,FEM_ELEMENT3*> tmp(ele3,ele3);
107 std::map<FEM_ELEMENT3*,FEM_ELEMENT3*>::iterator it_map_ele3;
112 std::pair<double,FEM_ELEMENT3*> tmp(val,ele3);
136 for(
int i=0;i<26;i++)tab_cell[i]=NULL;
166 for(
int i=0;i<26;i++)
168 if(tab_cell[i]!=NULL)
169 if(tab_cell[i]->get_nb_entite()==1)
173 double centrevoisin[3];
177 if(valvoisinmax<valvoisin)
180 std::map<double,FEM_ELEMENT3*>::iterator j=
m_map_fem_classe.lower_bound(valvoisin);
185 if ((*j).first>valvoisin) ok=1;
189 std::pair<double,FEM_ELEMENT3*> tmp(valvoisinmax,ele3_voisin);
201 LISTE_FEM_NOEUD::iterator it_fem_nd;
204 double ecart_nodal_noeud=0.0;
206 liste_fem_element3 = femnd->get_lien_element3();
207 for(
int i=0;i<liste_fem_element3->
get_nb();i++)
211 ecart_nodal_noeud=ecart_nodal_noeud/liste_fem_element3->
get_nb();
221 sol->
ecrire(1.0/ecart_nodal_noeud/ecart_nodal_noeud,i,0,0);
225 sol->
ecrire(1./ecart_nodal_noeud/ecart_nodal_noeud,i,0,4);
229 sol->
ecrire(1./ecart_nodal_noeud/ecart_nodal_noeud,i,0,8);
251 LISTE_FEM_ELEMENT3::iterator it_ele3;
255 ele3->get_boite_3D().get_centre(centre);