source: issm/trunk/src/c/modules/ModelProcessorx/Balancedthickness2/CreateNodesBalancedthickness2.cpp@ 4236

Last change on this file since 4236 was 4236, checked in by Eric.Larour, 15 years ago

New Container directory, with the format DataSet files. Split the header files from DataSet.h into Inputs.h, Elements.h, etc ...

File size: 2.7 KB
Line 
1/*
2 * CreateNodesBalancedthickness2.c:
3 */
4
5#include "../../../Container/Container.h"
6#include "../../../toolkits/toolkits.h"
7#include "../../../io/io.h"
8#include "../../../EnumDefinitions/EnumDefinitions.h"
9#include "../../../objects/objects.h"
10#include "../../../shared/shared.h"
11#include "../../../include/include.h"
12#include "../../MeshPartitionx/MeshPartitionx.h"
13#include "../ModelProcessorx.h"
14
15void CreateNodesBalancedthickness2(Nodes** pnodes, IoModel* iomodel,ConstDataHandle iomodel_handle){
16
17 /*Intermediary*/
18 int i,j;
19 bool continuous_galerkin=false;
20 int node_id;
21 int vertex_id;
22 int io_index;
23
24 /*DataSets: */
25 Nodes* nodes = NULL;
26
27 /*Recover pointer: */
28 nodes=*pnodes;
29
30 /*Create nodes if they do not exist yet*/
31 if(!nodes) nodes = new Nodes(NodesEnum);
32
33 /*Continuous Galerkin partition of nodes: */
34 NodesPartitioning(&iomodel->my_nodes,iomodel->my_elements, iomodel->my_vertices, iomodel->my_bordervertices, iomodel, iomodel_handle,continuous_galerkin);
35
36 /*Create nodes: */
37 IoModelFetchData(&iomodel->gridonbed,NULL,NULL,iomodel_handle,"gridonbed");
38 IoModelFetchData(&iomodel->gridonsurface,NULL,NULL,iomodel_handle,"gridonsurface");
39 IoModelFetchData(&iomodel->gridonhutter,NULL,NULL,iomodel_handle,"gridonhutter");
40 IoModelFetchData(&iomodel->gridonicesheet,NULL,NULL,iomodel_handle,"gridonicesheet");
41 IoModelFetchData(&iomodel->gridoniceshelf,NULL,NULL,iomodel_handle,"gridoniceshelf");
42 IoModelFetchData(&iomodel->elements,NULL,NULL,iomodel_handle,"elements");
43 if (iomodel->dim==3){
44 IoModelFetchData(&iomodel->deadgrids,NULL,NULL,iomodel_handle,"deadgrids");
45 IoModelFetchData(&iomodel->uppernodes,NULL,NULL,iomodel_handle,"uppergrids");
46 ISSMERROR("Not implemented yet");
47 }
48
49 /*Build Nodes dataset -> 3 for each element (Discontinuous Galerkin)*/
50 for (i=0;i<iomodel->numberofelements;i++){
51 for (j=0;j<3;j++){
52
53 if(iomodel->my_nodes[3*i+j]){
54
55 //Get index of the vertex on which the current node is located
56 vertex_id=(int)*(iomodel->elements+3*i+j); //(Matlab indexing)
57 io_index=vertex_id-1; //(C indexing)
58 ISSMASSERT(vertex_id>0 && vertex_id<=iomodel->numberofvertices);
59
60 //Compute Node id
61 node_id=iomodel->nodecounter+3*i+j+1;
62
63 /*Add node to nodes dataset: */
64 nodes->AddObject(new Node(node_id,node_id-1,vertex_id,io_index,iomodel,Balancedthickness2AnalysisEnum));
65
66 }
67 }
68 }
69
70 /*Clean fetched data: */
71 xfree((void**)&iomodel->deadgrids);
72 xfree((void**)&iomodel->gridonbed);
73 xfree((void**)&iomodel->gridonsurface);
74 xfree((void**)&iomodel->gridonhutter);
75 xfree((void**)&iomodel->uppernodes);
76 xfree((void**)&iomodel->gridonicesheet);
77 xfree((void**)&iomodel->gridoniceshelf);
78 xfree((void**)&iomodel->elements);
79
80 /*Assign output pointer: */
81 *pnodes=nodes;
82}
Note: See TracBrowser for help on using the repository browser.