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

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

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

revision 3086 by jfenwick, Thu Aug 5 05:07:58 2010 UTC revision 3184 by jfenwick, Wed Sep 15 00:23:42 2010 UTC
# Line 51  void  Dudley_Assemble_PDE_System2_3D(Ass Line 51  void  Dudley_Assemble_PDE_System2_3D(Ass
51    
52      #define DIM 3      #define DIM 3
53      index_t color;      index_t color;
54      dim_t e, isub;      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,k,m;      register dim_t q, s,r,k,m;
59      register double rtmp, rtmp0, rtmp1, rtmp2, rtmp00, rtmp01, rtmp02, rtmp10, rtmp11, rtmp12, rtmp20, rtmp21, rtmp22;      register double rtmp, rtmp0, rtmp1, rtmp2, rtmp00, rtmp01, rtmp02, rtmp10, rtmp11, rtmp12, rtmp20, rtmp21, rtmp22;
# Line 70  void  Dudley_Assemble_PDE_System2_3D(Ass Line 70  void  Dudley_Assemble_PDE_System2_3D(Ass
70      dim_t len_EM_S=p.row_numShapesTotal*p.col_numShapesTotal*p.numEqu*p.numComp;      dim_t len_EM_S=p.row_numShapesTotal*p.col_numShapesTotal*p.numEqu*p.numComp;
71      dim_t len_EM_F=p.row_numShapesTotal*p.numEqu;      dim_t len_EM_F=p.row_numShapesTotal*p.numEqu;
72    
73      #pragma omp parallel private(color,EM_S, EM_F, Vol, DSDX, A_p, B_p, C_p, D_p, X_p, Y_p, A_q, B_q, C_q, D_q, X_q, Y_q,row_index,q, s,r,k,m,rtmp, rtmp0, rtmp1, rtmp2, rtmp00, rtmp01, rtmp02, rtmp10, rtmp11, rtmp12, rtmp20, rtmp21, rtmp22,add_EM_F, add_EM_S, isub)      #pragma omp parallel private(color,EM_S, EM_F, Vol, DSDX, A_p, B_p, C_p, D_p, X_p, Y_p, A_q, B_q, C_q, D_q, X_q, Y_q,row_index,q, s,r,k,m,rtmp, rtmp0, rtmp1, rtmp2, rtmp00, rtmp01, rtmp02, rtmp10, rtmp11, rtmp12, rtmp20, rtmp21, rtmp22,add_EM_F, add_EM_S)
74      {      {
75         EM_S=THREAD_MEMALLOC(len_EM_S,double);         EM_S=THREAD_MEMALLOC(len_EM_S,double);
76         EM_F=THREAD_MEMALLOC(len_EM_F,double);         EM_F=THREAD_MEMALLOC(len_EM_F,double);
# Line 90  void  Dudley_Assemble_PDE_System2_3D(Ass Line 90  void  Dudley_Assemble_PDE_System2_3D(Ass
90                     D_p=getSampleDataRO(D,e);                     D_p=getSampleDataRO(D,e);
91                     X_p=getSampleDataRO(X,e);                     X_p=getSampleDataRO(X,e);
92                     Y_p=getSampleDataRO(Y,e);                     Y_p=getSampleDataRO(Y,e);
93              double vol=p.row_jac->absD[e]*p.row_jac->quadweight;
94    
95                     for (isub=0;isub<p.numSub;isub++){                        DSDX=&(p.row_jac->DSDX[INDEX5(0,0,0,0,e,p.row_numShapesTotal,DIM,p.numQuadTotal,1)]);
   
                       Vol=&(p.row_jac->volume[INDEX3(0,isub,e, p.numQuadSub,p.numSub)]);  
                       DSDX=&(p.row_jac->DSDX[INDEX5(0,0,0,isub,e,p.row_numShapesTotal,DIM,p.numQuadSub,p.numSub)]);  
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 106  void  Dudley_Assemble_PDE_System2_3D(Ass Line 104  void  Dudley_Assemble_PDE_System2_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[INDEX6(0,0,0,0,0,isub, p.numEqu,DIM,p.numComp,DIM,p.numQuadSub)]);                      A_q=&(A_p[INDEX6(0,0,0,0,0,0, p.numEqu,DIM,p.numComp,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                                  for (k=0;k<p.numEqu;k++) {                                  for (k=0;k<p.numEqu;k++) {
111                                    for (m=0;m<p.numComp;m++) {                                    for (m=0;m<p.numComp;m++) {
112                                       rtmp=0;                                       rtmp=0;
113                                       for (q=0;q<p.numQuadSub;q++) {                                       for (q=0;q<p.numQuadTotal;q++) {
114                                          rtmp+=Vol[q]*(                                          rtmp+=vol*(
115                                            DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*A_q[INDEX5(k,0,m,0,q, p.numEqu,DIM,p.numComp,DIM)]*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)]                                            DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*A_q[INDEX5(k,0,m,0,q, p.numEqu,DIM,p.numComp,DIM)]*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)]
116                                           +DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*A_q[INDEX5(k,0,m,1,q, p.numEqu,DIM,p.numComp,DIM)]*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)]                                           +DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*A_q[INDEX5(k,0,m,1,q, p.numEqu,DIM,p.numComp,DIM)]*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)]
117                                           +DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*A_q[INDEX5(k,0,m,2,q, p.numEqu,DIM,p.numComp,DIM)]*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)]                                           +DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*A_q[INDEX5(k,0,m,2,q, p.numEqu,DIM,p.numComp,DIM)]*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)]
# Line 142  void  Dudley_Assemble_PDE_System2_3D(Ass Line 140  void  Dudley_Assemble_PDE_System2_3D(Ass
140                                    rtmp20=0;                                    rtmp20=0;
141                                    rtmp21=0;                                    rtmp21=0;
142                                    rtmp22=0;                                    rtmp22=0;
143                                    for (q=0;q<p.numQuadSub;q++) {                                    for (q=0;q<p.numQuadTotal;q++) {
144                                          rtmp0=Vol[q]*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];                                          rtmp0=vol*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];
145                                          rtmp00+=rtmp0*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];                                          rtmp00+=rtmp0*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];
146                                          rtmp01+=rtmp0*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];                                          rtmp01+=rtmp0*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];
147                                          rtmp02+=rtmp0*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];                                          rtmp02+=rtmp0*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];
148                
149                                          rtmp1=Vol[q]*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];                                          rtmp1=vol*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];
150                                          rtmp10+=rtmp1*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];                                          rtmp10+=rtmp1*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];
151                                          rtmp11+=rtmp1*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];                                          rtmp11+=rtmp1*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];
152                                          rtmp12+=rtmp1*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];                                          rtmp12+=rtmp1*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];
153                
154                                          rtmp2=Vol[q]*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];                                          rtmp2=vol*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];
155                                          rtmp20+=rtmp2*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];                                          rtmp20+=rtmp2*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];
156                                          rtmp21+=rtmp2*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];                                          rtmp21+=rtmp2*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];
157                                          rtmp22+=rtmp2*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];                                          rtmp22+=rtmp2*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];
# Line 181  void  Dudley_Assemble_PDE_System2_3D(Ass Line 179  void  Dudley_Assemble_PDE_System2_3D(Ass
179                        if (NULL!=B_p) {                        if (NULL!=B_p) {
180                           add_EM_S=TRUE;                           add_EM_S=TRUE;
181                           if (extendedB) {                           if (extendedB) {
182                      B_q=&(B_p[INDEX5(0,0,0,0,isub, p.numEqu,DIM,p.numComp,p.numQuadSub)]);                      B_q=&(B_p[INDEX5(0,0,0,0,0, p.numEqu,DIM,p.numComp,p.numQuadTotal)]);
183                              for (s=0;s<p.row_numShapes;s++) {                              for (s=0;s<p.row_numShapes;s++) {
184                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
185                                  for (k=0;k<p.numEqu;k++) {                                  for (k=0;k<p.numEqu;k++) {
186                                    for (m=0;m<p.numComp;m++) {                                    for (m=0;m<p.numComp;m++) {
187                                       rtmp=0;                                       rtmp=0;
188                                       for (q=0;q<p.numQuadSub;q++) {                                       for (q=0;q<p.numQuadTotal;q++) {
189                                           rtmp+=Vol[q]*S[INDEX2(r,q,p.row_numShapes)]*(                                           rtmp+=vol*S[INDEX2(r,q,p.row_numShapes)]*(
190                                                   DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*B_q[INDEX4(k,0,m,q,p.numEqu,DIM,p.numComp)]                                                   DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*B_q[INDEX4(k,0,m,q,p.numEqu,DIM,p.numComp)]
191                                                 + DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)]*B_q[INDEX4(k,1,m,q,p.numEqu,DIM,p.numComp)]                                                 + DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)]*B_q[INDEX4(k,1,m,q,p.numEqu,DIM,p.numComp)]
192                                                 + DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)]*B_q[INDEX4(k,2,m,q,p.numEqu,DIM,p.numComp)] );                                                 + DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)]*B_q[INDEX4(k,2,m,q,p.numEqu,DIM,p.numComp)] );
# Line 204  void  Dudley_Assemble_PDE_System2_3D(Ass Line 202  void  Dudley_Assemble_PDE_System2_3D(Ass
202                                       rtmp0=0;                                       rtmp0=0;
203                                       rtmp1=0;                                       rtmp1=0;
204                                       rtmp2=0;                                       rtmp2=0;
205                                       for (q=0;q<p.numQuadSub;q++) {                                       for (q=0;q<p.numQuadTotal;q++) {
206                                            rtmp=Vol[q]*S[INDEX2(r,q,p.row_numShapes)];                                            rtmp=vol*S[INDEX2(r,q,p.row_numShapes)];
207                                            rtmp0+=rtmp*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];                                            rtmp0+=rtmp*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];
208                                            rtmp1+=rtmp*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];                                            rtmp1+=rtmp*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];
209                                            rtmp2+=rtmp*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];                                            rtmp2+=rtmp*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];
# Line 227  void  Dudley_Assemble_PDE_System2_3D(Ass Line 225  void  Dudley_Assemble_PDE_System2_3D(Ass
225                        if (NULL!=C_p) {                        if (NULL!=C_p) {
226                          add_EM_S=TRUE;                          add_EM_S=TRUE;
227                          if (extendedC) {                          if (extendedC) {
228                  C_q=&(C_p[INDEX5(0,0,0,0,isub ,p.numEqu,p.numComp,DIM, p.numQuadSub)]);                  C_q=&(C_p[INDEX5(0,0,0,0,0 ,p.numEqu,p.numComp,DIM, p.numQuadTotal)]);
229                              for (s=0;s<p.row_numShapes;s++) {                              for (s=0;s<p.row_numShapes;s++) {
230                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
231                                  for (k=0;k<p.numEqu;k++) {                                  for (k=0;k<p.numEqu;k++) {
232                                    for (m=0;m<p.numComp;m++) {                                    for (m=0;m<p.numComp;m++) {
233                                      rtmp=0;                                      rtmp=0;
234                                      for (q=0;q<p.numQuadSub;q++) {                                      for (q=0;q<p.numQuadTotal;q++) {
235                                           rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)]*(                                           rtmp+=vol*S[INDEX2(s,q,p.row_numShapes)]*(
236                                                      C_q[INDEX4(k,m,0,q,p.numEqu,p.numComp,DIM)]*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)]                                                      C_q[INDEX4(k,m,0,q,p.numEqu,p.numComp,DIM)]*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)]
237                                                     +C_q[INDEX4(k,m,1,q,p.numEqu,p.numComp,DIM)]*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)]                                                     +C_q[INDEX4(k,m,1,q,p.numEqu,p.numComp,DIM)]*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)]
238                                                     +C_q[INDEX4(k,m,2,q,p.numEqu,p.numComp,DIM)]*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)]);                                                     +C_q[INDEX4(k,m,2,q,p.numEqu,p.numComp,DIM)]*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)]);
# Line 250  void  Dudley_Assemble_PDE_System2_3D(Ass Line 248  void  Dudley_Assemble_PDE_System2_3D(Ass
248                                       rtmp0=0;                                       rtmp0=0;
249                                       rtmp1=0;                                       rtmp1=0;
250                                       rtmp2=0;                                       rtmp2=0;
251                                       for (q=0;q<p.numQuadSub;q++) {                                       for (q=0;q<p.numQuadTotal;q++) {
252                                          rtmp=Vol[q]*S[INDEX2(s,q,p.row_numShapes)];                                          rtmp=vol*S[INDEX2(s,q,p.row_numShapes)];
253                                          rtmp0+=rtmp*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];                                          rtmp0+=rtmp*DSDX[INDEX3(r,0,q,p.row_numShapesTotal,DIM)];
254                                          rtmp1+=rtmp*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];                                          rtmp1+=rtmp*DSDX[INDEX3(r,1,q,p.row_numShapesTotal,DIM)];
255                                          rtmp2+=rtmp*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];                                          rtmp2+=rtmp*DSDX[INDEX3(r,2,q,p.row_numShapesTotal,DIM)];
# Line 273  void  Dudley_Assemble_PDE_System2_3D(Ass Line 271  void  Dudley_Assemble_PDE_System2_3D(Ass
271                        if (NULL!=D_p) {                        if (NULL!=D_p) {
272                          add_EM_S=TRUE;                          add_EM_S=TRUE;
273                          if (extendedD) {                          if (extendedD) {
274                  D_q=&(D_p[INDEX4(0,0,0,isub ,p.numEqu,p.numComp, p.numQuadSub)]);                  D_q=&(D_p[INDEX4(0,0,0,0 ,p.numEqu,p.numComp, p.numQuadTotal)]);
275                              for (s=0;s<p.row_numShapes;s++) {                              for (s=0;s<p.row_numShapes;s++) {
276                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
277                                  for (k=0;k<p.numEqu;k++) {                                  for (k=0;k<p.numEqu;k++) {
278                                    for (m=0;m<p.numComp;m++) {                                    for (m=0;m<p.numComp;m++) {
279                                      rtmp=0;                                      rtmp=0;
280                                      for (q=0;q<p.numQuadSub;q++) {                                      for (q=0;q<p.numQuadTotal;q++) {
281                                          rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)]*D_q[INDEX3(k,m,q,p.numEqu,p.numComp)]*S[INDEX2(r,q,p.row_numShapes)];                                          rtmp+=vol*S[INDEX2(s,q,p.row_numShapes)]*D_q[INDEX3(k,m,q,p.numEqu,p.numComp)]*S[INDEX2(r,q,p.row_numShapes)];
282                                      }                                      }
283                                      EM_S[INDEX4(k,m,s,r,p.numEqu,p.numComp,p.row_numShapesTotal)]+=rtmp;                                      EM_S[INDEX4(k,m,s,r,p.numEqu,p.numComp,p.row_numShapesTotal)]+=rtmp;
284                                    }                                    }
# Line 291  void  Dudley_Assemble_PDE_System2_3D(Ass Line 289  void  Dudley_Assemble_PDE_System2_3D(Ass
289                              for (s=0;s<p.row_numShapes;s++) {                              for (s=0;s<p.row_numShapes;s++) {
290                                for (r=0;r<p.col_numShapes;r++) {                                for (r=0;r<p.col_numShapes;r++) {
291                                    rtmp=0;                                    rtmp=0;
292                                    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*S[INDEX2(s,q,p.row_numShapes)]*S[INDEX2(r,q,p.row_numShapes)];
293                                    for (k=0;k<p.numEqu;k++) {                                    for (k=0;k<p.numEqu;k++) {
294                                        for (m=0;m<p.numComp;m++) {                                        for (m=0;m<p.numComp;m++) {
295                                          EM_S[INDEX4(k,m,s,r,p.numEqu,p.numComp,p.row_numShapesTotal)]+=rtmp*D_p[INDEX2(k,m,p.numEqu)];                                          EM_S[INDEX4(k,m,s,r,p.numEqu,p.numComp,p.row_numShapesTotal)]+=rtmp*D_p[INDEX2(k,m,p.numEqu)];
# Line 307  void  Dudley_Assemble_PDE_System2_3D(Ass Line 305  void  Dudley_Assemble_PDE_System2_3D(Ass
305                        if (NULL!=X_p) {                        if (NULL!=X_p) {
306                          add_EM_F=TRUE;                          add_EM_F=TRUE;
307                          if (extendedX) {                          if (extendedX) {
308                 X_q=&(X_p[INDEX4(0,0,0,isub, p.numEqu,DIM,p.numQuadSub)]);                 X_q=&(X_p[INDEX4(0,0,0,0, p.numEqu,DIM,p.numQuadTotal)]);
309                             for (s=0;s<p.row_numShapes;s++) {                             for (s=0;s<p.row_numShapes;s++) {
310                                for (k=0;k<p.numEqu;k++) {                                for (k=0;k<p.numEqu;k++) {
311                                   rtmp=0;                                   rtmp=0;
312                                   for (q=0;q<p.numQuadSub;q++) {                                   for (q=0;q<p.numQuadTotal;q++) {
313                                         rtmp+=Vol[q]* ( DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*X_q[INDEX3(k,0,q,p.numEqu,DIM)]                                         rtmp+=vol* ( DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)]*X_q[INDEX3(k,0,q,p.numEqu,DIM)]
314                                                       + DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)]*X_q[INDEX3(k,1,q,p.numEqu,DIM)]                                                       + DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)]*X_q[INDEX3(k,1,q,p.numEqu,DIM)]
315                                                       + DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)]*X_q[INDEX3(k,2,q,p.numEqu,DIM)]);                                                       + DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)]*X_q[INDEX3(k,2,q,p.numEqu,DIM)]);
316                                   }                                   }
# Line 324  void  Dudley_Assemble_PDE_System2_3D(Ass Line 322  void  Dudley_Assemble_PDE_System2_3D(Ass
322                               rtmp0=0;                               rtmp0=0;
323                               rtmp1=0;                               rtmp1=0;
324                               rtmp2=0;                               rtmp2=0;
325                               for (q=0;q<p.numQuadSub;q++) {                               for (q=0;q<p.numQuadTotal;q++) {
326                                  rtmp0+=Vol[q]*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];                                  rtmp0+=vol*DSDX[INDEX3(s,0,q,p.row_numShapesTotal,DIM)];
327                                  rtmp1+=Vol[q]*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];                                  rtmp1+=vol*DSDX[INDEX3(s,1,q,p.row_numShapesTotal,DIM)];
328                                  rtmp2+=Vol[q]*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];                                  rtmp2+=vol*DSDX[INDEX3(s,2,q,p.row_numShapesTotal,DIM)];
329                               }                               }
330                               for (k=0;k<p.numEqu;k++) {                               for (k=0;k<p.numEqu;k++) {
331                                         EM_F[INDEX2(k,s,p.numEqu)]+=rtmp0*X_p[INDEX2(k,0,p.numEqu)]                                         EM_F[INDEX2(k,s,p.numEqu)]+=rtmp0*X_p[INDEX2(k,0,p.numEqu)]
# Line 343  void  Dudley_Assemble_PDE_System2_3D(Ass Line 341  void  Dudley_Assemble_PDE_System2_3D(Ass
341                        if (NULL!=Y_p) {                        if (NULL!=Y_p) {
342                          add_EM_F=TRUE;                          add_EM_F=TRUE;
343                          if (extendedY) {                          if (extendedY) {
344                 Y_q=&(Y_p[INDEX3(0,0,isub, p.numEqu,p.numQuadSub)]);                 Y_q=&(Y_p[INDEX3(0,0,0, p.numEqu,p.numQuadTotal)]);
345                             for (s=0;s<p.row_numShapes;s++) {                             for (s=0;s<p.row_numShapes;s++) {
346                                for (k=0;k<p.numEqu;k++) {                                for (k=0;k<p.numEqu;k++) {
347                                   rtmp=0.;                                   rtmp=0.;
348                                   for (q=0;q<p.numQuadSub;q++) rtmp+=Vol[q]*S[INDEX2(s,q,p.row_numShapes)]*Y_q[INDEX2(k,q,p.numEqu)];                                   for (q=0;q<p.numQuadTotal;q++) rtmp+=vol*S[INDEX2(s,q,p.row_numShapes)]*Y_q[INDEX2(k,q,p.numEqu)];
349                                   EM_F[INDEX2(k,s,p.numEqu)]+=rtmp;                                   EM_F[INDEX2(k,s,p.numEqu)]+=rtmp;
350                                }                                }
351                             }                             }
352                           } else {                           } else {
353                             for (s=0;s<p.row_numShapes;s++) {                             for (s=0;s<p.row_numShapes;s++) {
354                                 rtmp=0;                                 rtmp=0;
355                                 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*S[INDEX2(s,q,p.row_numShapes)];
356                                 for (k=0;k<p.numEqu;k++) EM_F[INDEX2(k,s,p.numEqu)]+=rtmp*Y_p[k];                                 for (k=0;k<p.numEqu;k++) EM_F[INDEX2(k,s,p.numEqu)]+=rtmp*Y_p[k];
357                             }                             }
358                           }                           }
# Line 363  void  Dudley_Assemble_PDE_System2_3D(Ass Line 361  void  Dudley_Assemble_PDE_System2_3D(Ass
361                         /***********************************************************************************************/                         /***********************************************************************************************/
362                         /* add the element matrices onto the matrix and right hand side                                */                                   /* add the element matrices onto the matrix and right hand side                                */          
363                         /***********************************************************************************************/                         /***********************************************************************************************/
364                         for (q=0;q<p.row_numShapesTotal;q++) row_index[q]=p.row_DOF[elements->Nodes[INDEX2(p.row_node[INDEX2(q,isub,p.row_numShapesTotal)],e,p.NN)]];                         for (q=0;q<p.row_numShapesTotal;q++) row_index[q]=p.row_DOF[elements->Nodes[INDEX2(q,e,p.NN)]];
365                                                
366                 if (add_EM_F) Dudley_Util_AddScatter(p.row_numShapesTotal,row_index,p.numEqu,EM_F,F_p, p.row_DOF_UpperBound);                 if (add_EM_F) Dudley_Util_AddScatter(p.row_numShapesTotal,row_index,p.numEqu,EM_F,F_p, p.row_DOF_UpperBound);
367                         if (add_EM_S) Dudley_Assemble_addToSystemMatrix(Mat,p.row_numShapesTotal,row_index,p.numEqu,p.col_numShapesTotal,row_index,p.numComp,EM_S);                         if (add_EM_S) Dudley_Assemble_addToSystemMatrix(Mat,p.row_numShapesTotal,row_index,p.numEqu,p.col_numShapesTotal,row_index,p.numComp,EM_S);
                    } /* end of subn */  
368                  } /* end color check */                  } /* end color check */
369               } /* end element loop */               } /* end element loop */
370           } /* end color loop */           } /* end color loop */

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

  ViewVC Help
Powered by ViewVC 1.1.26