~vcs-imports/escript-finley/trunk

« back to all changes in this revision

Viewing changes to finley/src/Assemble_jacobeans.c

  • Committer: jfenwick
  • Date: 2010-10-11 01:48:14 UTC
  • Revision ID: svn-v4:77569008-7704-0410-b7a0-a92fef0b09fd:trunk:3259
Merging dudley and scons updates from branches

Show diffs side-by-side

added added

removed removed

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