/[escript]/trunk/dudley/src/Assemble_CopyElementData.cpp
ViewVC logotype

Diff of /trunk/dudley/src/Assemble_CopyElementData.cpp

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

revision 1811 by ksteube, Thu Sep 25 23:11:13 2008 UTC revision 2271 by jfenwick, Mon Feb 16 05:08:29 2009 UTC
# Line 28  Line 28 
28    
29  void Finley_Assemble_CopyElementData(Finley_ElementFile* elements,escriptDataC* out,escriptDataC* in) {  void Finley_Assemble_CopyElementData(Finley_ElementFile* elements,escriptDataC* out,escriptDataC* in) {
30      dim_t n,q, numElements, numQuad;      dim_t n,q, numElements, numQuad;
31      double *in_array,*out_array;      __const double *in_array;
32        double *out_array;
33      dim_t numComps=getDataPointSize(out);      dim_t numComps=getDataPointSize(out);
34      size_t len_size;      size_t len_size;
35    
# Line 60  void Finley_Assemble_CopyElementData(Fin Line 61  void Finley_Assemble_CopyElementData(Fin
61    
62      if (Finley_noError()) {      if (Finley_noError()) {
63           if (isExpanded(in)) {           if (isExpanded(in)) {
64             void* buffer=allocSampleBuffer(in);
65               len_size=numComps*numQuad*sizeof(double);               len_size=numComps*numQuad*sizeof(double);
66               # pragma omp parallel for private(n) schedule(static)           requireWrite(out);
67               for (n=0;n<numElements;n++)           #pragma omp parallel private(n)
68                   memcpy(getSampleData(out,n),getSampleData(in,n), len_size);           {
69                   # pragma omp for schedule(static)
70                   for (n=0;n<numElements;n++)
71                     memcpy(getSampleDataRW(out,n),getSampleDataRO(in,n,buffer), len_size);
72             }
73             freeSampleBuffer(buffer);
74           } else {           } else {
75             void* buffer=allocSampleBuffer(in);
76               len_size=numComps*sizeof(double);               len_size=numComps*sizeof(double);
77               # pragma omp parallel for private(q,n,out_array,in_array) schedule(static)           requireWrite(out);
78               for (n=0;n<numElements;n++) {           #pragma omp parallel private(q,n,out_array,in_array)
79                   in_array=getSampleData(in,n);           {
80                   out_array=getSampleData(out,n);                 # pragma omp for schedule(static)
81                   for (n=0;n<numElements;n++) {
82                     in_array=getSampleDataRO(in,n,buffer);
83                     out_array=getSampleDataRW(out,n);
84                   for (q=0;q<numQuad;q++) memcpy(out_array+q*numComps,in_array,len_size);                   for (q=0;q<numQuad;q++) memcpy(out_array+q*numComps,in_array,len_size);
85               }                 }
86             }
87             freeSampleBuffer(buffer);
88           }           }
89      }      }
90      return;      return;

Legend:
Removed from v.1811  
changed lines
  Added in v.2271

  ViewVC Help
Powered by ViewVC 1.1.26