/[escript]/branches/domexper/finley/src/Assemble_jacobeans.c
ViewVC logotype

Diff of /branches/domexper/finley/src/Assemble_jacobeans.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3246 by jfenwick, Mon Oct 4 01:46:30 2010 UTC revision 3247 by caltinay, Wed Oct 6 05:53:06 2010 UTC
# Line 46  double* volume[numQuad*numElements] Line 46  double* volume[numQuad*numElements]
46  /*                                                            */  /*                                                            */
47  /*  Jacobean 1D                                               */  /*  Jacobean 1D                                               */
48  /*                                                            */  /*                                                            */
49  void Assemble_jacobeans_1D(double* coordinates, dim_t numQuad,double* QuadWeights,  void Finley_Assemble_jacobeans_1D(double* coordinates, dim_t numQuad, double* QuadWeights,
50                             dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,                             dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,
51                             double* DSDv, dim_t numTest, double* DTDv,                             double* DSDv, dim_t numTest, double* DTDv,
52                             double* dTdX, double* volume, index_t* element_id) {                             double* dTdX, double* volume, index_t* element_id) {
# Line 66  void Assemble_jacobeans_1D(double* coord Line 66  void Assemble_jacobeans_1D(double* coord
66                   D+=X0_loc*DSDv[INDEX3(s,0,q,numShape,LOCDIM)];                   D+=X0_loc*DSDv[INDEX3(s,0,q,numShape,LOCDIM)];
67                }                }
68                if (D==0.) {                if (D==0.) {
69                    sprintf(error_msg,"Assemble_jacobeans_1D: element %d (id %d) has length zero.",e,element_id[e]);                    sprintf(error_msg,"Finley_Assemble_jacobeans_1D: element %d (id %d) has length zero.",e,element_id[e]);
70                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);
71                } else {                } else {
72                   invD=1./D;                   invD=1./D;
# Line 85  void Assemble_jacobeans_1D(double* coord Line 85  void Assemble_jacobeans_1D(double* coord
85  /*                                                            */  /*                                                            */
86  /*  Jacobean 2D with area element                             */  /*  Jacobean 2D with area element                             */
87  /*                                                            */  /*                                                            */
88  void Assemble_jacobeans_2D(double* coordinates, dim_t numQuad,double* QuadWeights,  void Finley_Assemble_jacobeans_2D(double* coordinates, dim_t numQuad,double* QuadWeights,
89                             dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,                             dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,
90                             double* DSDv, dim_t numTest, double* DTDv,                             double* DSDv, dim_t numTest, double* DTDv,
91                             double* dTdX, double* volume, index_t* element_id) {                             double* dTdX, double* volume, index_t* element_id) {
# Line 115  void Assemble_jacobeans_2D(double* coord Line 115  void Assemble_jacobeans_2D(double* coord
115                }                }
116                D  =  dXdv00*dXdv11 - dXdv01*dXdv10;                D  =  dXdv00*dXdv11 - dXdv01*dXdv10;
117                if (D==0.) {                if (D==0.) {
118                    sprintf(error_msg,"Assemble_jacobeans_2D: element %d (id %d) has area zero.",e,element_id[e]);                    sprintf(error_msg,"Finley_Assemble_jacobeans_2D: element %d (id %d) has area zero.",e,element_id[e]);
119                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);
120                } else {                } else {
121                   invD=1./D;                   invD=1./D;
# Line 142  void Assemble_jacobeans_2D(double* coord Line 142  void Assemble_jacobeans_2D(double* coord
142  /*                                                            */  /*                                                            */
143  /*  Jacobean 1D manifold in 2D and 1D elements                */  /*  Jacobean 1D manifold in 2D and 1D elements                */
144  /*                                                            */  /*                                                            */
145  void Assemble_jacobeans_2D_M1D_E1D(double* coordinates, dim_t numQuad,double* QuadWeights,  void Finley_Assemble_jacobeans_2D_M1D_E1D(double* coordinates, dim_t numQuad,double* QuadWeights,
146                                     dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,                                     dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,
147                                     double* DSDv, dim_t numTest, double* DTDv,                                     double* DSDv, dim_t numTest, double* DTDv,
148                                     double* dTdX, double* volume, index_t* element_id) {                                     double* dTdX, double* volume, index_t* element_id) {
# Line 167  void Assemble_jacobeans_2D_M1D_E1D(doubl Line 167  void Assemble_jacobeans_2D_M1D_E1D(doubl
167                }                }
168                D=dXdv00*dXdv00+dXdv10*dXdv10;                D=dXdv00*dXdv00+dXdv10*dXdv10;
169                if (D==0.) {                if (D==0.) {
170                    sprintf(error_msg,"Assemble_jacobeans_2D_M1D_E1D: element %d (id %d) has length zero.",e,element_id[e]);                    sprintf(error_msg,"Finley_Assemble_jacobeans_2D_M1D_E1D: element %d (id %d) has length zero.",e,element_id[e]);
171                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);
172                } else {                } else {
173                   invD=1./D;                   invD=1./D;
# Line 190  void Assemble_jacobeans_2D_M1D_E1D(doubl Line 190  void Assemble_jacobeans_2D_M1D_E1D(doubl
190  /*                                                            */  /*                                                            */
191  /*  Jacobean 1D manifold in 2D and 1D elements woth contact   */  /*  Jacobean 1D manifold in 2D and 1D elements woth contact   */
192  /*                                                            */  /*                                                            */
193  void Assemble_jacobeans_2D_M1D_E1D_C(double* coordinates, dim_t numQuad,double* QuadWeights,  void Finley_Assemble_jacobeans_2D_M1D_E1D_C(double* coordinates, dim_t numQuad,double* QuadWeights,
194                                     dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,                                     dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,
195                                     double* DSDv, dim_t numTest, double* DTDv,                                     double* DSDv, dim_t numTest, double* DTDv,
196                                     double* dTdX, double* volume, index_t* element_id) {                                     double* dTdX, double* volume, index_t* element_id) {
# Line 223  void Assemble_jacobeans_2D_M1D_E1D_C(dou Line 223  void Assemble_jacobeans_2D_M1D_E1D_C(dou
223                D_0=dXdv00_0*dXdv00_0+dXdv10_0*dXdv10_0;                D_0=dXdv00_0*dXdv00_0+dXdv10_0*dXdv10_0;
224                D_1=dXdv00_1*dXdv00_1+dXdv10_1*dXdv10_1;                D_1=dXdv00_1*dXdv00_1+dXdv10_1*dXdv10_1;
225                if (D_0 == 0.  || D_1 == 0.) {                if (D_0 == 0.  || D_1 == 0.) {
226                    sprintf(error_msg,"Assemble_jacobeans_2D_M1D_E1D: element %d (id %d) has length zero.",e,element_id[e]);                    sprintf(error_msg,"Finley_Assemble_jacobeans_2D_M1D_E1D: element %d (id %d) has length zero.",e,element_id[e]);
227                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);
228                } else {                } else {
229                   invD_0=1./D_0;                   invD_0=1./D_0;
# Line 251  void Assemble_jacobeans_2D_M1D_E1D_C(dou Line 251  void Assemble_jacobeans_2D_M1D_E1D_C(dou
251  /*                                                            */  /*                                                            */
252  /*  Jacobean 1D manifold in 2D and 2D elements                */  /*  Jacobean 1D manifold in 2D and 2D elements                */
253  /*                                                            */  /*                                                            */
254  void Assemble_jacobeans_2D_M1D_E2D(double* coordinates, dim_t numQuad,double* QuadWeights,  void Finley_Assemble_jacobeans_2D_M1D_E2D(double* coordinates, dim_t numQuad,double* QuadWeights,
255                                     dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,                                     dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,
256                                     double* DSDv, dim_t numTest,double* DTDv,                                     double* DSDv, dim_t numTest,double* DTDv,
257                                     double* dTdX, double* volume, index_t* element_id) {                                     double* dTdX, double* volume, index_t* element_id) {
# Line 281  void Assemble_jacobeans_2D_M1D_E2D(doubl Line 281  void Assemble_jacobeans_2D_M1D_E2D(doubl
281                }                }
282                D  =  dXdv00*dXdv11 - dXdv01*dXdv10;                D  =  dXdv00*dXdv11 - dXdv01*dXdv10;
283                if (D==0.) {                if (D==0.) {
284                    sprintf(error_msg,"Assemble_jacobeans_2D_E2D: element %d (id %d) has area zero.",e,element_id[e]);                    sprintf(error_msg,"Finley_Assemble_jacobeans_2D_E2D: element %d (id %d) has area zero.",e,element_id[e]);
285                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);
286                } else {                } else {
287                   invD=1./D;                   invD=1./D;
# Line 307  void Assemble_jacobeans_2D_M1D_E2D(doubl Line 307  void Assemble_jacobeans_2D_M1D_E2D(doubl
307  /*                                                            */  /*                                                            */
308  /*  Jacobean 1D manifold in 2D and 2D elements with contact   */  /*  Jacobean 1D manifold in 2D and 2D elements with contact   */
309  /*                                                            */  /*                                                            */
310  void Assemble_jacobeans_2D_M1D_E2D_C(double* coordinates, dim_t numQuad,double* QuadWeights,  void Finley_Assemble_jacobeans_2D_M1D_E2D_C(double* coordinates, dim_t numQuad,double* QuadWeights,
311                                       dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,                                       dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,
312                                       double* DSDv, dim_t numTest,double* DTDv,                                       double* DSDv, dim_t numTest,double* DTDv,
313                                       double* dTdX, double* volume, index_t* element_id) {                                       double* dTdX, double* volume, index_t* element_id) {
# Line 348  void Assemble_jacobeans_2D_M1D_E2D_C(dou Line 348  void Assemble_jacobeans_2D_M1D_E2D_C(dou
348                D_0  =  dXdv00_0*dXdv11_0 - dXdv01_0*dXdv10_0;                D_0  =  dXdv00_0*dXdv11_0 - dXdv01_0*dXdv10_0;
349                D_1  =  dXdv00_1*dXdv11_1 - dXdv01_1*dXdv10_1;                D_1  =  dXdv00_1*dXdv11_1 - dXdv01_1*dXdv10_1;
350                if ( (D_0 ==0.) || (D_1 ==0.) ) {                if ( (D_0 ==0.) || (D_1 ==0.) ) {
351                    sprintf(error_msg,"Assemble_jacobeans_2D_E2D_C: element %d (id %d) has area zero.",e,element_id[e]);                    sprintf(error_msg,"Finley_Assemble_jacobeans_2D_E2D_C: element %d (id %d) has area zero.",e,element_id[e]);
352                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);
353                } else {                } else {
354                   invD_0=1./D_0;                   invD_0=1./D_0;
# Line 384  void Assemble_jacobeans_2D_M1D_E2D_C(dou Line 384  void Assemble_jacobeans_2D_M1D_E2D_C(dou
384  /*                                                            */  /*                                                            */
385  /*  Jacobean 3D                                               */  /*  Jacobean 3D                                               */
386  /*                                                            */  /*                                                            */
387  void Assemble_jacobeans_3D(double* coordinates, dim_t numQuad,double* QuadWeights,  void Finley_Assemble_jacobeans_3D(double* coordinates, dim_t numQuad,double* QuadWeights,
388                             dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,                             dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,
389                             double* DSDv, dim_t numTest, double* DTDv,                             double* DSDv, dim_t numTest, double* DTDv,
390                             double* dTdX, double* volume, index_t* element_id) {                             double* dTdX, double* volume, index_t* element_id) {
# Line 426  void Assemble_jacobeans_3D(double* coord Line 426  void Assemble_jacobeans_3D(double* coord
426                }                }
427                D  =  dXdv00*(dXdv11*dXdv22-dXdv12*dXdv21)+ dXdv01*(dXdv20*dXdv12-dXdv10*dXdv22)+dXdv02*(dXdv10*dXdv21-dXdv20*dXdv11);                D  =  dXdv00*(dXdv11*dXdv22-dXdv12*dXdv21)+ dXdv01*(dXdv20*dXdv12-dXdv10*dXdv22)+dXdv02*(dXdv10*dXdv21-dXdv20*dXdv11);
428                if (D==0.) {                if (D==0.) {
429                    sprintf(error_msg,"Assemble_jacobeans_3D: element %d (id %d) has volume zero.",e,element_id[e]);                    sprintf(error_msg,"Finley_Assemble_jacobeans_3D: element %d (id %d) has volume zero.",e,element_id[e]);
430                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);
431                } else {                } else {
432                   invD=1./D;                   invD=1./D;
# Line 458  void Assemble_jacobeans_3D(double* coord Line 458  void Assemble_jacobeans_3D(double* coord
458  /*                                                            */  /*                                                            */
459  /*  Jacobean 2D manifold in 3D with 3D elements               */  /*  Jacobean 2D manifold in 3D with 3D elements               */
460  /*                                                            */  /*                                                            */
461  void Assemble_jacobeans_3D_M2D_E3D(double* coordinates, dim_t numQuad,double* QuadWeights,  void Finley_Assemble_jacobeans_3D_M2D_E3D(double* coordinates, dim_t numQuad,double* QuadWeights,
462                                     dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,                                     dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,
463                                     double* DSDv, dim_t numTest,double* DTDv,                                     double* DSDv, dim_t numTest,double* DTDv,
464                                     double* dTdX, double* volume, index_t* element_id) {                                     double* dTdX, double* volume, index_t* element_id) {
# Line 499  void Assemble_jacobeans_3D_M2D_E3D(doubl Line 499  void Assemble_jacobeans_3D_M2D_E3D(doubl
499                }                }
500                D  =  dXdv00*(dXdv11*dXdv22-dXdv12*dXdv21)+ dXdv01*(dXdv20*dXdv12-dXdv10*dXdv22)+dXdv02*(dXdv10*dXdv21-dXdv20*dXdv11);                D  =  dXdv00*(dXdv11*dXdv22-dXdv12*dXdv21)+ dXdv01*(dXdv20*dXdv12-dXdv10*dXdv22)+dXdv02*(dXdv10*dXdv21-dXdv20*dXdv11);
501                if (D==0.) {                if (D==0.) {
502                    sprintf(error_msg,"Assemble_jacobeans_3D: element %d (id %d) has volume zero.",e,element_id[e]);                    sprintf(error_msg,"Finley_Assemble_jacobeans_3D: element %d (id %d) has volume zero.",e,element_id[e]);
503                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);
504                } else {                } else {
505                   invD=1./D;                   invD=1./D;
# Line 537  void Assemble_jacobeans_3D_M2D_E3D(doubl Line 537  void Assemble_jacobeans_3D_M2D_E3D(doubl
537  /*                                                            */  /*                                                            */
538  /*  Jacobean 2D manifold in 3D with 3D elements on contact    */  /*  Jacobean 2D manifold in 3D with 3D elements on contact    */
539  /*                                                            */  /*                                                            */
540  void Assemble_jacobeans_3D_M2D_E3D_C(double* coordinates, dim_t numQuad,double* QuadWeights,  void Finley_Assemble_jacobeans_3D_M2D_E3D_C(double* coordinates, dim_t numQuad,double* QuadWeights,
541                                       dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,                                       dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,
542                                       double* DSDv, dim_t numTest,double* DTDv,                                       double* DSDv, dim_t numTest,double* DTDv,
543                                       double* dTdX, double* volume, index_t* element_id) {                                       double* dTdX, double* volume, index_t* element_id) {
# Line 603  void Assemble_jacobeans_3D_M2D_E3D_C(dou Line 603  void Assemble_jacobeans_3D_M2D_E3D_C(dou
603                D_0=dXdv00_0*(dXdv11_0*dXdv22_0-dXdv12_0*dXdv21_0)+dXdv01_0*(dXdv20_0*dXdv12_0-dXdv10_0*dXdv22_0)+dXdv02_0*(dXdv10_0*dXdv21_0-dXdv20_0*dXdv11_0);                D_0=dXdv00_0*(dXdv11_0*dXdv22_0-dXdv12_0*dXdv21_0)+dXdv01_0*(dXdv20_0*dXdv12_0-dXdv10_0*dXdv22_0)+dXdv02_0*(dXdv10_0*dXdv21_0-dXdv20_0*dXdv11_0);
604                D_1=dXdv00_1*(dXdv11_1*dXdv22_1-dXdv12_1*dXdv21_1)+dXdv01_1*(dXdv20_1*dXdv12_1-dXdv10_1*dXdv22_1)+dXdv02_1*(dXdv10_1*dXdv21_1-dXdv20_1*dXdv11_1);                D_1=dXdv00_1*(dXdv11_1*dXdv22_1-dXdv12_1*dXdv21_1)+dXdv01_1*(dXdv20_1*dXdv12_1-dXdv10_1*dXdv22_1)+dXdv02_1*(dXdv10_1*dXdv21_1-dXdv20_1*dXdv11_1);
605                if ( (D_0==0.) || (D_1 == 0.)) {                if ( (D_0==0.) || (D_1 == 0.)) {
606                    sprintf(error_msg,"Assemble_jacobeans_3D_C: element %d (id %d) has volume zero.",e,element_id[e]);                    sprintf(error_msg,"Finley_Assemble_jacobeans_3D_C: element %d (id %d) has volume zero.",e,element_id[e]);
607                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);
608                } else {                } else {
609                   invD_0=1./D_0;                   invD_0=1./D_0;
# Line 660  void Assemble_jacobeans_3D_M2D_E3D_C(dou Line 660  void Assemble_jacobeans_3D_M2D_E3D_C(dou
660  /*                                                            */  /*                                                            */
661  /*  Jacobean 2D manifold in 3D with 2D elements               */  /*  Jacobean 2D manifold in 3D with 2D elements               */
662  /*                                                            */  /*                                                            */
663  void Assemble_jacobeans_3D_M2D_E2D(double* coordinates, dim_t numQuad,double* QuadWeights,  void Finley_Assemble_jacobeans_3D_M2D_E2D(double* coordinates, dim_t numQuad,double* QuadWeights,
664                                     dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,                                     dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,
665                                     double* DSDv, dim_t numTest,double* DTDv,                                     double* DSDv, dim_t numTest,double* DTDv,
666                                     double* dTdX, double* volume, index_t* element_id) {                                     double* dTdX, double* volume, index_t* element_id) {
# Line 698  void Assemble_jacobeans_3D_M2D_E2D(doubl Line 698  void Assemble_jacobeans_3D_M2D_E2D(doubl
698                m11=dXdv01*dXdv01+dXdv11*dXdv11+dXdv21*dXdv21;                m11=dXdv01*dXdv01+dXdv11*dXdv11+dXdv21*dXdv21;
699                D=m00*m11-m01*m01;                D=m00*m11-m01*m01;
700                if (D==0.) {                if (D==0.) {
701                    sprintf(error_msg,"Assemble_jacobeans_3D_M2D: element %d (id %d) has area zero.",e,element_id[e]);                    sprintf(error_msg,"Finley_Assemble_jacobeans_3D_M2D: element %d (id %d) has area zero.",e,element_id[e]);
702                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);
703                } else {                } else {
704                   invD=1./D;                   invD=1./D;
# Line 726  void Assemble_jacobeans_3D_M2D_E2D(doubl Line 726  void Assemble_jacobeans_3D_M2D_E2D(doubl
726  /*                                                            */  /*                                                            */
727  /*  Jacobean 2D manifold in 3D with 2D elements  with contact */  /*  Jacobean 2D manifold in 3D with 2D elements  with contact */
728  /*                                                            */  /*                                                            */
729  void Assemble_jacobeans_3D_M2D_E2D_C(double* coordinates, dim_t numQuad,double* QuadWeights,  void Finley_Assemble_jacobeans_3D_M2D_E2D_C(double* coordinates, dim_t numQuad,double* QuadWeights,
730                                       dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,                                       dim_t numShape, dim_t numElements, dim_t numNodes, index_t* nodes,
731                                       double* DSDv, dim_t numTest,double* DTDv,                                       double* DSDv, dim_t numTest,double* DTDv,
732                                       double* dTdX, double* volume, index_t* element_id) {                                       double* dTdX, double* volume, index_t* element_id) {
# Line 785  void Assemble_jacobeans_3D_M2D_E2D_C(dou Line 785  void Assemble_jacobeans_3D_M2D_E2D_C(dou
785                m11_1=dXdv01_1*dXdv01_1+dXdv11_1*dXdv11_1+dXdv21_1*dXdv21_1;                m11_1=dXdv01_1*dXdv01_1+dXdv11_1*dXdv11_1+dXdv21_1*dXdv21_1;
786                D_1=m00_1*m11_1-m01_1*m01_1;                D_1=m00_1*m11_1-m01_1*m01_1;
787                if ( (D_0==0.) || (D_1 == 0.) ) {                if ( (D_0==0.) || (D_1 == 0.) ) {
788                    sprintf(error_msg,"Assemble_jacobeans_3D_M2D: element %d (id %d) has area zero.",e,element_id[e]);                    sprintf(error_msg,"Finley_Assemble_jacobeans_3D_M2D: element %d (id %d) has area zero.",e,element_id[e]);
789                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);                    Finley_setError(ZERO_DIVISION_ERROR,error_msg);
790                } else {                } else {
791                   invD_0=1./D_0;                   invD_0=1./D_0;

Legend:
Removed from v.3246  
changed lines
  Added in v.3247

  ViewVC Help
Powered by ViewVC 1.1.26