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

Contents of /branches/domexper/dudley/src/Mesh.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3206 - (show annotations)
Fri Sep 24 03:20:22 2010 UTC (8 years, 9 months ago) by jfenwick
File MIME type: text/plain
File size: 4037 byte(s)
Remove references to reducedShapeFunction

1 /*******************************************************
2 *
3 * Copyright (c) 2003-2010 by University of Queensland
4 * Earth Systems Science Computational Center (ESSCC)
5 * http://www.uq.edu.au/esscc
6 *
7 * Primary Business: Queensland, Australia
8 * Licensed under the Open Software License version 3.0
9 * http://www.opensource.org/licenses/osl-3.0.php
10 *
11 *******************************************************/
12
13
14 /**************************************************************/
15
16 /* Dudley: Mesh */
17
18 /**************************************************************/
19
20 #include "Mesh.h"
21
22 /**************************************************************/
23
24 /* allocates a Mesh with name name for elements of type id using an integration order. If order is negative, */
25 /* the most appropriate order is selected indepently. */
26
27 Dudley_Mesh* Dudley_Mesh_alloc(char* name,dim_t numDim, Paso_MPIInfo *mpi_info)
28 {
29 Dudley_Mesh *out;
30
31 /* allocate the return value */
32
33 out=MEMALLOC(1,Dudley_Mesh);
34 if (Dudley_checkPtr(out)) return NULL;
35 out->Name=NULL;
36 out->Nodes=NULL;
37 out->Elements=NULL;
38 out->FaceElements=NULL;
39 out->Points=NULL;
40 out->TagMap=NULL;
41 out->reference_counter=0;
42
43 out->FullFullPattern=NULL;
44 out->FullReducedPattern=NULL;
45 out->ReducedFullPattern=NULL;
46 out->ReducedReducedPattern=NULL;
47 out->MPIInfo = Paso_MPIInfo_getReference( mpi_info );
48 if (! Dudley_noError()) {
49 Dudley_Mesh_free(out);
50 return NULL;
51 }
52 /* copy name: */
53
54 out->Name=MEMALLOC(strlen(name)+1,char);
55 if (Dudley_checkPtr(out->Name)) {
56 Dudley_Mesh_free(out);
57 return NULL;
58 }
59 strcpy(out->Name,name);
60
61 /* allocate node table: */
62 out->Nodes=Dudley_NodeFile_alloc( numDim, mpi_info );
63 if (! Dudley_noError()) {
64 Dudley_Mesh_free(out);
65 return NULL;
66 }
67 out->approximationOrder=-1;
68 out->reducedApproximationOrder=-1;
69 out->integrationOrder=-1;
70 out->reducedIntegrationOrder=-1;
71
72 out->Elements=NULL;
73 out->FaceElements=NULL;
74 out->Points=NULL;
75 out->reference_counter++;
76 return out;
77 }
78
79 /* returns a reference to Dudley_Mesh in */
80
81 Dudley_Mesh* Dudley_Mesh_reference(Dudley_Mesh* in) {
82 if (in!=NULL) ++(in->reference_counter);
83 return in;
84 }
85
86 /* freeates a mesh: */
87
88 void Dudley_Mesh_free(Dudley_Mesh* in) {
89 if (in!=NULL) {
90 in->reference_counter--;
91 if (in->reference_counter<1) {
92 MEMFREE(in->Name);
93 Dudley_NodeFile_free(in->Nodes);
94 Dudley_ElementFile_free(in->FaceElements);
95 Dudley_ElementFile_free(in->Elements);
96 Dudley_ElementFile_free(in->Points);
97 Dudley_TagMap_free(in->TagMap);
98 Paso_SystemMatrixPattern_free(in->FullFullPattern);
99 Paso_SystemMatrixPattern_free(in->FullReducedPattern);
100 Paso_SystemMatrixPattern_free(in->ReducedFullPattern);
101 Paso_SystemMatrixPattern_free(in->ReducedReducedPattern);
102 Paso_MPIInfo_free( in->MPIInfo );
103 MEMFREE(in);
104 }
105 }
106 }
107
108 /**************************************************************/
109
110 /* returns the spatial dimension of the mesh: */
111
112 dim_t Dudley_Mesh_getDim(Dudley_Mesh *in) {
113 return in->Nodes->numDim;
114 }
115
116 void Dudley_Mesh_setElements(Dudley_Mesh* self,Dudley_ElementFile *elements) {
117 Dudley_ElementFile_free(self->Elements);
118 self->Elements=elements;
119 }
120 void Dudley_Mesh_setFaceElements(Dudley_Mesh* self,Dudley_ElementFile *elements) {
121 Dudley_ElementFile_free(self->FaceElements);
122 self->FaceElements=elements;
123 }
124 void Dudley_Mesh_setPoints(Dudley_Mesh* self,Dudley_ElementFile *elements) {
125 Dudley_ElementFile_free(self->Points);
126 self->Points=elements;
127 }
128 int Dudley_Mesh_getStatus(Dudley_Mesh* in) {
129 if (in == NULL) {
130 return -1;
131 } else if (in->Nodes == NULL) {
132 return -1;
133 } else {
134 return in->Nodes->status;
135 }
136 }
137
138 void Mesh_setOrders(Dudley_Mesh *in)
139 {
140 in->approximationOrder=1; // order of shapeFunctions is always 1 in Dudley
141 in->reducedApproximationOrder=1;
142 in->integrationOrder=2;
143 in->reducedIntegrationOrder=0;
144
145
146 }
147

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26