1*59599516SKenneth E. Jansen /*-------------------------------------------------------------------------
2*59599516SKenneth E. Jansen Scientific Computation Research Center, RPI, Troy NY
3*59599516SKenneth E. Jansen (C) Copyright 1995, RPI-SCOREC
4*59599516SKenneth E. Jansen
5*59599516SKenneth E. Jansen Project : shapeFuntions
6*59599516SKenneth E. Jansen Author(s): Saikat Dey
7*59599516SKenneth E. Jansen Creation : Oct., 95
8*59599516SKenneth E. Jansen Modifi. :
9*59599516SKenneth E. Jansen Function :
10*59599516SKenneth E. Jansen return the derivative of the parametric transformation from
11*59599516SKenneth E. Jansen element to entity coordinate systems.
12*59599516SKenneth E. Jansen -------------------------------------------------------------------------*/
13*59599516SKenneth E. Jansen
14*59599516SKenneth E. Jansen #include <math.h>
15*59599516SKenneth E. Jansen #include "shapeFuncInternals.h"
16*59599516SKenneth E. Jansen
17*59599516SKenneth E. Jansen #ifdef __cplusplus
18*59599516SKenneth E. Jansen extern "C" {
19*59599516SKenneth E. Jansen #endif
20*59599516SKenneth E. Jansen
21*59599516SKenneth E. Jansen static int SF_par_TABLE[][3][2] = {
22*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
23*59599516SKenneth E. Jansen {{1,0},{0,1},{0,0}},
24*59599516SKenneth E. Jansen {{1,0},{0,0},{0,1}},
25*59599516SKenneth E. Jansen {{1,-1},{0,-1},{0,-1}},
26*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
27*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
28*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
29*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
30*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
31*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
32*59599516SKenneth E. Jansen {{0,1},{1,0},{0,0}},
33*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
34*59599516SKenneth E. Jansen {{0,0},{1,0},{0,1}},
35*59599516SKenneth E. Jansen {{0,-1},{1,-1},{0,-1}},
36*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
37*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
38*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
39*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
40*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
41*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
42*59599516SKenneth E. Jansen {{0,1},{0,0},{1,0}},
43*59599516SKenneth E. Jansen {{0,0},{0,1},{1,0}},
44*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
45*59599516SKenneth E. Jansen {{0,-1},{0,-1},{1,-1}},
46*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
47*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
48*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
49*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
50*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
51*59599516SKenneth E. Jansen {{0,0},{0,0},{0,0}},
52*59599516SKenneth E. Jansen {{-1,1},{-1,0},{-1,0}},
53*59599516SKenneth E. Jansen {{-1,0},{-1,1},{-1,0}},
54*59599516SKenneth E. Jansen {{-1,0},{-1,0},{-1,1}}
55*59599516SKenneth E. Jansen };
56*59599516SKenneth E. Jansen
E_parDrv(int i,int j,int type,double drv[][2])57*59599516SKenneth E. Jansen int E_parDrv(int i, int j, int type, double drv[][2]) {
58*59599516SKenneth E. Jansen int ind[2],ii;
59*59599516SKenneth E. Jansen /* find out type of element */
60*59599516SKenneth E. Jansen if( type == Sedge )
61*59599516SKenneth E. Jansen return 0;
62*59599516SKenneth E. Jansen else if( type == Stri ) {
63*59599516SKenneth E. Jansen drv[0][0] = drv[0][1] = drv[1][0] = drv[1][1] = 0.0;
64*59599516SKenneth E. Jansen if( i == 0 && j == 1 ) { /* edge +0 , xi = s-r */
65*59599516SKenneth E. Jansen drv[0][0] = 1.0;
66*59599516SKenneth E. Jansen drv[1][1] = 1.0;
67*59599516SKenneth E. Jansen } else if( i == 1 && j == 0 ) { /* edge -0 , xi = r-s */
68*59599516SKenneth E. Jansen drv[0][1] = 1.0;
69*59599516SKenneth E. Jansen drv[1][0] = 1.0;
70*59599516SKenneth E. Jansen } else if( i == 1 && j == 2 ) { /* edge +1 , xi = t-s */
71*59599516SKenneth E. Jansen drv[0][1] = -1.0;
72*59599516SKenneth E. Jansen drv[1][0] = 1.0;
73*59599516SKenneth E. Jansen drv[1][1] = -1.0;
74*59599516SKenneth E. Jansen } else if( i == 2 && j == 1 ) { /* edge -1 , xi = s-t */
75*59599516SKenneth E. Jansen drv[0][0] = -1.0;
76*59599516SKenneth E. Jansen drv[1][0] = -1.0;
77*59599516SKenneth E. Jansen drv[1][1] = 1.0;
78*59599516SKenneth E. Jansen } else if( i == 2 && j == 0 ) { /* edge +2 , xi = r-t */
79*59599516SKenneth E. Jansen drv[0][0] = -1.0;
80*59599516SKenneth E. Jansen drv[0][1] = 1.0;
81*59599516SKenneth E. Jansen drv[1][0] = -1.0;
82*59599516SKenneth E. Jansen } else if( i == 0 && j == 2 ) { /* edge -2 , xi = t-r */
83*59599516SKenneth E. Jansen drv[0][0] = 1.0;
84*59599516SKenneth E. Jansen drv[0][1] = -1.0;
85*59599516SKenneth E. Jansen drv[1][1] = -1.0;
86*59599516SKenneth E. Jansen } else
87*59599516SKenneth E. Jansen return 0;
88*59599516SKenneth E. Jansen return 1;
89*59599516SKenneth E. Jansen } else if( type == Stet ) {
90*59599516SKenneth E. Jansen drv[0][0]=drv[0][1]=drv[1][0]=drv[1][1]=drv[2][0]=drv[2][1]=0.0;
91*59599516SKenneth E. Jansen ind[0] = i; ind[1] = j;
92*59599516SKenneth E. Jansen for(ii=0; ii<2; ii++) {
93*59599516SKenneth E. Jansen if(ind[ii] == 0) /* r'= r */
94*59599516SKenneth E. Jansen drv[0][ii] = 1.0;
95*59599516SKenneth E. Jansen else if(ind[ii] == 1) /* r'= s */
96*59599516SKenneth E. Jansen drv[1][ii] = 1.0;
97*59599516SKenneth E. Jansen else if(ind[ii] == 2) /* r'= t */
98*59599516SKenneth E. Jansen drv[2][ii] = 1.0;
99*59599516SKenneth E. Jansen else if(ind[ii] == 3) /* r'= 1-r-s-t */
100*59599516SKenneth E. Jansen drv[0][ii]=drv[1][ii]=drv[2][ii]=-1.0;
101*59599516SKenneth E. Jansen }
102*59599516SKenneth E. Jansen return 1;
103*59599516SKenneth E. Jansen } else
104*59599516SKenneth E. Jansen return 0;
105*59599516SKenneth E. Jansen }
106*59599516SKenneth E. Jansen
F_parDrv(int i,int j,int k,int type,int (** drv)[2])107*59599516SKenneth E. Jansen int F_parDrv(int i, int j, int k, int type, int (**drv)[2]) {
108*59599516SKenneth E. Jansen int index = 10*i + j;
109*59599516SKenneth E. Jansen *drv = SF_par_TABLE[index] ;
110*59599516SKenneth E. Jansen return 1;
111*59599516SKenneth E. Jansen }
112*59599516SKenneth E. Jansen
113*59599516SKenneth E. Jansen #ifdef __cplusplus
114*59599516SKenneth E. Jansen }
115*59599516SKenneth E. Jansen #endif
116