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

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

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

revision 3143 by jfenwick, Thu Sep 2 05:18:42 2010 UTC revision 3144 by jfenwick, Fri Sep 3 00:49:02 2010 UTC
# Line 37  void Dudley_Assemble_gradient(Dudley_Nod Line 37  void Dudley_Assemble_gradient(Dudley_Nod
37    dim_t numNodes=0, numShapes=0, numShapesTotal=0, numComps, NN=0, numDim=0, numShapesTotal2=0, numQuad=0;    dim_t numNodes=0, numShapes=0, numShapesTotal=0, numComps, NN=0, numDim=0, numShapesTotal2=0, numQuad=0;
38    type_t data_type=getFunctionSpaceType(data);    type_t data_type=getFunctionSpaceType(data);
39    bool_t reducedShapefunction=FALSE, reducedIntegrationOrder=FALSE;    bool_t reducedShapefunction=FALSE, reducedIntegrationOrder=FALSE;
40    index_t s_offset=0,  *nodes_selector=NULL;    index_t s_offset=0;
41    Dudley_ElementFile_Jacobeans* jac=NULL;    Dudley_ElementFile_Jacobeans* jac=NULL;
42        
43    Dudley_resetError();    Dudley_resetError();
# Line 83  void Dudley_Assemble_gradient(Dudley_Nod Line 83  void Dudley_Assemble_gradient(Dudley_Nod
83            s_offset=jac->offsets[0];            s_offset=jac->offsets[0];
84        localGradSize=sizeof(double)*numDim*numQuad*numComps;        localGradSize=sizeof(double)*numDim*numQuad*numComps;
85        if ( (data_type==DUDLEY_REDUCED_NODES) || (DUDLEY_REDUCED_DEGREES_OF_FREEDOM==data_type) )  {        if ( (data_type==DUDLEY_REDUCED_NODES) || (DUDLEY_REDUCED_DEGREES_OF_FREEDOM==data_type) )  {
           nodes_selector=refElement->Type->linearNodes;  
86            numShapesTotal2=refElement->LinearBasisFunctions->Type->numShapes;            numShapesTotal2=refElement->LinearBasisFunctions->Type->numShapes;
87        } else {        } else {
           nodes_selector=refElement->Type->subElementNodes;  
88            numShapesTotal2=refElement->BasisFunctions->Type->numShapes;            numShapesTotal2=refElement->BasisFunctions->Type->numShapes;
89        }        }
90        /* check the dimensions of data */        /* check the dimensions of data */
# Line 120  void Dudley_Assemble_gradient(Dudley_Nod Line 118  void Dudley_Assemble_gradient(Dudley_Nod
118                      grad_data_e=getSampleDataRW(grad_data,e);                      grad_data_e=getSampleDataRW(grad_data,e);
119                      memset(grad_data_e,0, localGradSize);                      memset(grad_data_e,0, localGradSize);
120                          for (s=0;s<numShapes;s++) {                          for (s=0;s<numShapes;s++) {
121                              n=elements->Nodes[INDEX2(nodes_selector[INDEX2(s_offset+s,0,numShapesTotal2)],e, NN)];                              n=elements->Nodes[INDEX2(s,e, NN)];
122                              data_array=getSampleDataRO(data,n);                              data_array=getSampleDataRO(data,n);
123                              for (q=0;q<numQuad;q++) {                              for (q=0;q<numQuad;q++) {
124                                  #pragma ivdep                                  #pragma ivdep
# Line 138  void Dudley_Assemble_gradient(Dudley_Nod Line 136  void Dudley_Assemble_gradient(Dudley_Nod
136                      grad_data_e=getSampleDataRW(grad_data,e);                      grad_data_e=getSampleDataRW(grad_data,e);
137                      memset(grad_data_e,0, localGradSize);                      memset(grad_data_e,0, localGradSize);
138                          for (s=0;s<numShapes;s++) {                          for (s=0;s<numShapes;s++) {
139                              n=elements->Nodes[INDEX2(nodes_selector[INDEX2(s_offset+s,0,numShapesTotal2)],e, NN)];                              n=elements->Nodes[INDEX2(s,e, NN)];
140                              data_array=getSampleDataRO(data,n);                              data_array=getSampleDataRO(data,n);
141                              for (q=0;q<numQuad;q++) {                              for (q=0;q<numQuad;q++) {
142                                  #pragma ivdep                                  #pragma ivdep
# Line 158  void Dudley_Assemble_gradient(Dudley_Nod Line 156  void Dudley_Assemble_gradient(Dudley_Nod
156                      grad_data_e=getSampleDataRW(grad_data,e);                      grad_data_e=getSampleDataRW(grad_data,e);
157                      memset(grad_data_e,0, localGradSize);                      memset(grad_data_e,0, localGradSize);
158                          for (s=0;s<numShapes;s++) {                          for (s=0;s<numShapes;s++) {
159                              n=elements->Nodes[INDEX2(nodes_selector[INDEX2(s_offset+s,0,numShapesTotal2)],e, NN)];                              n=elements->Nodes[INDEX2(s,e, NN)];
160                              data_array=getSampleDataRO(data,n);                              data_array=getSampleDataRO(data,n);
161                              for (q=0;q<numQuad;q++) {                              for (q=0;q<numQuad;q++) {
162                                  #pragma ivdep                                  #pragma ivdep
# Line 180  void Dudley_Assemble_gradient(Dudley_Nod Line 178  void Dudley_Assemble_gradient(Dudley_Nod
178                      grad_data_e=getSampleDataRW(grad_data,e);                      grad_data_e=getSampleDataRW(grad_data,e);
179                      memset(grad_data_e,0, localGradSize);                      memset(grad_data_e,0, localGradSize);
180                          for (s=0;s<numShapes;s++) {                          for (s=0;s<numShapes;s++) {
181                              n=elements->Nodes[INDEX2(nodes_selector[INDEX2(s_offset+s,0,numShapesTotal2)],e, NN)];                              n=elements->Nodes[INDEX2(s,e, NN)];
182                              data_array=getSampleDataRO(data,nodes->reducedNodesMapping->target[n]);                                          data_array=getSampleDataRO(data,nodes->reducedNodesMapping->target[n]);            
183                              for (q=0;q<numQuad;q++) {                              for (q=0;q<numQuad;q++) {
184                                  #pragma ivdep                                  #pragma ivdep
# Line 198  void Dudley_Assemble_gradient(Dudley_Nod Line 196  void Dudley_Assemble_gradient(Dudley_Nod
196                      grad_data_e=getSampleDataRW(grad_data,e);                      grad_data_e=getSampleDataRW(grad_data,e);
197                      memset(grad_data_e,0, localGradSize);                      memset(grad_data_e,0, localGradSize);
198                          for (s=0;s<numShapes;s++) {                          for (s=0;s<numShapes;s++) {
199                              n=elements->Nodes[INDEX2(nodes_selector[INDEX2(s_offset+s,0,numShapesTotal2)],e, NN)];                              n=elements->Nodes[INDEX2(s,e, NN)];
200                              data_array=getSampleDataRO(data,nodes->reducedNodesMapping->target[n]);                              data_array=getSampleDataRO(data,nodes->reducedNodesMapping->target[n]);
201                              for (q=0;q<numQuad;q++) {                              for (q=0;q<numQuad;q++) {
202                                  #pragma ivdep                                  #pragma ivdep
# Line 217  void Dudley_Assemble_gradient(Dudley_Nod Line 215  void Dudley_Assemble_gradient(Dudley_Nod
215                      grad_data_e=getSampleDataRW(grad_data,e);                      grad_data_e=getSampleDataRW(grad_data,e);
216                      memset(grad_data_e,0, localGradSize);                      memset(grad_data_e,0, localGradSize);
217                          for (s=0;s<numShapes;s++) {                          for (s=0;s<numShapes;s++) {
218                              n=elements->Nodes[INDEX2(nodes_selector[INDEX2(s_offset+s,0,numShapesTotal2)],e, NN)];                              n=elements->Nodes[INDEX2(s,e, NN)];
219                              data_array=getSampleDataRO(data,nodes->reducedNodesMapping->target[n]);                              data_array=getSampleDataRO(data,nodes->reducedNodesMapping->target[n]);
220                              for (q=0;q<numQuad;q++) {                                for (q=0;q<numQuad;q++) {  
221                                  #pragma ivdep                                  #pragma ivdep
# Line 240  void Dudley_Assemble_gradient(Dudley_Nod Line 238  void Dudley_Assemble_gradient(Dudley_Nod
238                      grad_data_e=getSampleDataRW(grad_data,e);                      grad_data_e=getSampleDataRW(grad_data,e);
239                      memset(grad_data_e,0, localGradSize);                      memset(grad_data_e,0, localGradSize);
240                          for (s=0;s<numShapes;s++) {                          for (s=0;s<numShapes;s++) {
241                              n=elements->Nodes[INDEX2(nodes_selector[INDEX2(s_offset+s,0,numShapesTotal2)],e, NN)];                              n=elements->Nodes[INDEX2(s,e, NN)];
242                              data_array=getSampleDataRO(data,nodes->degreesOfFreedomMapping->target[n]);                              data_array=getSampleDataRO(data,nodes->degreesOfFreedomMapping->target[n]);
243                              for (q=0;q<numQuad;q++) {                              for (q=0;q<numQuad;q++) {
244                                  #pragma ivdep                                  #pragma ivdep
# Line 258  void Dudley_Assemble_gradient(Dudley_Nod Line 256  void Dudley_Assemble_gradient(Dudley_Nod
256                      grad_data_e=getSampleDataRW(grad_data,e);                      grad_data_e=getSampleDataRW(grad_data,e);
257                      memset(grad_data_e,0, localGradSize);                      memset(grad_data_e,0, localGradSize);
258                          for (s=0;s<numShapes;s++) {                          for (s=0;s<numShapes;s++) {
259                              n=elements->Nodes[INDEX2(nodes_selector[INDEX2(s_offset+s,0,numShapesTotal2)],e, NN)];                              n=elements->Nodes[INDEX2(s,e, NN)];
260                              data_array=getSampleDataRO(data,nodes->degreesOfFreedomMapping->target[n]);                              data_array=getSampleDataRO(data,nodes->degreesOfFreedomMapping->target[n]);
261                              for (q=0;q<numQuad;q++) {                              for (q=0;q<numQuad;q++) {
262                                  #pragma ivdep                                  #pragma ivdep
# Line 277  void Dudley_Assemble_gradient(Dudley_Nod Line 275  void Dudley_Assemble_gradient(Dudley_Nod
275                      grad_data_e=getSampleDataRW(grad_data,e);                      grad_data_e=getSampleDataRW(grad_data,e);
276                      memset(grad_data_e,0, localGradSize);                      memset(grad_data_e,0, localGradSize);
277                          for (s=0;s<numShapes;s++) {                          for (s=0;s<numShapes;s++) {
278                              n=elements->Nodes[INDEX2(nodes_selector[INDEX2(s_offset+s,0,numShapesTotal2)],e, NN)];                              n=elements->Nodes[INDEX2(s,e, NN)];
279                              data_array=getSampleDataRO(data,nodes->degreesOfFreedomMapping->target[n]);                              data_array=getSampleDataRO(data,nodes->degreesOfFreedomMapping->target[n]);
280                              for (q=0;q<numQuad;q++) {                              for (q=0;q<numQuad;q++) {
281                                  #pragma ivdep                                  #pragma ivdep
# Line 299  void Dudley_Assemble_gradient(Dudley_Nod Line 297  void Dudley_Assemble_gradient(Dudley_Nod
297                      grad_data_e=getSampleDataRW(grad_data,e);                      grad_data_e=getSampleDataRW(grad_data,e);
298                      memset(grad_data_e,0, localGradSize);                      memset(grad_data_e,0, localGradSize);
299                          for (s=0;s<numShapes;s++) {                          for (s=0;s<numShapes;s++) {
300                              n=elements->Nodes[INDEX2(nodes_selector[INDEX2(s_offset+s,0,numShapesTotal2)],e, NN)];                              n=elements->Nodes[INDEX2(s,e, NN)];
301                              data_array=getSampleDataRO(data,nodes->reducedDegreesOfFreedomMapping->target[n]);                              data_array=getSampleDataRO(data,nodes->reducedDegreesOfFreedomMapping->target[n]);
302                              for (q=0;q<numQuad;q++) {                              for (q=0;q<numQuad;q++) {
303                                  #pragma ivdep                                  #pragma ivdep
# Line 317  void Dudley_Assemble_gradient(Dudley_Nod Line 315  void Dudley_Assemble_gradient(Dudley_Nod
315                      grad_data_e=getSampleDataRW(grad_data,e);                      grad_data_e=getSampleDataRW(grad_data,e);
316                      memset(grad_data_e,0, localGradSize);                      memset(grad_data_e,0, localGradSize);
317                          for (s=0;s<numShapes;s++) {                          for (s=0;s<numShapes;s++) {
318                              n=elements->Nodes[INDEX2(nodes_selector[INDEX2(s_offset+s,0,numShapesTotal2)],e, NN)];                              n=elements->Nodes[INDEX2(s,e, NN)];
319                              data_array=getSampleDataRO(data,nodes->reducedDegreesOfFreedomMapping->target[n]);                              data_array=getSampleDataRO(data,nodes->reducedDegreesOfFreedomMapping->target[n]);
320                              for (q=0;q<numQuad;q++) {                              for (q=0;q<numQuad;q++) {
321                                  #pragma ivdep                                  #pragma ivdep
# Line 337  void Dudley_Assemble_gradient(Dudley_Nod Line 335  void Dudley_Assemble_gradient(Dudley_Nod
335                      grad_data_e=getSampleDataRW(grad_data,e);                      grad_data_e=getSampleDataRW(grad_data,e);
336                      memset(grad_data_e,0, localGradSize);                      memset(grad_data_e,0, localGradSize);
337                          for (s=0;s<numShapes;s++) {                          for (s=0;s<numShapes;s++) {
338                              n=elements->Nodes[INDEX2(nodes_selector[INDEX2(s_offset+s,0,numShapesTotal2)],e, NN)];                              n=elements->Nodes[INDEX2(s,e, NN)];
339                              data_array=getSampleDataRO(data,nodes->reducedDegreesOfFreedomMapping->target[n]);                              data_array=getSampleDataRO(data,nodes->reducedDegreesOfFreedomMapping->target[n]);
340                              for (q=0;q<numQuad;q++) {                              for (q=0;q<numQuad;q++) {
341                                  #pragma ivdep                                  #pragma ivdep

Legend:
Removed from v.3143  
changed lines
  Added in v.3144

  ViewVC Help
Powered by ViewVC 1.1.26