/[escript]/branches/doubleplusgood/dudley/src/Assemble_PDE_Single2_1D.cpp
ViewVC logotype

Diff of /branches/doubleplusgood/dudley/src/Assemble_PDE_Single2_1D.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 2548 by jfenwick, Mon Jul 20 06:20:06 2009 UTC
# Line 1  Line 1 
1    
2  /*******************************************************  /*******************************************************
3  *  *
4  * Copyright (c) 2003-2008 by University of Queensland  * Copyright (c) 2003-2009 by University of Queensland
5  * Earth Systems Science Computational Center (ESSCC)  * Earth Systems Science Computational Center (ESSCC)
6  * http://www.uq.edu.au/esscc  * http://www.uq.edu.au/esscc
7  *  *
# Line 52  void  Finley_Assemble_PDE_Single2_1D(Ass Line 52  void  Finley_Assemble_PDE_Single2_1D(Ass
52      #define DIM 1      #define DIM 1
53      index_t color;      index_t color;
54      dim_t e;      dim_t e;
55      double *EM_S, *EM_F, *Vol, *DSDX, *A_p, *B_p, *C_p, *D_p, *X_p, *Y_p;      __const double *A_p, *B_p, *C_p, *D_p, *X_p, *Y_p;
56        double *EM_S, *EM_F, *Vol, *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;      register double rtmp;
# Line 64  void  Finley_Assemble_PDE_Single2_1D(Ass Line 65  void  Finley_Assemble_PDE_Single2_1D(Ass
65      bool_t extendedD=isExpanded(D);      bool_t extendedD=isExpanded(D);
66      bool_t extendedX=isExpanded(X);      bool_t extendedX=isExpanded(X);
67      bool_t extendedY=isExpanded(Y);      bool_t extendedY=isExpanded(Y);
68      double *F_p=getSampleData(F,0);      double *F_p=(requireWrite(F), getSampleDataRW(F,0));    /* use comma, to get around the mixed code and declarations thing */
69      double *S=p.row_jac->ReferenceElement->S;      double *S=p.row_jac->ReferenceElement->S;
70      dim_t len_EM_S=p.row_NN*p.col_NN;      dim_t len_EM_S=p.row_NN*p.col_NN;
71      dim_t len_EM_F=p.row_NN;      dim_t len_EM_F=p.row_NN;
72    
73        void* ABuff=allocSampleBuffer(A);
74        void* BBuff=allocSampleBuffer(B);
75        void* CBuff=allocSampleBuffer(C);
76        void* DBuff=allocSampleBuffer(D);
77        void* XBuff=allocSampleBuffer(X);
78        void* YBuff=allocSampleBuffer(Y);
79      #pragma omp parallel private(color, EM_S, EM_F, Vol, DSDX, A_p, B_p, C_p, D_p, X_p, Y_p, row_index, q, s,r,rtmp,add_EM_F, add_EM_S)      #pragma omp parallel private(color, EM_S, EM_F, Vol, DSDX, A_p, B_p, C_p, D_p, X_p, Y_p, row_index, q, s,r,rtmp,add_EM_F, add_EM_S)
80      {      {
81         EM_S=THREAD_MEMALLOC(len_EM_S,double);         EM_S=THREAD_MEMALLOC(len_EM_S,double);
82         EM_F=THREAD_MEMALLOC(len_EM_F,double);         EM_F=THREAD_MEMALLOC(len_EM_F,double);
83         row_index=THREAD_MEMALLOC(p.row_NN,index_t);         row_index=THREAD_MEMALLOC(p.row_NN,index_t);
84    
85    
86         if (!Finley_checkPtr(EM_S) && !Finley_checkPtr(EM_F) && !Finley_checkPtr(row_index) ) {         if (!Finley_checkPtr(EM_S) && !Finley_checkPtr(EM_F) && !Finley_checkPtr(row_index) ) {
87    
88            for (color=elements->minColor;color<=elements->maxColor;color++) {            for (color=elements->minColor;color<=elements->maxColor;color++) {
# Line 92  void  Finley_Assemble_PDE_Single2_1D(Ass Line 99  void  Finley_Assemble_PDE_Single2_1D(Ass
99                     /**************************************************************/                     /**************************************************************/
100                     /*   process A: */                     /*   process A: */
101                     /**************************************************************/                     /**************************************************************/
102                     A_p=getSampleData(A,e);                     A_p=getSampleDataRO(A,e,ABuff);
103                     if (NULL!=A_p) {                     if (NULL!=A_p) {
104                        add_EM_S=TRUE;                        add_EM_S=TRUE;
105                        if (extendedA) {                        if (extendedA) {
# Line 118  void  Finley_Assemble_PDE_Single2_1D(Ass Line 125  void  Finley_Assemble_PDE_Single2_1D(Ass
125                     /**************************************************************/                     /**************************************************************/
126                     /*   process B: */                     /*   process B: */
127                     /**************************************************************/                     /**************************************************************/
128                     B_p=getSampleData(B,e);                     B_p=getSampleDataRO(B,e,BBuff);
129                     if (NULL!=B_p) {                     if (NULL!=B_p) {
130                        add_EM_S=TRUE;                        add_EM_S=TRUE;
131                        if (extendedB) {                        if (extendedB) {
# Line 144  void  Finley_Assemble_PDE_Single2_1D(Ass Line 151  void  Finley_Assemble_PDE_Single2_1D(Ass
151                     /**************************************************************/                     /**************************************************************/
152                     /*   process C: */                     /*   process C: */
153                     /**************************************************************/                     /**************************************************************/
154                     C_p=getSampleData(C,e);                     C_p=getSampleDataRO(C,e,CBuff);
155                     if (NULL!=C_p) {                     if (NULL!=C_p) {
156                        add_EM_S=TRUE;                        add_EM_S=TRUE;
157                       if (extendedC) {                       if (extendedC) {
# Line 170  void  Finley_Assemble_PDE_Single2_1D(Ass Line 177  void  Finley_Assemble_PDE_Single2_1D(Ass
177                     /************************************************************* */                     /************************************************************* */
178                     /* process D */                     /* process D */
179                     /**************************************************************/                     /**************************************************************/
180                     D_p=getSampleData(D,e);                     D_p=getSampleDataRO(D,e,DBuff);
181                     if (NULL!=D_p) {                     if (NULL!=D_p) {
182                       add_EM_S=TRUE;                       add_EM_S=TRUE;
183                       if (extendedD) {                       if (extendedD) {
# Line 196  void  Finley_Assemble_PDE_Single2_1D(Ass Line 203  void  Finley_Assemble_PDE_Single2_1D(Ass
203                     /**************************************************************/                     /**************************************************************/
204                     /*   process X: */                     /*   process X: */
205                     /**************************************************************/                     /**************************************************************/
206                     X_p=getSampleData(X,e);                     X_p=getSampleDataRO(X,e,XBuff);
207                     if (NULL!=X_p) {                     if (NULL!=X_p) {
208                       add_EM_F=TRUE;                       add_EM_F=TRUE;
209                       if (extendedX) {                       if (extendedX) {
# Line 216  void  Finley_Assemble_PDE_Single2_1D(Ass Line 223  void  Finley_Assemble_PDE_Single2_1D(Ass
223                    /**************************************************************/                    /**************************************************************/
224                    /*   process Y: */                    /*   process Y: */
225                    /**************************************************************/                    /**************************************************************/
226                     Y_p=getSampleData(Y,e);                     Y_p=getSampleDataRO(Y,e,YBuff);
227                     if (NULL!=Y_p) {                     if (NULL!=Y_p) {
228                       add_EM_F=TRUE;                       add_EM_F=TRUE;
229                       if (extendedY) {                       if (extendedY) {
# Line 244  void  Finley_Assemble_PDE_Single2_1D(Ass Line 251  void  Finley_Assemble_PDE_Single2_1D(Ass
251               } /* end element loop */               } /* end element loop */
252           } /* end color loop */           } /* end color loop */
253                        
254           THREAD_MEMFREE(EM_S);           THREAD_MEMFREE(EM_S);      /* these FREEs appear to be inside the if because if any of the allocs */
255           THREAD_MEMFREE(EM_F);           THREAD_MEMFREE(EM_F);      /* failed it means an out of memory (which is not recoverable anyway) */
256           THREAD_MEMFREE(row_index);           THREAD_MEMFREE(row_index);
257    
258        } /* end of pointer check */        } /* end of pointer check */
259     } /* end parallel region */     } /* end parallel region */
260       freeSampleBuffer(ABuff);
261       freeSampleBuffer(BBuff);
262       freeSampleBuffer(CBuff);
263       freeSampleBuffer(DBuff);
264       freeSampleBuffer(XBuff);
265       freeSampleBuffer(YBuff);
266  }  }
267  /*  /*
268   * $Log$   * $Log$

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

  ViewVC Help
Powered by ViewVC 1.1.26