ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/solveur/src/sl_segment22.cpp
Revision: 1158
Committed: Thu Jun 13 22:18:49 2024 UTC (11 months ago) by francois
File size: 3245 byte(s)
Log Message:
compatibilité Ubuntu 22.04
Suppression des refeences à Windows
Ajout d'une banière

File Contents

# User Rev Content
1 francois 1158 //####//------------------------------------------------------------
2     //####//------------------------------------------------------------
3     //####// MAGiC
4     //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5     //####// Departement de Genie Mecanique - UQTR
6     //####//------------------------------------------------------------
7     //####// MAGIC est un projet de recherche de l equipe ERICCA
8     //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9     //####// http://www.uqtr.ca/ericca
10     //####// http://www.uqtr.ca/
11     //####//------------------------------------------------------------
12     //####//------------------------------------------------------------
13     //####//
14     //####// sl_segment22.cpp
15     //####//
16     //####//------------------------------------------------------------
17     //####//------------------------------------------------------------
18     //####// COPYRIGHT 2000-2024
19     //####// jeu 13 jun 2024 11:58:57 EDT
20     //####//------------------------------------------------------------
21     //####//------------------------------------------------------------
22 5 #include "gestionversion.h"
23    
24     #pragma hdrstop
25     #include <math.h>
26     #include "sl_segment22.h"
27     #include "fem_segment.h"
28     #include "fem_noeud.h"
29     #pragma package(smart_init)
30    
31    
32    
33     SL_SEGMENT22::SL_SEGMENT22(class FEM_SEGMENT *mgseg):SL_SEGMENT(mgseg)
34     {
35     }
36    
37     SL_SEGMENT22::SL_SEGMENT22(SL_SEGMENT22& mdd):SL_SEGMENT(mdd)
38     {
39     }
40    
41     SL_SEGMENT22::~SL_SEGMENT22()
42     {
43     }
44    
45     int SL_SEGMENT22::nb_point_gauss(void)
46     {
47     return 2;
48     }
49    
50    
51     int SL_SEGMENT22::nb_fonction_interpolation(void)
52     {
53     return 3;
54     }
55    
56     void SL_SEGMENT22::get_point_gauss(int num,double *xyz,double& poids)
57     {
58     switch (num)
59     {
60     case 1:xyz[0]=-0.57735026918962576450914878050196;poids=1.;break;
61     case 2:xyz[0]=0.57735026918962576450914878050196;poids=1.;break;
62     }
63     }
64    
65     double SL_SEGMENT22::get_fonction_interpolation(int num,double *uv)
66     {
67     double val;
68     switch (num)
69     {
70     case 1:val=0.5*uv[0]*(1-uv[0]);break;
71     case 2:val=(1-uv[0]*uv[0]);break;
72     case 3:val=0.5*uv[0]*(1+uv[0]);break;
73     }
74     return val;
75     }
76    
77     double SL_SEGMENT22::get_fonction_derive_interpolation(int num,int num_variable,double *uv)
78     {
79     double val;
80     switch (num)
81     {
82     case 1:val=0.5*(-1+2*uv[0]);break;
83     case 2:val=-2*uv[0];break;
84     case 3:val=0.5*(1+2*uv[0]);break;
85     }
86     return val;
87    
88     }
89    
90     double SL_SEGMENT22::get_jacobien(double* jac,double *uv,int& li,int& col,double unite)
91     {
92     double xyz[9];
93    
94     int nb_nd=((FEM_SEGMENT*) mai)->get_nb_fem_noeud();
95    
96     for(int i=0;i<nb_nd;i++)
97     {
98     FEM_NOEUD* fmnd=((FEM_SEGMENT*) mai)->get_fem_noeud(i);
99     double *xyz1=fmnd->get_coord();
100    
101     xyz[3*i]= unite*xyz1[0];
102     xyz[3*i+1]=unite*xyz1[1];
103     xyz[3*i+2]=unite*xyz1[2];
104    
105     }
106    
107     li=1;col=3;
108    
109     jac[0]=0.5*(-1+2*uv[0])*xyz[0]-2*uv[0]*xyz[3]+0.5*(1+2*uv[0])*xyz[6];
110     jac[1]=0.5*(-1+2*uv[0])*xyz[1]-2*uv[0]*xyz[4]+0.5*(1+2*uv[0])*xyz[7];
111     jac[2]=0.5*(-1+2*uv[0])*xyz[2]-2*uv[0]*xyz[5]+0.5*(1+2*uv[0])*xyz[8];
112    
113     double L= 2* sqrt(jac[0]*jac[0]+jac[1]*jac[1]+jac[2]*jac[2]);
114     return L;
115     }
116    
117     void SL_SEGMENT22:: get_inverse_jacob(double* jac,double*j,double unite)
118     {
119     return;
120     }
121    
122     int SL_SEGMENT22::nb_point_extrapolation()
123     {
124     return 2;
125     }
126    
127    
128