/[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 3136 by jfenwick, Thu Sep 2 03:48:29 2010 UTC revision 3137 by jfenwick, Thu Sep 2 05:03:17 2010 UTC
# 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.numQuadSub,1)]);                        Vol=&(p.row_jac->volume[INDEX3(0,0,e, p.numQuadTotal,1)]);
95                        DSDX=&(p.row_jac->DSDX[INDEX5(0,0,0,0,e,p.row_numShapesTotal,DIM,p.numQuadSub,1)]);                        DSDX=&(p.row_jac->DSDX[INDEX5(0,0,0,0,e,p.row_numShapesTotal,DIM,p.numQuadTotal,1)]);
96                        for (q=0;q<len_EM_S;++q) EM_S[q]=0;                        for (q=0;q<len_EM_S;++q) EM_S[q]=0;
97                        for (q=0;q<len_EM_F;++q) EM_F[q]=0;                        for (q=0;q<len_EM_F;++q) EM_F[q]=0;
98                        add_EM_F=FALSE;                        add_EM_F=FALSE;
# Line 104  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 104  void  Dudley_Assemble_PDE_Single2_3D(Ass
104                        if (NULL!=A_p) {                        if (NULL!=A_p) {
105                           add_EM_S=TRUE;                           add_EM_S=TRUE;
106                           if (extendedA) {                           if (extendedA) {
107                  A_q=&(A_p[INDEX4(0,0,0,0, DIM,DIM,p.numQuadSub)]);                  A_q=&(A_p[INDEX4(0,0,0,0, DIM,DIM,p.numQuadTotal)]);
108                              for (s=0;s<p.row_numShapes;s++) {                              for (s=0;s<p.row_numShapes;s++) {
109                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
110                                  rtmp=0;                                  rtmp=0;
111                                  for (q=0;q<p.numQuadSub;q++) {                                  for (q=0;q<p.numQuadTotal;q++) {
112                                        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[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)]
113                                                     + 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)]
114                                                     + 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)]
# Line 134  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 134  void  Dudley_Assemble_PDE_Single2_3D(Ass
134                                         rtmp20=0;                                         rtmp20=0;
135                                         rtmp21=0;                                         rtmp21=0;
136                                         rtmp22=0;                                         rtmp22=0;
137                                         for (q=0;q<p.numQuadSub;q++) {                                         for (q=0;q<p.numQuadTotal;q++) {
138                
139                                             rtmp0=Vol[q]*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];                                             rtmp0=Vol[q]*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];
140                                             rtmp00+=rtmp0*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];                                             rtmp00+=rtmp0*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];
# Line 170  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 170  void  Dudley_Assemble_PDE_Single2_3D(Ass
170                        if (NULL!=B_p) {                        if (NULL!=B_p) {
171                           add_EM_S=TRUE;                           add_EM_S=TRUE;
172                           if (extendedB) {                           if (extendedB) {
173                      B_q=&(B_p[INDEX3(0,0,0, DIM,p.numQuadSub)]);                      B_q=&(B_p[INDEX3(0,0,0, DIM,p.numQuadTotal)]);
174                              for (s=0;s<p.row_numShapes;s++) {                              for (s=0;s<p.row_numShapes;s++) {
175                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
176                                  rtmp=0;                                  rtmp=0;
177                                  for (q=0;q<p.numQuadSub;q++) {                                  for (q=0;q<p.numQuadTotal;q++) {
178                                      rtmp+=Vol[q]*S[INDEX2(r,q,p.row_numShapes)]*                                      rtmp+=Vol[q]*S[INDEX2(r,q,p.row_numShapes)]*
179                                                   ( 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)]
180                                                   + 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)]
# Line 189  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 189  void  Dudley_Assemble_PDE_Single2_3D(Ass
189                                    rtmp0=0;                                    rtmp0=0;
190                                    rtmp1=0;                                    rtmp1=0;
191                                    rtmp2=0;                                    rtmp2=0;
192                                    for (q=0;q<p.numQuadSub;q++) {                                    for (q=0;q<p.numQuadTotal;q++) {
193                                        rtmp=Vol[q]*S[INDEX2(r,q,p.row_numShapes)];                                        rtmp=Vol[q]*S[INDEX2(r,q,p.row_numShapes)];
194                                        rtmp0+=rtmp*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];                                        rtmp0+=rtmp*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];
195                                        rtmp1+=rtmp*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];                                        rtmp1+=rtmp*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];
# Line 206  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 206  void  Dudley_Assemble_PDE_Single2_3D(Ass
206                        if (NULL!=C_p) {                        if (NULL!=C_p) {
207                          add_EM_S=TRUE;                          add_EM_S=TRUE;
208                          if (extendedC) {                          if (extendedC) {
209                              C_q=&(C_p[INDEX3(0,0,0, DIM, p.numQuadSub)]);                              C_q=&(C_p[INDEX3(0,0,0, DIM, p.numQuadTotal)]);
210                              for (s=0;s<p.row_numShapes;s++) {                              for (s=0;s<p.row_numShapes;s++) {
211                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
212                                  rtmp=0;                                  rtmp=0;
213                                  for (q=0;q<p.numQuadSub;q++) {                                  for (q=0;q<p.numQuadTotal;q++) {
214                                     rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)]*                                     rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)]*
215                                           ( 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)]
216                                           + 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)]
# Line 225  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 225  void  Dudley_Assemble_PDE_Single2_3D(Ass
225                                    rtmp0=0;                                    rtmp0=0;
226                                    rtmp1=0;                                    rtmp1=0;
227                                    rtmp2=0;                                    rtmp2=0;
228                                    for (q=0;q<p.numQuadSub;q++) {                                    for (q=0;q<p.numQuadTotal;q++) {
229                                        rtmp=Vol[q]*S[INDEX2(s,q,p.row_numShapes)];                                        rtmp=Vol[q]*S[INDEX2(s,q,p.row_numShapes)];
230                                        rtmp0+=rtmp*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];                                        rtmp0+=rtmp*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];
231                                        rtmp1+=rtmp*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];                                        rtmp1+=rtmp*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];
# Line 242  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 242  void  Dudley_Assemble_PDE_Single2_3D(Ass
242                        if (NULL!=D_p) {                        if (NULL!=D_p) {
243                          add_EM_S=TRUE;                          add_EM_S=TRUE;
244                          if (extendedD) {                          if (extendedD) {
245                  D_q=&(D_p[INDEX2(0,0, p.numQuadSub)]);                  D_q=&(D_p[INDEX2(0,0, p.numQuadTotal)]);
246                              for (s=0;s<p.row_numShapes;s++) {                              for (s=0;s<p.row_numShapes;s++) {
247                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
248                                  rtmp=0;                                  rtmp=0;
249                                  for (q=0;q<p.numQuadSub;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[q]*S[INDEX2(s,q,p.row_numShapes)]*D_q[q]*S[INDEX2(r,q,p.row_numShapes)];
250                                  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;
251                                }                                }
252                              }                              }
# Line 254  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 254  void  Dudley_Assemble_PDE_Single2_3D(Ass
254                              for (s=0;s<p.row_numShapes;s++) {                              for (s=0;s<p.row_numShapes;s++) {
255                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
256                                    rtmp=0;                                    rtmp=0;
257                                    for (q=0;q<p.numQuadSub;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[q]*S[INDEX2(s,q,p.row_numShapes)]*S[INDEX2(r,q,p.row_numShapes)];
258                                    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];
259                                }                                }
260                              }                              }
# Line 266  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 266  void  Dudley_Assemble_PDE_Single2_3D(Ass
266                        if (NULL!=X_p) {                        if (NULL!=X_p) {
267                          add_EM_F=TRUE;                          add_EM_F=TRUE;
268                          if (extendedX) {                          if (extendedX) {
269                 X_q=&(X_p[INDEX3(0,0,0, DIM,p.numQuadSub)]);                 X_q=&(X_p[INDEX3(0,0,0, DIM,p.numQuadTotal)]);
270                             for (s=0;s<p.row_numShapes;s++) {                             for (s=0;s<p.row_numShapes;s++) {
271                                rtmp=0;                                rtmp=0;
272                                for (q=0;q<p.numQuadSub;q++) {                                for (q=0;q<p.numQuadTotal;q++) {
273                                     rtmp+=Vol[q]*( DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*X_q[INDEX2(0,q,DIM)]                                     rtmp+=Vol[q]*( DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*X_q[INDEX2(0,q,DIM)]
274                                                  + 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)]
275                                                  + 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)]);
# Line 281  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 281  void  Dudley_Assemble_PDE_Single2_3D(Ass
281                                rtmp0=0;                                rtmp0=0;
282                                rtmp1=0;                                rtmp1=0;
283                                rtmp2=0;                                rtmp2=0;
284                                for (q=0;q<p.numQuadSub;q++) {                                for (q=0;q<p.numQuadTotal;q++) {
285                                     rtmp0+=Vol[q]*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];                                     rtmp0+=Vol[q]*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];
286                                     rtmp1+=Vol[q]*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];                                     rtmp1+=Vol[q]*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];
287                                     rtmp2+=Vol[q]*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];                                     rtmp2+=Vol[q]*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];
# Line 296  void  Dudley_Assemble_PDE_Single2_3D(Ass Line 296  void  Dudley_Assemble_PDE_Single2_3D(Ass
296                        if (NULL!=Y_p) {                        if (NULL!=Y_p) {
297                          add_EM_F=TRUE;                          add_EM_F=TRUE;
298                          if (extendedY) {                          if (extendedY) {
299                 Y_q=&(Y_p[INDEX2(0,0, p.numQuadSub)]);                 Y_q=&(Y_p[INDEX2(0,0, p.numQuadTotal)]);
300                             for (s=0;s<p.row_numShapes;s++) {                             for (s=0;s<p.row_numShapes;s++) {
301                                rtmp=0;                                rtmp=0;
302                                for (q=0;q<p.numQuadSub;q++) rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)]*Y_q[q];                                for (q=0;q<p.numQuadTotal;q++) rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)]*Y_q[q];
303                                EM_F[INDEX2(0,s,p.numEqu)]+=rtmp;                                EM_F[INDEX2(0,s,p.numEqu)]+=rtmp;
304                             }                             }
305                           } else {                           } else {
306                             for (s=0;s<p.row_numShapes;s++) {                             for (s=0;s<p.row_numShapes;s++) {
307                                 rtmp=0;                                 rtmp=0;
308                                 for (q=0;q<p.numQuadSub;q++) rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)];                                 for (q=0;q<p.numQuadTotal;q++) rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)];
309                                 EM_F[INDEX2(0,s,p.numEqu)]+=rtmp*Y_p[0];                                 EM_F[INDEX2(0,s,p.numEqu)]+=rtmp*Y_p[0];
310                             }                             }
311                           }                           }

Legend:
Removed from v.3136  
changed lines
  Added in v.3137

  ViewVC Help
Powered by ViewVC 1.1.26