/[escript]/branches/domexper/dudley/src/Assemble_PDE_Single2_3D.c
ViewVC logotype

Diff of /branches/domexper/dudley/src/Assemble_PDE_Single2_3D.c

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

revision 3183 by jfenwick, Fri Sep 3 00:49:02 2010 UTC revision 3184 by jfenwick, Wed Sep 15 00:23:42 2010 UTC
# Line 53  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 53  void  Dudley_Assemble_PDE_Single2_3D(Ass
53      index_t color;      index_t color;
54      dim_t e;      dim_t e;
55      __const double *A_p, *B_p, *C_p, *D_p, *X_p, *Y_p, *A_q, *B_q, *C_q, *D_q, *X_q, *Y_q;      __const double *A_p, *B_p, *C_p, *D_p, *X_p, *Y_p, *A_q, *B_q, *C_q, *D_q, *X_q, *Y_q;
56      double *EM_S, *EM_F, *Vol, *DSDX;      double *EM_S, *EM_F, *DSDX;
57      index_t *row_index;      index_t *row_index;
58      register dim_t q, s,r;      register dim_t q, s,r;
59      register double rtmp, rtmp00, rtmp01, rtmp02, rtmp10, rtmp11, rtmp12, rtmp20, rtmp21, rtmp22, rtmp0, rtmp1, rtmp2;      register double rtmp, rtmp00, rtmp01, rtmp02, rtmp10, rtmp11, rtmp12, rtmp20, rtmp21, rtmp22, rtmp0, rtmp1, rtmp2;
# Line 91  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 91  void  Dudley_Assemble_PDE_Single2_3D(Ass
91                     X_p=getSampleDataRO(X,e);                     X_p=getSampleDataRO(X,e);
92                     Y_p=getSampleDataRO(Y,e);                     Y_p=getSampleDataRO(Y,e);
93    
94                        Vol=&(p.row_jac->volume[INDEX3(0,0,e, p.numQuadTotal,1)]);  //                      Vol=&(p.row_jac->volume[INDEX3(0,0,e, p.numQuadTotal,1)]);
95               double vol=p.row_jac->absD[e]*p.row_jac->quadweight;
96                        DSDX=&(p.row_jac->DSDX[INDEX5(0,0,0,0,e,p.row_numShapesTotal,DIM,p.numQuadTotal,1)]);                        DSDX=&(p.row_jac->DSDX[INDEX5(0,0,0,0,e,p.row_numShapesTotal,DIM,p.numQuadTotal,1)]);
97                        for (q=0;q<len_EM_S;++q) EM_S[q]=0;                        for (q=0;q<len_EM_S;++q) EM_S[q]=0;
98                        for (q=0;q<len_EM_F;++q) EM_F[q]=0;                        for (q=0;q<len_EM_F;++q) EM_F[q]=0;
# Line 109  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 110  void  Dudley_Assemble_PDE_Single2_3D(Ass
110                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
111                                  rtmp=0;                                  rtmp=0;
112                                  for (q=0;q<p.numQuadTotal;q++) {                                  for (q=0;q<p.numQuadTotal;q++) {
113                                        rtmp+=Vol[q]*( DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*A_q[INDEX3(0,0,q,DIM,DIM)]*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)]                                        rtmp+=vol*( DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*A_q[INDEX3(0,0,q,DIM,DIM)]*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)]
114                                                     + DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*A_q[INDEX3(0,1,q,DIM,DIM)]*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)]                                                     + DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*A_q[INDEX3(0,1,q,DIM,DIM)]*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)]
115                                                     + DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*A_q[INDEX3(0,2,q,DIM,DIM)]*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)]                                                     + DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*A_q[INDEX3(0,2,q,DIM,DIM)]*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)]
116                                                     + DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)]*A_q[INDEX3(1,0,q,DIM,DIM)]*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)]                                                     + DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)]*A_q[INDEX3(1,0,q,DIM,DIM)]*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)]
# Line 136  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 137  void  Dudley_Assemble_PDE_Single2_3D(Ass
137                                         rtmp22=0;                                         rtmp22=0;
138                                         for (q=0;q<p.numQuadTotal;q++) {                                         for (q=0;q<p.numQuadTotal;q++) {
139                
140                                             rtmp0=Vol[q]*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];                                             rtmp0=vol*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];
141                                             rtmp00+=rtmp0*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];                                             rtmp00+=rtmp0*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];
142                                             rtmp01+=rtmp0*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];                                             rtmp01+=rtmp0*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];
143                                             rtmp02+=rtmp0*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];                                             rtmp02+=rtmp0*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];
144                
145                                             rtmp1=Vol[q]*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];                                             rtmp1=vol*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];
146                                             rtmp10+=rtmp1*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];                                             rtmp10+=rtmp1*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];
147                                             rtmp11+=rtmp1*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];                                             rtmp11+=rtmp1*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];
148                                             rtmp12+=rtmp1*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];                                             rtmp12+=rtmp1*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];
149                
150                                             rtmp2=Vol[q]*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];                                             rtmp2=vol*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];
151                                             rtmp20+=rtmp2*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];                                             rtmp20+=rtmp2*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];
152                                             rtmp21+=rtmp2*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];                                             rtmp21+=rtmp2*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];
153                                             rtmp22+=rtmp2*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];                                             rtmp22+=rtmp2*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];
# Line 175  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 176  void  Dudley_Assemble_PDE_Single2_3D(Ass
176                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
177                                  rtmp=0;                                  rtmp=0;
178                                  for (q=0;q<p.numQuadTotal;q++) {                                  for (q=0;q<p.numQuadTotal;q++) {
179                                      rtmp+=Vol[q]*S[INDEX2(r,q,p.row_numShapes)]*                                      rtmp+=vol*S[INDEX2(r,q,p.row_numShapes)]*
180                                                   ( DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*B_q[INDEX2(0,q,DIM)]                                                   ( DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*B_q[INDEX2(0,q,DIM)]
181                                                   + DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)]*B_q[INDEX2(1,q,DIM)]                                                   + DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)]*B_q[INDEX2(1,q,DIM)]
182                                                   + DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)]*B_q[INDEX2(2,q,DIM)]);                                                   + DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)]*B_q[INDEX2(2,q,DIM)]);
# Line 190  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 191  void  Dudley_Assemble_PDE_Single2_3D(Ass
191                                    rtmp1=0;                                    rtmp1=0;
192                                    rtmp2=0;                                    rtmp2=0;
193                                    for (q=0;q<p.numQuadTotal;q++) {                                    for (q=0;q<p.numQuadTotal;q++) {
194                                        rtmp=Vol[q]*S[INDEX2(r,q,p.row_numShapes)];                                        rtmp=vol*S[INDEX2(r,q,p.row_numShapes)];
195                                        rtmp0+=rtmp*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];                                        rtmp0+=rtmp*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];
196                                        rtmp1+=rtmp*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];                                        rtmp1+=rtmp*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];
197                                        rtmp2+=rtmp*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];                                        rtmp2+=rtmp*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];
# Line 211  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 212  void  Dudley_Assemble_PDE_Single2_3D(Ass
212                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
213                                  rtmp=0;                                  rtmp=0;
214                                  for (q=0;q<p.numQuadTotal;q++) {                                  for (q=0;q<p.numQuadTotal;q++) {
215                                     rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)]*                                     rtmp+=vol*S[INDEX2(s,q,p.row_numShapes)]*
216                                           ( C_q[INDEX2(0,q,DIM)]*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)]                                           ( C_q[INDEX2(0,q,DIM)]*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)]
217                                           + C_q[INDEX2(1,q,DIM)]*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)]                                           + C_q[INDEX2(1,q,DIM)]*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)]
218                                           + C_q[INDEX2(2,q,DIM)]*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)]);                                           + C_q[INDEX2(2,q,DIM)]*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)]);
# Line 226  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 227  void  Dudley_Assemble_PDE_Single2_3D(Ass
227                                    rtmp1=0;                                    rtmp1=0;
228                                    rtmp2=0;                                    rtmp2=0;
229                                    for (q=0;q<p.numQuadTotal;q++) {                                    for (q=0;q<p.numQuadTotal;q++) {
230                                        rtmp=Vol[q]*S[INDEX2(s,q,p.row_numShapes)];                                        rtmp=vol*S[INDEX2(s,q,p.row_numShapes)];
231                                        rtmp0+=rtmp*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];                                        rtmp0+=rtmp*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];
232                                        rtmp1+=rtmp*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];                                        rtmp1+=rtmp*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];
233                                        rtmp2+=rtmp*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];                                        rtmp2+=rtmp*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];
# Line 246  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 247  void  Dudley_Assemble_PDE_Single2_3D(Ass
247                              for (s=0;s<p.row_numShapes;s++) {                              for (s=0;s<p.row_numShapes;s++) {
248                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
249                                  rtmp=0;                                  rtmp=0;
250                                  for (q=0;q<p.numQuadTotal;q++) rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)]*D_q[q]*S[INDEX2(r,q,p.row_numShapes)];                                  for (q=0;q<p.numQuadTotal;q++) rtmp+=vol*S[INDEX2(s,q,p.row_numShapes)]*D_q[q]*S[INDEX2(r,q,p.row_numShapes)];
251                                  EM_S[INDEX4(0,0,s,r,p.numEqu,p.numComp,p.row_numShapesTotal)]+=rtmp;                                  EM_S[INDEX4(0,0,s,r,p.numEqu,p.numComp,p.row_numShapesTotal)]+=rtmp;
252                                }                                }
253                              }                              }
# Line 254  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 255  void  Dudley_Assemble_PDE_Single2_3D(Ass
255                              for (s=0;s<p.row_numShapes;s++) {                              for (s=0;s<p.row_numShapes;s++) {
256                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
257                                    rtmp=0;                                    rtmp=0;
258                                    for (q=0;q<p.numQuadTotal;q++) rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)]*S[INDEX2(r,q,p.row_numShapes)];                                    for (q=0;q<p.numQuadTotal;q++) rtmp+=vol*S[INDEX2(s,q,p.row_numShapes)]*S[INDEX2(r,q,p.row_numShapes)];
259                                    EM_S[INDEX4(0,0,s,r,p.numEqu,p.numComp,p.row_numShapesTotal)]+=rtmp*D_p[0];                                    EM_S[INDEX4(0,0,s,r,p.numEqu,p.numComp,p.row_numShapesTotal)]+=rtmp*D_p[0];
260                                }                                }
261                              }                              }
# Line 270  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 271  void  Dudley_Assemble_PDE_Single2_3D(Ass
271                             for (s=0;s<p.row_numShapes;s++) {                             for (s=0;s<p.row_numShapes;s++) {
272                                rtmp=0;                                rtmp=0;
273                                for (q=0;q<p.numQuadTotal;q++) {                                for (q=0;q<p.numQuadTotal;q++) {
274                                     rtmp+=Vol[q]*( DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*X_q[INDEX2(0,q,DIM)]                                     rtmp+=vol*( DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*X_q[INDEX2(0,q,DIM)]
275                                                  + DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)]*X_q[INDEX2(1,q,DIM)]                                                  + DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)]*X_q[INDEX2(1,q,DIM)]
276                                                  + DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)]*X_q[INDEX2(2,q,DIM)]);                                                  + DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)]*X_q[INDEX2(2,q,DIM)]);
277                                }                                }
# Line 282  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 283  void  Dudley_Assemble_PDE_Single2_3D(Ass
283                                rtmp1=0;                                rtmp1=0;
284                                rtmp2=0;                                rtmp2=0;
285                                for (q=0;q<p.numQuadTotal;q++) {                                for (q=0;q<p.numQuadTotal;q++) {
286                                     rtmp0+=Vol[q]*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];                                     rtmp0+=vol*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];
287                                     rtmp1+=Vol[q]*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];                                     rtmp1+=vol*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];
288                                     rtmp2+=Vol[q]*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];                                     rtmp2+=vol*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];
289                                }                                }
290                                EM_F[INDEX2(0,s,p.numEqu)]+=rtmp0*X_p[0]+rtmp1*X_p[1]+rtmp2*X_p[2];                                EM_F[INDEX2(0,s,p.numEqu)]+=rtmp0*X_p[0]+rtmp1*X_p[1]+rtmp2*X_p[2];
291                             }                             }
# Line 299  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 300  void  Dudley_Assemble_PDE_Single2_3D(Ass
300                 Y_q=&(Y_p[INDEX2(0,0, p.numQuadTotal)]);                 Y_q=&(Y_p[INDEX2(0,0, p.numQuadTotal)]);
301                             for (s=0;s<p.row_numShapes;s++) {                             for (s=0;s<p.row_numShapes;s++) {
302                                rtmp=0;                                rtmp=0;
303                                for (q=0;q<p.numQuadTotal;q++) rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)]*Y_q[q];                                for (q=0;q<p.numQuadTotal;q++) rtmp+=vol*S[INDEX2(s,q,p.row_numShapes)]*Y_q[q];
304                                EM_F[INDEX2(0,s,p.numEqu)]+=rtmp;                                EM_F[INDEX2(0,s,p.numEqu)]+=rtmp;
305                             }                             }
306                           } else {                           } else {
307                             for (s=0;s<p.row_numShapes;s++) {                             for (s=0;s<p.row_numShapes;s++) {
308                                 rtmp=0;                                 rtmp=0;
309                                 for (q=0;q<p.numQuadTotal;q++) rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)];                                 for (q=0;q<p.numQuadTotal;q++) rtmp+=vol*S[INDEX2(s,q,p.row_numShapes)];
310                                 EM_F[INDEX2(0,s,p.numEqu)]+=rtmp*Y_p[0];                                 EM_F[INDEX2(0,s,p.numEqu)]+=rtmp*Y_p[0];
311                             }                             }
312                           }                           }

Legend:
Removed from v.3183  
changed lines
  Added in v.3184

  ViewVC Help
Powered by ViewVC 1.1.26