ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/solveur/src/sl_triangle11.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_triangle11.cpp
File size: 2858 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_triangle11.h"
7     //---------------------------------------------------------------------------
8    
9     #include "fem_triangle.h"
10     #include "fem_noeud.h"
11    
12     //---------------------------------------------------------------------------
13     #pragma package(smart_init)
14    
15    
16    
17     SL_TRIANGLE11::SL_TRIANGLE11(FEM_TRIANGLE *mgseg):SL_TRIANGLE(mgseg)
18     {
19     }
20    
21     SL_TRIANGLE11::SL_TRIANGLE11(SL_TRIANGLE& mdd):SL_TRIANGLE(mdd)
22     {
23     }
24    
25     SL_TRIANGLE11::~SL_TRIANGLE11()
26     {
27     }
28    
29     int SL_TRIANGLE11::nb_point_gauss(void)
30     {
31     return 1;
32     }
33    
34    
35     int SL_TRIANGLE11::nb_fonction_interpolation(void)
36     {
37     return 3;
38     }
39    
40     void SL_TRIANGLE11::get_point_gauss(int num,double *xyz,double& poids)
41     {
42     xyz[0]=0.33333333333333333333333333333333;
43     xyz[1]=0.33333333333333333333333333333333;
44     poids=0.5;
45     }
46    
47     double SL_TRIANGLE11::get_fonction_interpolation(int num,double *uv)
48     {
49     double val;
50     switch (num)
51     {
52     case 1:val=1-uv[0]-uv[1];break;
53     case 2:val=uv[0];break;
54     case 3:val=uv[1];break;
55     }
56     return val;
57     }
58    
59     double SL_TRIANGLE11::get_fonction_derive_interpolation(int num,int num_variable,double *uv)
60     {
61     double val;
62     switch (num)
63     {
64     case 1:switch (num_variable)
65     {
66     case 1:val=-1;break;
67     case 2:val=-1;break;
68     } break;
69     case 2:switch (num_variable)
70     {
71     case 1:val=1;break;
72     case 2:val=0;break;
73     }break;
74     case 3:switch (num_variable)
75     {
76     case 1:val=0;break;
77     case 2:val=1;break;
78     }break;
79     }
80     return val;
81    
82     }
83    
84     double SL_TRIANGLE11::get_jacobien(double* jac,double *uv,int& li,int& col,double unite)
85     {
86     FEM_NOEUD* noeud1=((FEM_TRIANGLE*) mai)->get_fem_noeud(0);
87     FEM_NOEUD* noeud2=((FEM_TRIANGLE*) mai)->get_fem_noeud(1);
88     FEM_NOEUD* noeud3=((FEM_TRIANGLE*) mai)->get_fem_noeud(2);
89    
90    
91     double *xyz1=noeud1->get_coord();
92     double *xyz2=noeud2->get_coord();
93     double *xyz3=noeud3->get_coord();
94     li=2;col=3;
95    
96     jac[0]=unite*(xyz2[0]-xyz1[0]);
97     jac[1]=unite*(xyz2[1]-xyz1[1]);
98     jac[2]=unite*(xyz2[2]-xyz1[2]);
99    
100     jac[3]=unite*(xyz3[0]-xyz1[0]);
101     jac[4]=unite*(xyz3[1]-xyz1[1]);
102     jac[5]=unite*(xyz3[2]-xyz1[2]);
103    
104     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]));
105    
106     return DEUX_A;
107     }
108    
109    
110     void SL_TRIANGLE11::get_inverse_jacob(double* jac,double* j,double unite)
111     {
112     return;
113     }
114    
115    
116    
117     int SL_TRIANGLE11::nb_point_extrapolation()
118     {
119     return 3;
120     }
121    
122