/[escript]/trunk/finley/src/Mesh_hex20.c
ViewVC logotype

Diff of /trunk/finley/src/Mesh_hex20.c

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

revision 2548 by jfenwick, Mon Jul 20 06:20:06 2009 UTC revision 2722 by gross, Fri Oct 16 06:45:01 2009 UTC
# Line 32  Finley_Mesh* Finley_RectangularMesh_Hex2 Line 32  Finley_Mesh* Finley_RectangularMesh_Hex2
32                                            index_t reduced_order,                                            index_t reduced_order,
33                                            bool_t useElementsOnFace,                                            bool_t useElementsOnFace,
34                                            bool_t useFullElementOrder,                                            bool_t useFullElementOrder,
35                                              bool_t useMacroElements,
36                                            bool_t optimize)                                            bool_t optimize)
37  {  {
38    #define N_PER_E 2    #define N_PER_E 2
# Line 42  Finley_Mesh* Finley_RectangularMesh_Hex2 Line 43  Finley_Mesh* Finley_RectangularMesh_Hex2
43    Finley_Mesh* out;    Finley_Mesh* out;
44    Paso_MPIInfo *mpi_info = NULL;    Paso_MPIInfo *mpi_info = NULL;
45    char name[50];    char name[50];
46      bool_t generateAllNodes= useFullElementOrder || useMacroElements;
47    #ifdef Finley_TRACE    #ifdef Finley_TRACE
48    double time0=Finley_timer();    double time0=Finley_timer();
49    #endif    #endif
# Line 63  Finley_Mesh* Finley_RectangularMesh_Hex2 Line 65  Finley_Mesh* Finley_RectangularMesh_Hex2
65    N2=N_PER_E*NE2+1;    N2=N_PER_E*NE2+1;
66    
67    /*  allocate mesh: */      /*  allocate mesh: */  
68    sprintf(name,"Rectangular %d x %d x %d mesh",N0,N1,N2);    sprintf(name,"Brick %d x %d x %d mesh",N0,N1,N2);
69    out=Finley_Mesh_alloc(name,DIM,order, reduced_order, mpi_info);    out=Finley_Mesh_alloc(name,DIM,order, reduced_order, mpi_info);
70    if (! Finley_noError()) {    if (! Finley_noError()) {
71        Paso_MPIInfo_free( mpi_info );        Paso_MPIInfo_free( mpi_info );
72        return NULL;        return NULL;
73    }    }
74    
75    if (useFullElementOrder) {    if (generateAllNodes) {
76       /* Finley_setError(SYSTEM_ERROR,"full element order for Hex elements is not supported yet."); */       /* Finley_setError(SYSTEM_ERROR,"full element order for Hex elements is not supported yet."); */
77       Finley_Mesh_setElements(out,Finley_ElementFile_alloc(Hex27,       if (useMacroElements) {
78                                              out->order,            Finley_Mesh_setElements(out,Finley_ElementFile_alloc(Hex27Macro,
79                                              out->reduced_order,                                                   out->order,
80                                              mpi_info));                                                   out->reduced_order,
81                                                     mpi_info));
82         } else {
83              Finley_Mesh_setElements(out,Finley_ElementFile_alloc(Hex27,
84                                                     out->order,
85                                                     out->reduced_order,
86                                                     mpi_info));
87         }
88       if (useElementsOnFace) {       if (useElementsOnFace) {
89           Finley_setError(SYSTEM_ERROR,"rich elements for Hex27 elements is not supported yet.");           Finley_setError(SYSTEM_ERROR,"rich elements for Hex27 elements is not supported yet.");
90       } else {       } else {
91           Finley_Mesh_setFaceElements(out,Finley_ElementFile_alloc(Rec9,           if (useMacroElements) {
92                                                      out->order,               Finley_Mesh_setFaceElements(out,Finley_ElementFile_alloc(Rec9Macro,
93                                                      out->reduced_order,                                                          out->order,
94                                                      mpi_info));                                                          out->reduced_order,
95                                                            mpi_info));
96             } else {
97                 Finley_Mesh_setFaceElements(out,Finley_ElementFile_alloc(Rec9,
98                                                            out->order,
99                                                            out->reduced_order,
100                                                            mpi_info));
101             }
102           Finley_Mesh_setContactElements(out,Finley_ElementFile_alloc(Rec9_Contact,           Finley_Mesh_setContactElements(out,Finley_ElementFile_alloc(Rec9_Contact,
103                                                         out->order,                                                         out->order,
104                                                         out->reduced_order,                                                         out->reduced_order,
# Line 244  Finley_Mesh* Finley_RectangularMesh_Hex2 Line 260  Finley_Mesh* Finley_RectangularMesh_Hex2
260             out->Elements->Nodes[INDEX2(17,k,NN)]=node0+2*Nstride2+1*Nstride1+2*Nstride0;             out->Elements->Nodes[INDEX2(17,k,NN)]=node0+2*Nstride2+1*Nstride1+2*Nstride0;
261             out->Elements->Nodes[INDEX2(18,k,NN)]=node0+2*Nstride2+2*Nstride1+1*Nstride0;             out->Elements->Nodes[INDEX2(18,k,NN)]=node0+2*Nstride2+2*Nstride1+1*Nstride0;
262             out->Elements->Nodes[INDEX2(19,k,NN)]=node0+2*Nstride2+1*Nstride1           ;             out->Elements->Nodes[INDEX2(19,k,NN)]=node0+2*Nstride2+1*Nstride1           ;
263             if (useFullElementOrder) {             if (generateAllNodes) {
264                out->Elements->Nodes[INDEX2(20,k,NN)]=node0+           1*Nstride1+1*Nstride0;                out->Elements->Nodes[INDEX2(20,k,NN)]=node0+           1*Nstride1+1*Nstride0;
265                out->Elements->Nodes[INDEX2(21,k,NN)]=node0+1*Nstride2           +1*Nstride0;                out->Elements->Nodes[INDEX2(21,k,NN)]=node0+1*Nstride2           +1*Nstride0;
266                out->Elements->Nodes[INDEX2(22,k,NN)]=node0+1*Nstride2+1*Nstride1+2*Nstride0;                out->Elements->Nodes[INDEX2(22,k,NN)]=node0+1*Nstride2+1*Nstride1+2*Nstride0;
# Line 305  Finley_Mesh* Finley_RectangularMesh_Hex2 Line 321  Finley_Mesh* Finley_RectangularMesh_Hex2
321                   out->FaceElements->Nodes[INDEX2(5,k,NN)] =node0+           2*Nstride1+1*Nstride0;                   out->FaceElements->Nodes[INDEX2(5,k,NN)] =node0+           2*Nstride1+1*Nstride0;
322                   out->FaceElements->Nodes[INDEX2(6,k,NN)] =node0+           1*Nstride1+2*Nstride0;                   out->FaceElements->Nodes[INDEX2(6,k,NN)] =node0+           1*Nstride1+2*Nstride0;
323                   out->FaceElements->Nodes[INDEX2(7,k,NN)] =node0+                      1*Nstride0;                   out->FaceElements->Nodes[INDEX2(7,k,NN)] =node0+                      1*Nstride0;
324                   if (useFullElementOrder){                   if (generateAllNodes){
325                      out->FaceElements->Nodes[INDEX2(8,k,NN)] =node0+           1*Nstride1+1*Nstride0;                      out->FaceElements->Nodes[INDEX2(8,k,NN)] =node0+           1*Nstride1+1*Nstride0;
326                   }                   }
327                }                }
# Line 361  Finley_Mesh* Finley_RectangularMesh_Hex2 Line 377  Finley_Mesh* Finley_RectangularMesh_Hex2
377                   out->FaceElements->Nodes[INDEX2(5,k,NN)] =node0+2*Nstride2+1*Nstride1+2*Nstride0;                   out->FaceElements->Nodes[INDEX2(5,k,NN)] =node0+2*Nstride2+1*Nstride1+2*Nstride0;
378                   out->FaceElements->Nodes[INDEX2(6,k,NN)] =node0+2*Nstride2+2*Nstride1+1*Nstride0;                   out->FaceElements->Nodes[INDEX2(6,k,NN)] =node0+2*Nstride2+2*Nstride1+1*Nstride0;
379                   out->FaceElements->Nodes[INDEX2(7,k,NN)] =node0+2*Nstride2+1*Nstride1           ;                   out->FaceElements->Nodes[INDEX2(7,k,NN)] =node0+2*Nstride2+1*Nstride1           ;
380                   if (useFullElementOrder){                   if (generateAllNodes){
381                   out->FaceElements->Nodes[INDEX2(8,k,NN)] =node0+2*Nstride2+1*Nstride1+1*Nstride0;                   out->FaceElements->Nodes[INDEX2(8,k,NN)] =node0+2*Nstride2+1*Nstride1+1*Nstride0;
382                   }                   }
383                }                }
# Line 420  Finley_Mesh* Finley_RectangularMesh_Hex2 Line 436  Finley_Mesh* Finley_RectangularMesh_Hex2
436                    out->FaceElements->Nodes[INDEX2(5,k,NN)] =node0+2*Nstride2+1*Nstride1           ;                    out->FaceElements->Nodes[INDEX2(5,k,NN)] =node0+2*Nstride2+1*Nstride1           ;
437                    out->FaceElements->Nodes[INDEX2(6,k,NN)] =node0+1*Nstride2+2*Nstride1           ;                    out->FaceElements->Nodes[INDEX2(6,k,NN)] =node0+1*Nstride2+2*Nstride1           ;
438                    out->FaceElements->Nodes[INDEX2(7,k,NN)] =node0+           1*Nstride1           ;                    out->FaceElements->Nodes[INDEX2(7,k,NN)] =node0+           1*Nstride1           ;
439                   if (useFullElementOrder){                   if (generateAllNodes){
440                      out->FaceElements->Nodes[INDEX2(8,k,NN)] =node0+1*Nstride2+1*Nstride1           ;                      out->FaceElements->Nodes[INDEX2(8,k,NN)] =node0+1*Nstride2+1*Nstride1           ;
441                   }                   }
442                 }                 }
# Line 476  Finley_Mesh* Finley_RectangularMesh_Hex2 Line 492  Finley_Mesh* Finley_RectangularMesh_Hex2
492                    out->FaceElements->Nodes[INDEX2(5,k,NN)]=node0+1*Nstride2+2*Nstride1+2*Nstride0;                    out->FaceElements->Nodes[INDEX2(5,k,NN)]=node0+1*Nstride2+2*Nstride1+2*Nstride0;
493                    out->FaceElements->Nodes[INDEX2(6,k,NN)]=node0+2*Nstride2+1*Nstride1+2*Nstride0;                    out->FaceElements->Nodes[INDEX2(6,k,NN)]=node0+2*Nstride2+1*Nstride1+2*Nstride0;
494                    out->FaceElements->Nodes[INDEX2(7,k,NN)]=node0+1*Nstride2           +2*Nstride0;                    out->FaceElements->Nodes[INDEX2(7,k,NN)]=node0+1*Nstride2           +2*Nstride0;
495                   if (useFullElementOrder){                   if (generateAllNodes){
496                      out->FaceElements->Nodes[INDEX2(8,k,NN)] =node0+1*Nstride2+1*Nstride1+2*Nstride0;                      out->FaceElements->Nodes[INDEX2(8,k,NN)] =node0+1*Nstride2+1*Nstride1+2*Nstride0;
497                   }                   }
498                 }                 }
# Line 534  Finley_Mesh* Finley_RectangularMesh_Hex2 Line 550  Finley_Mesh* Finley_RectangularMesh_Hex2
550                    out->FaceElements->Nodes[INDEX2(5,k,NN)]=node0+1*Nstride2+           2*Nstride0;                    out->FaceElements->Nodes[INDEX2(5,k,NN)]=node0+1*Nstride2+           2*Nstride0;
551                    out->FaceElements->Nodes[INDEX2(6,k,NN)]=node0+2*Nstride2+           1*Nstride0;                    out->FaceElements->Nodes[INDEX2(6,k,NN)]=node0+2*Nstride2+           1*Nstride0;
552                    out->FaceElements->Nodes[INDEX2(7,k,NN)]=node0+1*Nstride2                      ;                    out->FaceElements->Nodes[INDEX2(7,k,NN)]=node0+1*Nstride2                      ;
553                   if (useFullElementOrder){                   if (generateAllNodes){
554                      out->FaceElements->Nodes[INDEX2(8,k,NN)] =node0+1*Nstride2+         1*Nstride0;                      out->FaceElements->Nodes[INDEX2(8,k,NN)] =node0+1*Nstride2+         1*Nstride0;
555                   }                   }
556                 }                 }
# Line 589  Finley_Mesh* Finley_RectangularMesh_Hex2 Line 605  Finley_Mesh* Finley_RectangularMesh_Hex2
605                    out->FaceElements->Nodes[INDEX2(5,k,NN)]=node0+2*Nstride2+2*Nstride1+1*Nstride0;                    out->FaceElements->Nodes[INDEX2(5,k,NN)]=node0+2*Nstride2+2*Nstride1+1*Nstride0;
606                    out->FaceElements->Nodes[INDEX2(6,k,NN)]=node0+1*Nstride2+2*Nstride1+2*Nstride0;                    out->FaceElements->Nodes[INDEX2(6,k,NN)]=node0+1*Nstride2+2*Nstride1+2*Nstride0;
607                    out->FaceElements->Nodes[INDEX2(7,k,NN)]=node0+           2*Nstride1+1*Nstride0;                    out->FaceElements->Nodes[INDEX2(7,k,NN)]=node0+           2*Nstride1+1*Nstride0;
608                   if (useFullElementOrder){                   if (generateAllNodes){
609                      out->FaceElements->Nodes[INDEX2(8,k,NN)] =node0+1*Nstride2+2*Nstride1+1*Nstride0;                      out->FaceElements->Nodes[INDEX2(8,k,NN)] =node0+1*Nstride2+2*Nstride1+1*Nstride0;
610                   }                   }
611                 }                 }

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

  ViewVC Help
Powered by ViewVC 1.1.26