ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/solveur/src/sl_triangle13.cpp
Revision: 5
Committed: Tue Jun 12 20:26:34 2007 UTC (17 years, 11 months ago)
Original Path: magic/lib/solveur/solveur/src/sl_triangle13.cpp
File size: 3318 byte(s)
Log Message:

File Contents

# User Rev Content
1 5 #include "gestionversion.h"
2     //---------------------------------------------------------------------------
3    
4     #pragma hdrstop
5     #include <math.h>
6     #include "sl_triangle13.h"
7     #include "fem_noeud.h"
8     //---------------------------------------------------------------------------
9     #include "fem_triangle.h"
10     #pragma package(smart_init)
11    
12     SL_TRIANGLE13::SL_TRIANGLE13(FEM_TRIANGLE *mgseg):SL_TRIANGLE(mgseg)
13     {
14     }
15    
16     SL_TRIANGLE13::SL_TRIANGLE13(SL_TRIANGLE13& mdd):SL_TRIANGLE(mdd)
17     {
18     }
19    
20     SL_TRIANGLE13::~SL_TRIANGLE13()
21     {
22     }
23    
24     int SL_TRIANGLE13::nb_point_gauss(void)
25     {
26     return 3;
27     }
28    
29    
30    
31     int SL_TRIANGLE13::nb_fonction_interpolation(void)
32     {
33     return 3;
34     }
35    
36     void SL_TRIANGLE13::get_point_gauss(int num,double *xyz,double& poids)
37     {
38     switch (num)
39     {
40     case 1:xyz[0]=0.16666666666666666666666666666667;
41     xyz[1]=0.16666666666666666666666666666667;
42     poids=0.16666666666666666666666666666667;
43     break;
44     case 2:xyz[0]=0.66666666666666666666666666666667;
45     xyz[1]=0.16666666666666666666666666666667;
46     poids=0.16666666666666666666666666666667;
47     break;
48    
49     case 3:xyz[0]=0.16666666666666666666666666666667;
50     xyz[1]=0.66666666666666666666666666666667;
51     poids=0.16666666666666666666666666666667;
52     break;
53     }
54     }
55    
56     double SL_TRIANGLE13::get_fonction_interpolation(int num,double *uv)
57     {
58     double val;
59     switch (num)
60     {
61     case 1:val=1-uv[0]-uv[1];break;
62     case 2:val=uv[0];break;
63     case 3:val=uv[1];break;
64     }
65     return val;
66     }
67    
68     double SL_TRIANGLE13::get_fonction_derive_interpolation(int num,int num_variable,double *uv)
69     {
70     double val;
71     switch (num)
72     {
73     case 1:switch (num_variable)
74     {
75     case 1:val=-1;break;
76     case 2:val=-1;break;
77     } break;
78     case 2:switch (num_variable)
79     {
80     case 1:val=1;break;
81     case 2:val=0;break;
82     }break;
83     case 3:switch (num_variable)
84     {
85     case 1:val=0;break;
86     case 2:val=1;break;
87     }break;
88     }
89     return val;
90    
91     }
92    
93    
94     double SL_TRIANGLE13::get_jacobien(double* jac,double *uv,int& li,int& col,double unite)
95     {
96     FEM_NOEUD* noeud1=((FEM_TRIANGLE*) mai)->get_fem_noeud(0);
97     FEM_NOEUD* noeud2=((FEM_TRIANGLE*) mai)->get_fem_noeud(1);
98     FEM_NOEUD* noeud3=((FEM_TRIANGLE*) mai)->get_fem_noeud(2);
99    
100     double *xyz1=noeud1->get_coord();
101     double *xyz2=noeud2->get_coord();
102     double *xyz3=noeud3->get_coord();
103     li=2;col=3;
104    
105     jac[0]=unite*(xyz2[0]-xyz1[0]);
106     jac[1]=unite*(xyz2[1]-xyz1[1]);
107     jac[2]=unite*(xyz2[2]-xyz1[2]);
108    
109     jac[3]=unite*(xyz3[0]-xyz1[0]);
110     jac[4]=unite*(xyz3[1]-xyz1[1]);
111     jac[5]=unite*(xyz3[2]-xyz1[2]);
112    
113     double DEUX_A=sqrt((jac[1]*jac[5]-jac[4]*jac[2])*(jac[1]*jac[5]-jac[4]*jac[2])+(jac[0]*jac[5]-jac[3]*jac[2])*(jac[0]*jac[5]-jac[3]*jac[2])+(jac[0]*jac[4]-jac[3]*jac[1])*(jac[0]*jac[4]-jac[3]*jac[1]));
114    
115     return DEUX_A;
116     }
117    
118     void SL_TRIANGLE13::get_inverse_jacob(double* jac,double* j,double unite)
119     {
120     return;
121     }
122    
123    
124    
125    
126    
127     int SL_TRIANGLE13::nb_point_extrapolation()
128     {
129     return 3;
130     }
131    
132    
133