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

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

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

revision 3080 by jfenwick, Tue Aug 3 04:28:03 2010 UTC revision 3086 by jfenwick, Thu Aug 5 05:07:58 2010 UTC
# Line 50  Line 50 
50    
51  /**************************************************************/  /**************************************************************/
52    
53  void Finley_Assemble_PDE(Finley_NodeFile* nodes,Finley_ElementFile* elements,Paso_SystemMatrix* S, escriptDataC* F,  void Dudley_Assemble_PDE(Dudley_NodeFile* nodes,Dudley_ElementFile* elements,Paso_SystemMatrix* S, escriptDataC* F,
54               escriptDataC* A, escriptDataC* B, escriptDataC* C, escriptDataC* D, escriptDataC* X, escriptDataC* Y ) {               escriptDataC* A, escriptDataC* B, escriptDataC* C, escriptDataC* D, escriptDataC* X, escriptDataC* Y ) {
55    
56    bool_t reducedIntegrationOrder=FALSE;    bool_t reducedIntegrationOrder=FALSE;
# Line 61  void Finley_Assemble_PDE(Finley_NodeFile Line 61  void Finley_Assemble_PDE(Finley_NodeFile
61    type_t funcspace;    type_t funcspace;
62    double blocktimer_start = blocktimer_time();    double blocktimer_start = blocktimer_time();
63    
64    Finley_resetError();    Dudley_resetError();
65    
66    {    {
67  #ifdef Paso_MPI  #ifdef Paso_MPI
# Line 75  void Finley_Assemble_PDE(Finley_NodeFile Line 75  void Finley_Assemble_PDE(Finley_NodeFile
75    if (S==NULL && isEmpty(F)) return;    if (S==NULL && isEmpty(F)) return;
76    
77    if (isEmpty(F) && !isEmpty(X) && !isEmpty(F)) {    if (isEmpty(F) && !isEmpty(X) && !isEmpty(F)) {
78          Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: right hand side coefficients are non-zero bat no right hand side vector given.");          Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: right hand side coefficients are non-zero bat no right hand side vector given.");
79    }    }
80    
81    if (S==NULL && !isEmpty(A) && !isEmpty(B) && !isEmpty(C) && !isEmpty(D)) {    if (S==NULL && !isEmpty(A) && !isEmpty(B) && !isEmpty(C) && !isEmpty(D)) {
82          Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: coefficients are non-zero but no matrix is given.");          Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: coefficients are non-zero but no matrix is given.");
83    }    }
84    
85    /*  get the functionspace for this assemblage call */    /*  get the functionspace for this assemblage call */
# Line 94  void Finley_Assemble_PDE(Finley_NodeFile Line 94  void Finley_Assemble_PDE(Finley_NodeFile
94    
95    /* check if all function spaces are the same */    /* check if all function spaces are the same */
96    if (! functionSpaceTypeEqual(funcspace,A) ) {    if (! functionSpaceTypeEqual(funcspace,A) ) {
97          Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: unexpected function space type for coefficient A");          Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: unexpected function space type for coefficient A");
98    }    }
99    if (! functionSpaceTypeEqual(funcspace,B) ) {    if (! functionSpaceTypeEqual(funcspace,B) ) {
100          Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: unexpected function space type for coefficient B");          Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: unexpected function space type for coefficient B");
101    }    }
102    if (! functionSpaceTypeEqual(funcspace,C) ) {    if (! functionSpaceTypeEqual(funcspace,C) ) {
103          Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: unexpected function space type for coefficient C");          Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: unexpected function space type for coefficient C");
104    }    }
105    if (! functionSpaceTypeEqual(funcspace,D) ) {    if (! functionSpaceTypeEqual(funcspace,D) ) {
106          Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: unexpected function space type for coefficient D");          Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: unexpected function space type for coefficient D");
107    }    }
108    if (! functionSpaceTypeEqual(funcspace,X) ) {    if (! functionSpaceTypeEqual(funcspace,X) ) {
109          Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: unexpected function space type for coefficient X");          Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: unexpected function space type for coefficient X");
110    }    }
111    if (! functionSpaceTypeEqual(funcspace,Y) ) {    if (! functionSpaceTypeEqual(funcspace,Y) ) {
112          Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: unexpected function space type for coefficient Y");          Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: unexpected function space type for coefficient Y");
113    }    }
114    if (! Finley_noError()) return;    if (! Dudley_noError()) return;
115    
116    /* check if all function spaces are the same */    /* check if all function spaces are the same */
117    if (funcspace==FINLEY_ELEMENTS) {    if (funcspace==DUDLEY_ELEMENTS) {
118         reducedIntegrationOrder=FALSE;         reducedIntegrationOrder=FALSE;
119    } else if (funcspace==FINLEY_FACE_ELEMENTS)  {    } else if (funcspace==DUDLEY_FACE_ELEMENTS)  {
120         reducedIntegrationOrder=FALSE;         reducedIntegrationOrder=FALSE;
121    } else if (funcspace==FINLEY_CONTACT_ELEMENTS_1)  {    } else if (funcspace==DUDLEY_CONTACT_ELEMENTS_1)  {
122         reducedIntegrationOrder=FALSE;         reducedIntegrationOrder=FALSE;
123    } else if (funcspace==FINLEY_CONTACT_ELEMENTS_2)  {    } else if (funcspace==DUDLEY_CONTACT_ELEMENTS_2)  {
124         reducedIntegrationOrder=FALSE;         reducedIntegrationOrder=FALSE;
125    } else if (funcspace==FINLEY_REDUCED_ELEMENTS) {    } else if (funcspace==DUDLEY_REDUCED_ELEMENTS) {
126         reducedIntegrationOrder=TRUE;         reducedIntegrationOrder=TRUE;
127    } else if (funcspace==FINLEY_REDUCED_FACE_ELEMENTS)  {    } else if (funcspace==DUDLEY_REDUCED_FACE_ELEMENTS)  {
128         reducedIntegrationOrder=TRUE;         reducedIntegrationOrder=TRUE;
129    } else if (funcspace==FINLEY_REDUCED_CONTACT_ELEMENTS_1)  {    } else if (funcspace==DUDLEY_REDUCED_CONTACT_ELEMENTS_1)  {
130         reducedIntegrationOrder=TRUE;         reducedIntegrationOrder=TRUE;
131    } else if (funcspace==FINLEY_REDUCED_CONTACT_ELEMENTS_2)  {    } else if (funcspace==DUDLEY_REDUCED_CONTACT_ELEMENTS_2)  {
132         reducedIntegrationOrder=TRUE;         reducedIntegrationOrder=TRUE;
133    } else {    } else {
134         Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: assemblage failed because of illegal function space.");         Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: assemblage failed because of illegal function space.");
135    }    }
136    if (! Finley_noError()) return;    if (! Dudley_noError()) return;
137    
138    /* set all parameters in p*/    /* set all parameters in p*/
139    Assemble_getAssembleParameters(nodes,elements,S,F, reducedIntegrationOrder, &p);    Assemble_getAssembleParameters(nodes,elements,S,F, reducedIntegrationOrder, &p);
140    if (! Finley_noError()) return;    if (! Dudley_noError()) return;
141    
142    /* check if all function spaces are the same */    /* check if all function spaces are the same */
143    
144    if (! numSamplesEqual(A,p.numQuadTotal,elements->numElements) ) {    if (! numSamplesEqual(A,p.numQuadTotal,elements->numElements) ) {
145          sprintf(error_msg,"Finley_Assemble_PDE: sample points of coefficient A don't match (%d,%d)",p.numQuadTotal,elements->numElements);          sprintf(error_msg,"Dudley_Assemble_PDE: sample points of coefficient A don't match (%d,%d)",p.numQuadTotal,elements->numElements);
146          Finley_setError(TYPE_ERROR,error_msg);          Dudley_setError(TYPE_ERROR,error_msg);
147    }    }
148    
149    if (! numSamplesEqual(B,p.numQuadTotal,elements->numElements) ) {    if (! numSamplesEqual(B,p.numQuadTotal,elements->numElements) ) {
150          sprintf(error_msg,"Finley_Assemble_PDE: sample points of coefficient B don't match (%d,%d)",p.numQuadTotal,elements->numElements);          sprintf(error_msg,"Dudley_Assemble_PDE: sample points of coefficient B don't match (%d,%d)",p.numQuadTotal,elements->numElements);
151          Finley_setError(TYPE_ERROR,error_msg);          Dudley_setError(TYPE_ERROR,error_msg);
152    }    }
153    
154    if (! numSamplesEqual(C,p.numQuadTotal,elements->numElements) ) {    if (! numSamplesEqual(C,p.numQuadTotal,elements->numElements) ) {
155          sprintf(error_msg,"Finley_Assemble_PDE: sample points of coefficient C don't match (%d,%d)",p.numQuadTotal,elements->numElements);          sprintf(error_msg,"Dudley_Assemble_PDE: sample points of coefficient C don't match (%d,%d)",p.numQuadTotal,elements->numElements);
156          Finley_setError(TYPE_ERROR,error_msg);          Dudley_setError(TYPE_ERROR,error_msg);
157    }    }
158    
159    if (! numSamplesEqual(D,p.numQuadTotal,elements->numElements) ) {    if (! numSamplesEqual(D,p.numQuadTotal,elements->numElements) ) {
160          sprintf(error_msg,"Finley_Assemble_PDE: sample points of coefficient D don't match (%d,%d)",p.numQuadTotal,elements->numElements);          sprintf(error_msg,"Dudley_Assemble_PDE: sample points of coefficient D don't match (%d,%d)",p.numQuadTotal,elements->numElements);
161          Finley_setError(TYPE_ERROR,error_msg);          Dudley_setError(TYPE_ERROR,error_msg);
162    }    }
163    
164    if (! numSamplesEqual(X,p.numQuadTotal,elements->numElements) ) {    if (! numSamplesEqual(X,p.numQuadTotal,elements->numElements) ) {
165          sprintf(error_msg,"Finley_Assemble_PDE: sample points of coefficient X don't match (%d,%d)",p.numQuadTotal,elements->numElements);          sprintf(error_msg,"Dudley_Assemble_PDE: sample points of coefficient X don't match (%d,%d)",p.numQuadTotal,elements->numElements);
166          Finley_setError(TYPE_ERROR,error_msg);          Dudley_setError(TYPE_ERROR,error_msg);
167    }    }
168    
169    if (! numSamplesEqual(Y,p.numQuadTotal,elements->numElements) ) {    if (! numSamplesEqual(Y,p.numQuadTotal,elements->numElements) ) {
170          sprintf(error_msg,"Finley_Assemble_PDE: sample points of coefficient Y don't match (%d,%d)",p.numQuadTotal,elements->numElements);          sprintf(error_msg,"Dudley_Assemble_PDE: sample points of coefficient Y don't match (%d,%d)",p.numQuadTotal,elements->numElements);
171          Finley_setError(TYPE_ERROR,error_msg);          Dudley_setError(TYPE_ERROR,error_msg);
172    }    }
173    
174    /*  check the dimensions: */    /*  check the dimensions: */
# Line 178  void Finley_Assemble_PDE(Finley_NodeFile Line 178  void Finley_Assemble_PDE(Finley_NodeFile
178        dimensions[0]=p.numDim;        dimensions[0]=p.numDim;
179        dimensions[1]=p.numDim;        dimensions[1]=p.numDim;
180        if (!isDataPointShapeEqual(A,2,dimensions)) {        if (!isDataPointShapeEqual(A,2,dimensions)) {
181            sprintf(error_msg,"Finley_Assemble_PDE: coefficient A: illegal shape, expected shape (%d,%d)",dimensions[0],dimensions[1]);            sprintf(error_msg,"Dudley_Assemble_PDE: coefficient A: illegal shape, expected shape (%d,%d)",dimensions[0],dimensions[1]);
182            Finley_setError(TYPE_ERROR,error_msg);            Dudley_setError(TYPE_ERROR,error_msg);
183        }        }
184      }      }
185      if (!isEmpty(B)) {      if (!isEmpty(B)) {
186         dimensions[0]=p.numDim;         dimensions[0]=p.numDim;
187         if (!isDataPointShapeEqual(B,1,dimensions)) {         if (!isDataPointShapeEqual(B,1,dimensions)) {
188            sprintf(error_msg,"Finley_Assemble_PDE: coefficient B: illegal shape (%d,)",dimensions[0]);            sprintf(error_msg,"Dudley_Assemble_PDE: coefficient B: illegal shape (%d,)",dimensions[0]);
189            Finley_setError(TYPE_ERROR,error_msg);            Dudley_setError(TYPE_ERROR,error_msg);
190         }         }
191      }      }
192      if (!isEmpty(C)) {      if (!isEmpty(C)) {
193         dimensions[0]=p.numDim;         dimensions[0]=p.numDim;
194         if (!isDataPointShapeEqual(C,1,dimensions)) {         if (!isDataPointShapeEqual(C,1,dimensions)) {
195            sprintf(error_msg,"Finley_Assemble_PDE: coefficient C, expected shape (%d,)",dimensions[0]);            sprintf(error_msg,"Dudley_Assemble_PDE: coefficient C, expected shape (%d,)",dimensions[0]);
196            Finley_setError(TYPE_ERROR,error_msg);            Dudley_setError(TYPE_ERROR,error_msg);
197         }         }
198      }      }
199      if (!isEmpty(D)) {      if (!isEmpty(D)) {
200         if (!isDataPointShapeEqual(D,0,dimensions)) {         if (!isDataPointShapeEqual(D,0,dimensions)) {
201            Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: coefficient D, rank 0 expected.");            Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: coefficient D, rank 0 expected.");
202         }         }
203      }      }
204      if (!isEmpty(X)) {      if (!isEmpty(X)) {
205         dimensions[0]=p.numDim;         dimensions[0]=p.numDim;
206         if (!isDataPointShapeEqual(X,1,dimensions)) {         if (!isDataPointShapeEqual(X,1,dimensions)) {
207            sprintf(error_msg,"Finley_Assemble_PDE: coefficient X, expected shape (%d,",dimensions[0]);            sprintf(error_msg,"Dudley_Assemble_PDE: coefficient X, expected shape (%d,",dimensions[0]);
208            Finley_setError(TYPE_ERROR,error_msg);            Dudley_setError(TYPE_ERROR,error_msg);
209         }         }
210      }      }
211      if (!isEmpty(Y)) {      if (!isEmpty(Y)) {
212         if (!isDataPointShapeEqual(Y,0,dimensions)) {         if (!isDataPointShapeEqual(Y,0,dimensions)) {
213            Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: coefficient Y, rank 0 expected.");            Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: coefficient Y, rank 0 expected.");
214         }         }
215      }      }
216    } else {    } else {
# Line 220  void Finley_Assemble_PDE(Finley_NodeFile Line 220  void Finley_Assemble_PDE(Finley_NodeFile
220        dimensions[2]=p.numComp;        dimensions[2]=p.numComp;
221        dimensions[3]=p.numDim;        dimensions[3]=p.numDim;
222        if (!isDataPointShapeEqual(A,4,dimensions)) {        if (!isDataPointShapeEqual(A,4,dimensions)) {
223            sprintf(error_msg,"Finley_Assemble_PDE: coefficient A, expected shape (%d,%d,%d,%d)",dimensions[0],dimensions[1],dimensions[2],dimensions[3]);            sprintf(error_msg,"Dudley_Assemble_PDE: coefficient A, expected shape (%d,%d,%d,%d)",dimensions[0],dimensions[1],dimensions[2],dimensions[3]);
224            Finley_setError(TYPE_ERROR,error_msg);            Dudley_setError(TYPE_ERROR,error_msg);
225        }        }
226      }      }
227      if (!isEmpty(B)) {      if (!isEmpty(B)) {
# Line 229  void Finley_Assemble_PDE(Finley_NodeFile Line 229  void Finley_Assemble_PDE(Finley_NodeFile
229        dimensions[1]=p.numDim;        dimensions[1]=p.numDim;
230        dimensions[2]=p.numComp;        dimensions[2]=p.numComp;
231        if (!isDataPointShapeEqual(B,3,dimensions)) {        if (!isDataPointShapeEqual(B,3,dimensions)) {
232            sprintf(error_msg,"Finley_Assemble_PDE: coefficient B, expected shape (%d,%d,%d)",dimensions[0],dimensions[1],dimensions[2]);            sprintf(error_msg,"Dudley_Assemble_PDE: coefficient B, expected shape (%d,%d,%d)",dimensions[0],dimensions[1],dimensions[2]);
233            Finley_setError(TYPE_ERROR,error_msg);            Dudley_setError(TYPE_ERROR,error_msg);
234        }        }
235      }      }
236      if (!isEmpty(C)) {      if (!isEmpty(C)) {
# Line 238  void Finley_Assemble_PDE(Finley_NodeFile Line 238  void Finley_Assemble_PDE(Finley_NodeFile
238        dimensions[1]=p.numComp;        dimensions[1]=p.numComp;
239        dimensions[2]=p.numDim;        dimensions[2]=p.numDim;
240        if (!isDataPointShapeEqual(C,3,dimensions)) {        if (!isDataPointShapeEqual(C,3,dimensions)) {
241            sprintf(error_msg,"Finley_Assemble_PDE: coefficient C, expected shape (%d,%d,%d)",dimensions[0],dimensions[1],dimensions[2]);            sprintf(error_msg,"Dudley_Assemble_PDE: coefficient C, expected shape (%d,%d,%d)",dimensions[0],dimensions[1],dimensions[2]);
242            Finley_setError(TYPE_ERROR,error_msg);            Dudley_setError(TYPE_ERROR,error_msg);
243        }        }
244      }      }
245      if (!isEmpty(D)) {      if (!isEmpty(D)) {
246        dimensions[0]=p.numEqu;        dimensions[0]=p.numEqu;
247        dimensions[1]=p.numComp;        dimensions[1]=p.numComp;
248        if (!isDataPointShapeEqual(D,2,dimensions)) {        if (!isDataPointShapeEqual(D,2,dimensions)) {
249            sprintf(error_msg,"Finley_Assemble_PDE: coefficient D, expected shape (%d,%d)",dimensions[0],dimensions[1]);            sprintf(error_msg,"Dudley_Assemble_PDE: coefficient D, expected shape (%d,%d)",dimensions[0],dimensions[1]);
250            Finley_setError(TYPE_ERROR,error_msg);            Dudley_setError(TYPE_ERROR,error_msg);
251        }        }
252      }      }
253      if (!isEmpty(X)) {      if (!isEmpty(X)) {
254        dimensions[0]=p.numEqu;        dimensions[0]=p.numEqu;
255        dimensions[1]=p.numDim;        dimensions[1]=p.numDim;
256        if (!isDataPointShapeEqual(X,2,dimensions)) {        if (!isDataPointShapeEqual(X,2,dimensions)) {
257            sprintf(error_msg,"Finley_Assemble_PDE: coefficient X, expected shape (%d,%d)",dimensions[0],dimensions[1]);            sprintf(error_msg,"Dudley_Assemble_PDE: coefficient X, expected shape (%d,%d)",dimensions[0],dimensions[1]);
258            Finley_setError(TYPE_ERROR,error_msg);            Dudley_setError(TYPE_ERROR,error_msg);
259        }        }
260      }      }
261      if (!isEmpty(Y)) {      if (!isEmpty(Y)) {
262        dimensions[0]=p.numEqu;        dimensions[0]=p.numEqu;
263        if (!isDataPointShapeEqual(Y,1,dimensions)) {        if (!isDataPointShapeEqual(Y,1,dimensions)) {
264            sprintf(error_msg,"Finley_Assemble_PDE: coefficient Y, expected shape (%d,)",dimensions[0]);            sprintf(error_msg,"Dudley_Assemble_PDE: coefficient Y, expected shape (%d,)",dimensions[0]);
265            Finley_setError(TYPE_ERROR,error_msg);            Dudley_setError(TYPE_ERROR,error_msg);
266        }        }
267      }      }
268    }    }
269    if (Finley_noError()) {    if (Dudley_noError()) {
270       time0=Finley_timer();       time0=Dudley_timer();
271       if (p.numEqu == p. numComp) {       if (p.numEqu == p. numComp) {
272          if (p.numEqu > 1) {          if (p.numEqu > 1) {
273            /* system of PDESs */            /* system of PDESs */
274            if (p.numDim==3) {            if (p.numDim==3) {
275              if ( p.numSides == 1 ) {              if ( p.numSides == 1 ) {
276                 Finley_Assemble_PDE_System2_3D(p,elements,S,F,A,B,C,D,X,Y);                 Dudley_Assemble_PDE_System2_3D(p,elements,S,F,A,B,C,D,X,Y);
277              } else if ( p.numSides == 2 ) {              } else if ( p.numSides == 2 ) {
278                 if ( !isEmpty(A) || !isEmpty(B) || !isEmpty(C) || !isEmpty(X) ) {                 if ( !isEmpty(A) || !isEmpty(B) || !isEmpty(C) || !isEmpty(X) ) {
279                    Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: Contact elements require A, B, C and X to be empty.");                    Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: Contact elements require A, B, C and X to be empty.");
280                 } else {                 } else {
281                    Finley_Assemble_PDE_System2_C(p,elements,S,F,D,Y);                    Dudley_Assemble_PDE_System2_C(p,elements,S,F,D,Y);
282                 }                 }
283              } else {              } else {
284                 Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE supports numShape=NumNodes or 2*numShape=NumNodes only.");                 Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE supports numShape=NumNodes or 2*numShape=NumNodes only.");
285              }              }
286            } else if (p.numDim==2) {            } else if (p.numDim==2) {
287              if ( p.numSides == 1 ) {              if ( p.numSides == 1 ) {
288                 Finley_Assemble_PDE_System2_2D(p,elements,S,F,A,B,C,D,X,Y);                 Dudley_Assemble_PDE_System2_2D(p,elements,S,F,A,B,C,D,X,Y);
289              } else if (  p.numSides == 2 ) {              } else if (  p.numSides == 2 ) {
290                 if ( !isEmpty(A) || !isEmpty(B) || !isEmpty(C) || !isEmpty(X) ) {                 if ( !isEmpty(A) || !isEmpty(B) || !isEmpty(C) || !isEmpty(X) ) {
291                    Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: Contact elements require A, B, C and X to be empty.");                    Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: Contact elements require A, B, C and X to be empty.");
292                 } else {                 } else {
293                    Finley_Assemble_PDE_System2_C(p,elements,S,F,D,Y);                    Dudley_Assemble_PDE_System2_C(p,elements,S,F,D,Y);
294                 }                 }
295              } else {              } else {
296                 Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE supports numShape=NumNodes or 2*numShape=NumNodes only.");                 Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE supports numShape=NumNodes or 2*numShape=NumNodes only.");
297              }              }
298            } else if (p.numDim==1) {            } else if (p.numDim==1) {
299              if ( p.numSides == 1  ) {              if ( p.numSides == 1  ) {
300                 Finley_Assemble_PDE_System2_1D(p,elements,S,F,A,B,C,D,X,Y);                 Dudley_Assemble_PDE_System2_1D(p,elements,S,F,A,B,C,D,X,Y);
301              } else if ( p.numSides == 2 ) {              } else if ( p.numSides == 2 ) {
302                 if ( !isEmpty(A) || !isEmpty(B) || !isEmpty(C) || !isEmpty(X) ) {                 if ( !isEmpty(A) || !isEmpty(B) || !isEmpty(C) || !isEmpty(X) ) {
303                    Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: Contact elements require A, B, C and X to be empty.");                    Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: Contact elements require A, B, C and X to be empty.");
304                 } else {                 } else {
305                    Finley_Assemble_PDE_System2_C(p,elements,S,F,D,Y);                    Dudley_Assemble_PDE_System2_C(p,elements,S,F,D,Y);
306                 }                 }
307              } else {              } else {
308                 Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE supports numShape=NumNodes or 2*numShape=NumNodes only.");                 Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE supports numShape=NumNodes or 2*numShape=NumNodes only.");
309              }              }
310            } else {            } else {
311              Finley_setError(VALUE_ERROR,"Finley_Assemble_PDE supports spatial dimensions 1,2,3 only.");              Dudley_setError(VALUE_ERROR,"Dudley_Assemble_PDE supports spatial dimensions 1,2,3 only.");
312            }            }
313          } else {          } else {
314            /* single PDES */            /* single PDES */
315            if (p.numDim==3) {            if (p.numDim==3) {
316              if ( p.numSides == 1  ) {              if ( p.numSides == 1  ) {
317                 Finley_Assemble_PDE_Single2_3D(p,elements,S,F,A,B,C,D,X,Y);                 Dudley_Assemble_PDE_Single2_3D(p,elements,S,F,A,B,C,D,X,Y);
318              } else if ( p.numSides == 2 ) {              } else if ( p.numSides == 2 ) {
319                 if ( !isEmpty(A) || !isEmpty(B) || !isEmpty(C) || !isEmpty(X) ) {                 if ( !isEmpty(A) || !isEmpty(B) || !isEmpty(C) || !isEmpty(X) ) {
320                    Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: Contact elements require A, B, C and X to be empty.");                    Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: Contact elements require A, B, C and X to be empty.");
321                 } else {                 } else {
322                    Finley_Assemble_PDE_Single2_C(p,elements,S,F,D,Y);                    Dudley_Assemble_PDE_Single2_C(p,elements,S,F,D,Y);
323                 }                 }
324              } else {              } else {
325                 Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE supports numShape=NumNodes or 2*numShape=NumNodes only.");                 Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE supports numShape=NumNodes or 2*numShape=NumNodes only.");
326              }              }
327            } else if (p.numDim==2) {            } else if (p.numDim==2) {
328              if ( p.numSides == 1 ) {              if ( p.numSides == 1 ) {
329                 Finley_Assemble_PDE_Single2_2D(p,elements,S,F,A,B,C,D,X,Y);                 Dudley_Assemble_PDE_Single2_2D(p,elements,S,F,A,B,C,D,X,Y);
330              } else if ( p.numSides == 2 ) {              } else if ( p.numSides == 2 ) {
331                 if ( !isEmpty(A) || !isEmpty(B) || !isEmpty(C) || !isEmpty(X) ) {                 if ( !isEmpty(A) || !isEmpty(B) || !isEmpty(C) || !isEmpty(X) ) {
332                    Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: Contact elements require A, B, C and X to be empty.");                    Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: Contact elements require A, B, C and X to be empty.");
333                 } else {                 } else {
334                    Finley_Assemble_PDE_Single2_C(p,elements,S,F,D,Y);                    Dudley_Assemble_PDE_Single2_C(p,elements,S,F,D,Y);
335                 }                 }
336              } else {              } else {
337                 Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE supports numShape=NumNodes or 2*numShape=NumNodes only.");                 Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE supports numShape=NumNodes or 2*numShape=NumNodes only.");
338              }              }
339            } else if (p.numDim==1) {            } else if (p.numDim==1) {
340              if ( p.numSides == 1 ) {              if ( p.numSides == 1 ) {
341                 Finley_Assemble_PDE_Single2_1D(p,elements,S,F,A,B,C,D,X,Y);                 Dudley_Assemble_PDE_Single2_1D(p,elements,S,F,A,B,C,D,X,Y);
342              } else if ( p.numSides == 2  ) {              } else if ( p.numSides == 2  ) {
343                 if ( !isEmpty(A) || !isEmpty(B) || !isEmpty(C) || !isEmpty(X) ) {                 if ( !isEmpty(A) || !isEmpty(B) || !isEmpty(C) || !isEmpty(X) ) {
344                    Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE: Contact elements require A, B, C and X to be empty.");                    Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE: Contact elements require A, B, C and X to be empty.");
345                 } else {                 } else {
346                    Finley_Assemble_PDE_Single2_C(p,elements,S,F,D,Y);                    Dudley_Assemble_PDE_Single2_C(p,elements,S,F,D,Y);
347                 }                 }
348              } else {              } else {
349                 Finley_setError(TYPE_ERROR,"Finley_Assemble_PDE supports numShape=NumNodes or 2*numShape=NumNodes only.");                 Dudley_setError(TYPE_ERROR,"Dudley_Assemble_PDE supports numShape=NumNodes or 2*numShape=NumNodes only.");
350              }              }
351            } else {            } else {
352              Finley_setError(VALUE_ERROR,"Finley_Assemble_PDE supports spatial dimensions 1,2,3 only.");              Dudley_setError(VALUE_ERROR,"Dudley_Assemble_PDE supports spatial dimensions 1,2,3 only.");
353            }            }
354          }          }
355       } else {       } else {
356            Finley_setError(VALUE_ERROR,"Finley_Assemble_PDE requires number of equations == number of solutions  .");            Dudley_setError(VALUE_ERROR,"Dudley_Assemble_PDE requires number of equations == number of solutions  .");
357       }       }
358    }    }
359    blocktimer_increment("Finley_Assemble_PDE()", blocktimer_start);    blocktimer_increment("Dudley_Assemble_PDE()", blocktimer_start);
360  }  }

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

  ViewVC Help
Powered by ViewVC 1.1.26