Changeset 9733
- Timestamp:
- 09/09/11 14:58:09 (14 years ago)
- Location:
- issm/trunk
- Files:
-
- 3 added
- 3 deleted
- 147 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
r9731 r9733 163 163 MeshVertexonsurfaceEnum, 164 164 MeshElements2dEnum, 165 MeshElementsEnum, 166 MeshEdgesEnum, 165 167 /*}}}*/ 166 168 /*Datasets {{{1*/ 167 169 ConstraintsEnum, 168 ElementsEnum,169 170 LoadsEnum, 170 171 MaterialsEnum, … … 474 475 YEnum, 475 476 ZEnum, 476 EdgesEnum,477 477 XEnum, 478 478 OutputfilenameEnum, -
issm/trunk/src/c/modules/EnumToStringx/EnumToStringx.cpp
r9731 r9733 167 167 case MeshVertexonsurfaceEnum : return "MeshVertexonsurface"; 168 168 case MeshElements2dEnum : return "MeshElements2d"; 169 case MeshElementsEnum : return "MeshElements"; 170 case MeshEdgesEnum : return "MeshEdges"; 169 171 case ConstraintsEnum : return "Constraints"; 170 case ElementsEnum : return "Elements";171 172 case LoadsEnum : return "Loads"; 172 173 case MaterialsEnum : return "Materials"; … … 417 418 case YEnum : return "Y"; 418 419 case ZEnum : return "Z"; 419 case EdgesEnum : return "Edges";420 420 case XEnum : return "X"; 421 421 case OutputfilenameEnum : return "Outputfilename"; -
issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateLoadsBalancethickness.cpp
r9725 r9733 36 36 37 37 /*Get edges and elements*/ 38 iomodel->FetchData(3, EdgesEnum,ElementsEnum,ThicknessEnum);38 iomodel->FetchData(3,MeshEdgesEnum,MeshElementsEnum,ThicknessEnum); 39 39 40 40 /*First load data:*/ … … 42 42 43 43 /*Get left and right elements*/ 44 element=(int)iomodel->Data( EdgesEnum)[4*i+2]-1; //edges are [node1 node2 elem1 elem2]44 element=(int)iomodel->Data(MeshEdgesEnum)[4*i+2]-1; //edges are [node1 node2 elem1 elem2] 45 45 46 46 /*Now, if this element is not in the partition, pass: */ … … 52 52 53 53 /*Free data: */ 54 iomodel->DeleteData(3, EdgesEnum,ElementsEnum,ThicknessEnum);54 iomodel->DeleteData(3,MeshEdgesEnum,MeshElementsEnum,ThicknessEnum); 55 55 } 56 56 -
issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp
r9729 r9733 49 49 50 50 /*First fetch data: */ 51 iomodel->FetchData(7, ElementsEnum,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum);51 iomodel->FetchData(7,MeshElementsEnum,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 52 52 53 53 if(continuous_galerkin){ … … 72 72 73 73 //Get index of the vertex on which the current node is located 74 vertex_id=(int)*(iomodel->Data( ElementsEnum)+3*i+j); //(Matlab indexing)74 vertex_id=(int)*(iomodel->Data(MeshElementsEnum)+3*i+j); //(Matlab indexing) 75 75 io_index=vertex_id-1; //(C indexing) 76 76 _assert_(vertex_id>0 && vertex_id<=numberofvertices); … … 88 88 89 89 /*Clean fetched data: */ 90 iomodel->DeleteData(7, ElementsEnum,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum);90 iomodel->DeleteData(7,MeshElementsEnum,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 91 91 92 92 /*Assign output pointer: */ -
issm/trunk/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp
r9729 r9733 22 22 iomodel->Constant(&dim,MeshDimensionEnum); 23 23 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum); 24 iomodel->FetchData(1, ElementsEnum);24 iomodel->FetchData(1,MeshElementsEnum); 25 25 26 26 /*Update elements: */ … … 52 52 } 53 53 /*Free data: */ 54 iomodel->DeleteData(1, ElementsEnum);54 iomodel->DeleteData(1,MeshElementsEnum); 55 55 } -
issm/trunk/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp
r9729 r9733 22 22 iomodel->Constant(&dim,MeshDimensionEnum); 23 23 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum); 24 iomodel->FetchData(1, ElementsEnum);24 iomodel->FetchData(1,MeshElementsEnum); 25 25 26 26 /*Update elements: */ … … 44 44 45 45 /*Free data: */ 46 iomodel->DeleteData(1, ElementsEnum);46 iomodel->DeleteData(1,MeshElementsEnum); 47 47 } -
issm/trunk/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
r9725 r9733 35 35 36 36 /*Fetch data needed: */ 37 iomodel->FetchData(1, ElementsEnum);37 iomodel->FetchData(1,MeshElementsEnum); 38 38 iomodel->FetchDataToInput(elements,InversionVxObsEnum); 39 39 iomodel->FetchDataToInput(elements,InversionVyObsEnum); … … 66 66 67 67 /*Free data: */ 68 iomodel->DeleteData(1+4+5, ElementsEnum,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum);68 iomodel->DeleteData(1+4+5,MeshElementsEnum,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum); 69 69 } -
issm/trunk/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
r9728 r9733 37 37 38 38 /*First create the elements, vertices, nodes and material properties, if they don't already exist */ 39 elements = new Elements( ElementsEnum);39 elements = new Elements(MeshElementsEnum); 40 40 vertices = new Vertices(VerticesEnum); 41 41 materials = new Materials(MaterialsEnum); … … 45 45 46 46 /*Fetch data needed: */ 47 iomodel->FetchData(4, ElementsEnum,MeshElementconnectivityEnum,MaterialsRheologyBEnum,MaterialsRheologyNEnum);47 iomodel->FetchData(4,MeshElementsEnum,MeshElementconnectivityEnum,MaterialsRheologyBEnum,MaterialsRheologyNEnum); 48 48 if(dim==3) iomodel->FetchData(2,MeshUpperelementsEnum,MeshLowerelementsEnum); 49 49 if(control_analysis)iomodel->FetchData(3,InversionControlParametersEnum,InversionMinParametersEnum,InversionMaxParametersEnum); … … 63 63 64 64 /*Free data: */ 65 iomodel->DeleteData(9, ElementsEnum,MeshElementconnectivityEnum,MeshUpperelementsEnum,MeshLowerelementsEnum,65 iomodel->DeleteData(9,MeshElementsEnum,MeshElementconnectivityEnum,MeshUpperelementsEnum,MeshLowerelementsEnum, 66 66 MaterialsRheologyBEnum,MaterialsRheologyNEnum,InversionControlParametersEnum,InversionMinParametersEnum,InversionMaxParametersEnum); 67 67 -
issm/trunk/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp
r9725 r9733 32 32 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum); 33 33 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum); 34 elements=iomodel->Data( ElementsEnum);34 elements=iomodel->Data(MeshElementsEnum); 35 35 36 36 /*Some checks if debugging*/ -
issm/trunk/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp
r9725 r9733 35 35 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum); 36 36 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum); 37 elements=iomodel->Data( ElementsEnum);37 elements=iomodel->Data(MeshElementsEnum); 38 38 39 39 /*Some checks if debugging*/ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
r9729 r9733 128 128 iomodel->FetchData(&nodeonstokes,NULL,NULL,FlowequationBorderstokesEnum); 129 129 iomodel->FetchData(&vertices_type,NULL,NULL,FlowequationVertexEquationEnum); 130 iomodel->FetchData(1, ElementsEnum);130 iomodel->FetchData(1,MeshElementsEnum); 131 131 CreateSingleNodeToElementConnectivity(iomodel); 132 132 … … 146 146 xfree((void**)&nodeonicesheet); 147 147 xfree((void**)&vertices_type); 148 iomodel->DeleteData(1, ElementsEnum);148 iomodel->DeleteData(1,MeshElementsEnum); 149 149 150 150 /*Create Penpair for penalties: */ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
r9729 r9733 35 35 36 36 /*Fetch data needed: */ 37 iomodel->FetchData(2, ElementsEnum,FlowequationElementEquationEnum);37 iomodel->FetchData(2,MeshElementsEnum,FlowequationElementEquationEnum); 38 38 39 39 /*Update elements: */ … … 95 95 96 96 /*Free data: */ 97 iomodel->DeleteData(2, ElementsEnum,FlowequationElementEquationEnum);97 iomodel->DeleteData(2,MeshElementsEnum,FlowequationElementEquationEnum); 98 98 } -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp
r9729 r9733 44 44 45 45 /*First fetch data: */ 46 iomodel->FetchData(7,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum, ElementsEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum);46 iomodel->FetchData(7,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,MeshElementsEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 47 47 CreateNumberNodeToElementConnectivity(iomodel); 48 48 … … 57 57 58 58 /*Clean fetched data: */ 59 iomodel->DeleteData(7,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum, ElementsEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum);59 iomodel->DeleteData(7,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,MeshElementsEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 60 60 61 61 /*Assign output pointer: */ -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp
r9725 r9733 27 27 if (!ishutter)return; 28 28 29 iomodel->FetchData(2, ElementsEnum,FlowequationElementEquationEnum);29 iomodel->FetchData(2,MeshElementsEnum,FlowequationElementEquationEnum); 30 30 31 31 /*Update elements: */ … … 43 43 44 44 /*Free data: */ 45 iomodel->DeleteData(2, ElementsEnum,FlowequationElementEquationEnum);45 iomodel->DeleteData(2,MeshElementsEnum,FlowequationElementEquationEnum); 46 46 } -
issm/trunk/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp
r9729 r9733 27 27 28 28 /*Fetch data needed: */ 29 iomodel->FetchData(1, ElementsEnum);29 iomodel->FetchData(1,MeshElementsEnum); 30 30 31 31 /*Update elements: */ … … 55 55 56 56 /*Free data: */ 57 iomodel->DeleteData(1, ElementsEnum);57 iomodel->DeleteData(1,MeshElementsEnum); 58 58 59 59 } -
issm/trunk/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
r9731 r9733 67 67 if(dim==2){ 68 68 /*load elements: */ 69 iomodel->FetchData(&elements,NULL,NULL, ElementsEnum);69 iomodel->FetchData(&elements,NULL,NULL,MeshElementsEnum); 70 70 } 71 71 else{ … … 101 101 102 102 /*Start figuring out, out of the partition, which elements belong to this cpu: */ 103 iomodel->FetchData(&elements,NULL,NULL, ElementsEnum);103 iomodel->FetchData(&elements,NULL,NULL,MeshElementsEnum); 104 104 for (i=0;i<numberofelements;i++){ 105 105 -
issm/trunk/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp
r9729 r9733 27 27 28 28 /*Fetch data needed: */ 29 iomodel->FetchData(1, ElementsEnum);29 iomodel->FetchData(1,MeshElementsEnum); 30 30 31 31 /*Update elements: */ … … 61 61 62 62 /*Free data: */ 63 iomodel->DeleteData(1, ElementsEnum);63 iomodel->DeleteData(1,MeshElementsEnum); 64 64 } -
issm/trunk/src/c/modules/ModelProcessorx/Hydrology/UpdateElementsHydrology.cpp
r9729 r9733 20 20 /*Fetch data needed: */ 21 21 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum); 22 iomodel->FetchData(1, ElementsEnum);22 iomodel->FetchData(1,MeshElementsEnum); 23 23 24 24 /*Update elements: */ … … 57 57 58 58 /*Free data: */ 59 iomodel->DeleteData(1, ElementsEnum);59 iomodel->DeleteData(1,MeshElementsEnum); 60 60 } -
issm/trunk/src/c/modules/ModelProcessorx/Melting/CreateLoadsMelting.cpp
r9729 r9733 35 35 36 36 //create penalties for nodes: no node can have a temperature over the melting point 37 iomodel->FetchData(2,MeshVertexonbedEnum, ElementsEnum);37 iomodel->FetchData(2,MeshVertexonbedEnum,MeshElementsEnum); 38 38 CreateSingleNodeToElementConnectivity(iomodel); 39 39 … … 45 45 } 46 46 } 47 iomodel->DeleteData(2,MeshVertexonbedEnum, ElementsEnum);47 iomodel->DeleteData(2,MeshVertexonbedEnum,MeshElementsEnum); 48 48 49 49 /*Assign output pointer: */ -
issm/trunk/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp
r9729 r9733 27 27 28 28 /*Fetch data needed: */ 29 iomodel->FetchData(1, ElementsEnum);29 iomodel->FetchData(1,MeshElementsEnum); 30 30 31 31 /*Update elements: */ … … 60 60 61 61 /*Free data: */ 62 iomodel->DeleteData(1, ElementsEnum);62 iomodel->DeleteData(1,MeshElementsEnum); 63 63 } -
issm/trunk/src/c/modules/ModelProcessorx/NodesPartitioning.cpp
r9725 r9733 109 109 110 110 /*Get edges and elements*/ 111 iomodel->FetchData(&edges,&numberofedges,&cols, EdgesEnum);112 iomodel->FetchData(&elements,NULL,NULL, ElementsEnum);111 iomodel->FetchData(&edges,&numberofedges,&cols,MeshEdgesEnum); 112 iomodel->FetchData(&elements,NULL,NULL,MeshElementsEnum); 113 113 if (cols!=4) _error_("field edges should have 4 columns"); 114 114 -
issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateLoadsPrognostic.cpp
r9729 r9733 41 41 42 42 /*Get edges and elements*/ 43 iomodel->FetchData(3, EdgesEnum,ElementsEnum,ThicknessEnum);43 iomodel->FetchData(3,MeshEdgesEnum,MeshElementsEnum,ThicknessEnum); 44 44 45 45 /*First load data:*/ … … 47 47 48 48 /*Get left and right elements*/ 49 element=(int)(iomodel->Data( EdgesEnum)[4*i+2])-1; //edges are [node1 node2 elem1 elem2]49 element=(int)(iomodel->Data(MeshEdgesEnum)[4*i+2])-1; //edges are [node1 node2 elem1 elem2] 50 50 51 51 /*Now, if this element is not in the partition, pass: */ … … 57 57 58 58 /*Free data: */ 59 iomodel->DeleteData(3, EdgesEnum,ElementsEnum,ThicknessEnum);59 iomodel->DeleteData(3,MeshEdgesEnum,MeshElementsEnum,ThicknessEnum); 60 60 } 61 61 -
issm/trunk/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp
r9729 r9733 49 49 50 50 /*First fetch data: */ 51 iomodel->FetchData(7, ElementsEnum,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum);51 iomodel->FetchData(7,MeshElementsEnum,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 52 52 if(continuous_galerkin){ 53 53 … … 72 72 73 73 //Get index of the vertex on which the current node is located 74 vertex_id=(int)*(iomodel->Data( ElementsEnum)+3*i+j); //(Matlab indexing)74 vertex_id=(int)*(iomodel->Data(MeshElementsEnum)+3*i+j); //(Matlab indexing) 75 75 io_index=vertex_id-1; //(C indexing) 76 76 _assert_(vertex_id>0 && vertex_id<=numberofvertices); … … 88 88 89 89 /*Clean fetched data: */ 90 iomodel->DeleteData(7, ElementsEnum,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum);90 iomodel->DeleteData(7,MeshElementsEnum,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 91 91 92 92 /*Assign output pointer: */ -
issm/trunk/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
r9729 r9733 24 24 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum); 25 25 iomodel->Constant(&stabilization,PrognosticStabilizationEnum); 26 iomodel->FetchData(1, ElementsEnum);26 iomodel->FetchData(1,MeshElementsEnum); 27 27 28 28 /*Update elements: */ … … 61 61 62 62 /*Free data: */ 63 iomodel->DeleteData(1, ElementsEnum);63 iomodel->DeleteData(1,MeshElementsEnum); 64 64 } -
issm/trunk/src/c/modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp
r9729 r9733 22 22 iomodel->Constant(&dim,MeshDimensionEnum); 23 23 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum); 24 iomodel->FetchData(1, ElementsEnum);24 iomodel->FetchData(1,MeshElementsEnum); 25 25 26 26 /*Update elements: */ … … 44 44 45 45 /*Free data: */ 46 iomodel->DeleteData(1, ElementsEnum);46 iomodel->DeleteData(1,MeshElementsEnum); 47 47 } -
issm/trunk/src/c/modules/ModelProcessorx/Thermal/CreateLoadsThermal.cpp
r9725 r9733 36 36 37 37 //create penalties for nodes: no node can have a temperature over the melting point 38 iomodel->FetchData(2,ThermalSpctemperatureEnum, ElementsEnum);38 iomodel->FetchData(2,ThermalSpctemperatureEnum,MeshElementsEnum); 39 39 CreateSingleNodeToElementConnectivity(iomodel); 40 40 … … 48 48 } 49 49 } 50 iomodel->DeleteData(2,ThermalSpctemperatureEnum, ElementsEnum);50 iomodel->DeleteData(2,ThermalSpctemperatureEnum,MeshElementsEnum); 51 51 52 52 /*Assign output pointer: */ -
issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp
r9729 r9733 29 29 30 30 /*Fetch data needed: */ 31 iomodel->FetchData(1, ElementsEnum);31 iomodel->FetchData(1,MeshElementsEnum); 32 32 33 33 /*Update elements: */ … … 64 64 65 65 /*Free data: */ 66 iomodel->DeleteData(1, ElementsEnum);66 iomodel->DeleteData(1,MeshElementsEnum); 67 67 } -
issm/trunk/src/c/modules/StringToEnumx/StringToEnumx.cpp
r9731 r9733 165 165 else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum; 166 166 else if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum; 167 else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum; 168 else if (strcmp(name,"MeshEdges")==0) return MeshEdgesEnum; 167 169 else if (strcmp(name,"Constraints")==0) return ConstraintsEnum; 168 else if (strcmp(name,"Elements")==0) return ElementsEnum;169 170 else if (strcmp(name,"Loads")==0) return LoadsEnum; 170 171 else if (strcmp(name,"Materials")==0) return MaterialsEnum; … … 415 416 else if (strcmp(name,"Y")==0) return YEnum; 416 417 else if (strcmp(name,"Z")==0) return ZEnum; 417 else if (strcmp(name,"Edges")==0) return EdgesEnum;418 418 else if (strcmp(name,"X")==0) return XEnum; 419 419 else if (strcmp(name,"Outputfilename")==0) return OutputfilenameEnum; -
issm/trunk/src/c/objects/Elements/Penta.cpp
r9729 r9733 4853 4853 /*Recover vertices ids needed to initialize inputs*/ 4854 4854 for(i=0;i<6;i++){ 4855 penta_vertex_ids[i]=(int)iomodel->Data( ElementsEnum)[6*index+i]; //ids for vertices are in the elements array from Matlab4855 penta_vertex_ids[i]=(int)iomodel->Data(MeshElementsEnum)[6*index+i]; //ids for vertices are in the elements array from Matlab 4856 4856 } 4857 4857 … … 4947 4947 4948 4948 /*Step1: Get original input (to be depth avegaged): */ 4949 if (object_enum== ElementsEnum)4949 if (object_enum==MeshElementsEnum) 4950 4950 original_input=(Input*)penta->inputs->GetInput(enum_type); 4951 4951 else if (object_enum==MaterialsEnum) … … 5007 5007 5008 5008 /*Finally, add to inputs*/ 5009 if (object_enum== ElementsEnum)5009 if (object_enum==MeshElementsEnum) 5010 5010 this->inputs->AddInput((Input*)depth_averaged_input); 5011 5011 else if (object_enum==MaterialsEnum) … … 5037 5037 5038 5038 /*Step1: Extrude the original input: */ 5039 if (object_type== ElementsEnum)5039 if (object_type==MeshElementsEnum) 5040 5040 original_input=(Input*)this->inputs->GetInput(enum_type); 5041 5041 else if (object_type==MaterialsEnum) … … 5060 5060 Input* copy=NULL; 5061 5061 copy=(Input*)original_input->copy(); 5062 if (object_type== ElementsEnum)5062 if (object_type==MeshElementsEnum) 5063 5063 penta->inputs->AddInput((Input*)copy); 5064 5064 else if (object_type==MaterialsEnum) … … 5160 5160 /*Checks if debuging*/ 5161 5161 /*{{{2*/ 5162 _assert_(iomodel->Data( ElementsEnum));5162 _assert_(iomodel->Data(MeshElementsEnum)); 5163 5163 /*}}}*/ 5164 5164 5165 5165 /*Recover vertices ids needed to initialize inputs*/ 5166 5166 for(i=0;i<6;i++){ 5167 penta_vertex_ids[i]=(int)iomodel->Data( ElementsEnum)[6*index+i]; //ids for vertices are in the elements array from Matlab5167 penta_vertex_ids[i]=(int)iomodel->Data(MeshElementsEnum)[6*index+i]; //ids for vertices are in the elements array from Matlab 5168 5168 } 5169 5169 … … 7515 7515 /*Checks if debuging*/ 7516 7516 /*{{{2*/ 7517 _assert_(iomodel->Data( ElementsEnum));7517 _assert_(iomodel->Data(MeshElementsEnum)); 7518 7518 /*}}}*/ 7519 7519 … … 7530 7530 7531 7531 /*Recover vertices ids needed to initialize inputs*/ 7532 for(i=0;i<6;i++) penta_vertex_ids[i]=(int)iomodel->Data( ElementsEnum)[6*index+i]; //ids for vertices are in the elements array from Matlab7532 for(i=0;i<6;i++) penta_vertex_ids[i]=(int)iomodel->Data(MeshElementsEnum)[6*index+i]; //ids for vertices are in the elements array from Matlab 7533 7533 7534 7534 /*Recover nodes ids needed to initialize the node hook.*/ … … 7536 7536 //go recover node ids, needed to initialize the node hook. 7537 7537 //WARNING: We assume P1 elements here!!!!! 7538 penta_node_ids[i]=iomodel->nodecounter+(int)iomodel->Data( ElementsEnum)[6*index+i]; //ids for vertices are in the elements array from Matlab7538 penta_node_ids[i]=iomodel->nodecounter+(int)iomodel->Data(MeshElementsEnum)[6*index+i]; //ids for vertices are in the elements array from Matlab 7539 7539 } 7540 7540 -
issm/trunk/src/c/objects/Elements/Penta.h
r9218 r9733 101 101 void InputCreate(double scalar,int name,int code); 102 102 void InputCreate(double* vector, int index,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code); 103 void InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum= ElementsEnum);103 void InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum=MeshElementsEnum); 104 104 void InputDuplicate(int original_enum,int new_enum); 105 105 void InputScale(int enum_type,double scale_factor); -
issm/trunk/src/c/objects/Elements/Tria.cpp
r9729 r9733 3170 3170 3171 3171 /*copy input of enum_type*/ 3172 if (object_enum== ElementsEnum)3172 if (object_enum==MeshElementsEnum) 3173 3173 oldinput=(Input*)this->inputs->GetInput(enum_type); 3174 3174 else if (object_enum==MaterialsEnum) … … 3183 3183 3184 3184 /*Add new input to current element*/ 3185 if (object_enum== ElementsEnum)3185 if (object_enum==MeshElementsEnum) 3186 3186 this->inputs->AddInput((Input*)newinput); 3187 3187 else if (object_enum==MaterialsEnum) … … 3278 3278 /*Recover vertices ids needed to initialize inputs*/ 3279 3279 for(i=0;i<3;i++){ 3280 tria_vertex_ids[i]=(int)iomodel->Data( ElementsEnum)[3*index+i]; //ids for vertices are in the elements array from Matlab3280 tria_vertex_ids[i]=(int)iomodel->Data(MeshElementsEnum)[3*index+i]; //ids for vertices are in the elements array from Matlab 3281 3281 } 3282 3282 … … 3907 3907 /*Recover vertices ids needed to initialize inputs*/ 3908 3908 for(i=0;i<3;i++){ 3909 tria_vertex_ids[i]=(int)iomodel->Data( ElementsEnum)[3*index+i]; //ids for vertices are in the elements array from Matlab3909 tria_vertex_ids[i]=(int)iomodel->Data(MeshElementsEnum)[3*index+i]; //ids for vertices are in the elements array from Matlab 3910 3910 } 3911 3911 … … 5214 5214 /*Checks if debuging*/ 5215 5215 /*{{{2*/ 5216 _assert_(iomodel->Data( ElementsEnum));5216 _assert_(iomodel->Data(MeshElementsEnum)); 5217 5217 /*}}}*/ 5218 5218 … … 5236 5236 /*Recover vertices ids needed to initialize inputs*/ 5237 5237 for(i=0;i<3;i++){ 5238 tria_vertex_ids[i]=(int)iomodel->Data( ElementsEnum)[3*index+i]; //ids for vertices are in the elements array from Matlab5238 tria_vertex_ids[i]=(int)iomodel->Data(MeshElementsEnum)[3*index+i]; //ids for vertices are in the elements array from Matlab 5239 5239 } 5240 5240 … … 5249 5249 /*Continuous Galerkin*/ 5250 5250 for(i=0;i<3;i++){ 5251 tria_node_ids[i]=iomodel->nodecounter+(int)*(iomodel->Data( ElementsEnum)+3*index+i); //ids for vertices are in the elements array from Matlab5251 tria_node_ids[i]=iomodel->nodecounter+(int)*(iomodel->Data(MeshElementsEnum)+3*index+i); //ids for vertices are in the elements array from Matlab 5252 5252 } 5253 5253 } -
issm/trunk/src/c/objects/Elements/Tria.h
r9271 r9733 102 102 void InputCreate(double scalar,int name,int code); 103 103 void InputCreate(double* vector, int index,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code); 104 void InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum= ElementsEnum);104 void InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum=MeshElementsEnum); 105 105 void InputDuplicate(int original_enum,int new_enum); 106 106 void InputScale(int enum_type,double scale_factor); -
issm/trunk/src/c/objects/Loads/Numericalflux.cpp
r9725 r9733 60 60 61 61 /*First, see wether this is an internal or boundary edge (if e2=NaN)*/ 62 if (isnan((double)iomodel->Data( EdgesEnum)[4*i+3])){ //edges are [node1 node2 elem1 elem2]62 if (isnan((double)iomodel->Data(MeshEdgesEnum)[4*i+3])){ //edges are [node1 node2 elem1 elem2] 63 63 /* Boundary edge, only one element */ 64 e1=(int)iomodel->Data( EdgesEnum)[4*i+2];64 e1=(int)iomodel->Data(MeshEdgesEnum)[4*i+2]; 65 65 e2=(int)UNDEF; 66 66 num_elems=1; … … 71 71 else{ 72 72 /* internal edge: connected to 2 elements */ 73 e1=(int)iomodel->Data( EdgesEnum)[4*i+2];74 e2=(int)iomodel->Data( EdgesEnum)[4*i+3];73 e1=(int)iomodel->Data(MeshEdgesEnum)[4*i+2]; 74 e2=(int)iomodel->Data(MeshEdgesEnum)[4*i+3]; 75 75 num_elems=2; 76 76 num_nodes=4; … … 81 81 82 82 /*1: Get vertices ids*/ 83 i1=(int)iomodel->Data( EdgesEnum)[4*i+0];84 i2=(int)iomodel->Data( EdgesEnum)[4*i+1];83 i1=(int)iomodel->Data(MeshEdgesEnum)[4*i+0]; 84 i2=(int)iomodel->Data(MeshEdgesEnum)[4*i+1]; 85 85 86 86 if (numericalflux_type==InternalEnum){ … … 91 91 pos1=pos2=pos3=pos4=UNDEF; 92 92 for(j=0;j<3;j++){ 93 if (iomodel->Data( ElementsEnum)[3*(e1-1)+j]==i1) pos1=j+1;94 if (iomodel->Data( ElementsEnum)[3*(e1-1)+j]==i2) pos2=j+1;95 if (iomodel->Data( ElementsEnum)[3*(e2-1)+j]==i1) pos3=j+1;96 if (iomodel->Data( ElementsEnum)[3*(e2-1)+j]==i2) pos4=j+1;93 if (iomodel->Data(MeshElementsEnum)[3*(e1-1)+j]==i1) pos1=j+1; 94 if (iomodel->Data(MeshElementsEnum)[3*(e1-1)+j]==i2) pos2=j+1; 95 if (iomodel->Data(MeshElementsEnum)[3*(e2-1)+j]==i1) pos3=j+1; 96 if (iomodel->Data(MeshElementsEnum)[3*(e2-1)+j]==i2) pos4=j+1; 97 97 } 98 98 _assert_(pos1!=UNDEF && pos2!=UNDEF && pos3!=UNDEF && pos4!=UNDEF); … … 110 110 pos1=pos2=UNDEF; 111 111 for(j=0;j<3;j++){ 112 if (iomodel->Data( ElementsEnum)[3*(e1-1)+j]==i1) pos1=j+1;113 if (iomodel->Data( ElementsEnum)[3*(e1-1)+j]==i2) pos2=j+1;112 if (iomodel->Data(MeshElementsEnum)[3*(e1-1)+j]==i1) pos1=j+1; 113 if (iomodel->Data(MeshElementsEnum)[3*(e1-1)+j]==i2) pos2=j+1; 114 114 } 115 115 _assert_(pos1!=UNDEF && pos2!=UNDEF); -
issm/trunk/src/c/objects/Materials/Matice.cpp
r9719 r9733 675 675 /*Get B*/ 676 676 if (iomodel->Data(MaterialsRheologyBEnum)) { 677 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[int(iomodel->Data( ElementsEnum)[num_vertices*index+i]-1)];677 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)]; 678 678 this->inputs->AddInput(new TriaVertexInput(MaterialsRheologyBbarEnum,nodeinputs)); 679 679 } … … 692 692 if (iomodel->Data(MaterialsRheologyBEnum)){ 693 693 _assert_(iomodel->Data(MaterialsRheologyBEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 694 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[int(iomodel->Data( ElementsEnum)[num_vertices*index+j]-1)];695 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[int(iomodel->Data( ElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];696 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[int(iomodel->Data( ElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];694 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)]; 695 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 696 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 697 697 this->inputs->AddInput(new ControlInput(MaterialsRheologyBbarEnum,TriaVertexInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 698 698 } … … 714 714 /*Get B*/ 715 715 if (iomodel->Data(MaterialsRheologyBEnum)) { 716 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[int(iomodel->Data( ElementsEnum)[num_vertices*index+i]-1)];716 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)]; 717 717 this->inputs->AddInput(new PentaVertexInput(MaterialsRheologyBEnum,nodeinputs)); 718 718 } … … 731 731 if (iomodel->Data(MaterialsRheologyBEnum)){ 732 732 _assert_(iomodel->Data(MaterialsRheologyBEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 733 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[int(iomodel->Data( ElementsEnum)[num_vertices*index+j]-1)];734 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[int(iomodel->Data( ElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];735 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[int(iomodel->Data( ElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];733 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)]; 734 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 735 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[int(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i]; 736 736 this->inputs->AddInput(new ControlInput(MaterialsRheologyBEnum,PentaVertexInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 737 737 } -
issm/trunk/src/m/classes/mesh.m
r9731 r9733 35 35 x2d = modelfield('default',NaN,'marshall',false); 36 36 y2d = modelfield('default',NaN,'marshall',false); 37 elements = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2); 38 edges = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3); 37 39 end 38 40 methods -
issm/trunk/src/m/classes/model/model.m
r9732 r9733 43 43 44 44 %FIXME: all other fields should belong to other classes 45 elements = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',2);46 45 x = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1); 47 46 y = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1); 48 47 z = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',1); 49 edges = modelfield('default',NaN,'marshall',true,'format','DoubleMat','mattype',3);50 48 51 49 %}}} … … 207 205 if isfield(structmd,'ishutter'), md.flowequation.ishutter=structmd.ishutter; end 208 206 if isfield(structmd,'isstokes'), md.flowequation.isstokes=structmd.isstokes; end 209 if isfield(structmd,'elements_type'), md.flowequation.element_equation=structmd. elements_type; end207 if isfield(structmd,'elements_type'), md.flowequation.element_equation=structmd.mesh.elements_type; end 210 208 if isfield(structmd,'vertices_type'), md.flowequation.vertex_equation=structmd.vertices_type; end 211 209 if isfield(structmd,'eps_rel'), md.steadystate.reltol=structmd.eps_rel; end … … 262 260 if isfield(structmd,'nodeonsurface'), md.mesh.vertexonsurface=structmd.nodeonsurface; end 263 261 if isfield(structmd,'nodeonbed'), md.mesh.vertexonbed=structmd.nodeonbed; end 264 if isfield(structmd,'elements2d'), md.mesh.elements2d=structmd. elements2d; end262 if isfield(structmd,'elements2d'), md.mesh.elements2d=structmd.mesh.elements2d; end 265 263 if isfield(structmd,'y2d'), md.mesh.y2d=structmd.y2d; end 266 264 if isfield(structmd,'x2d'), md.mesh.x2d=structmd.x2d; end 265 if isfield(structmd,'elements'), md.mesh.elements=structmd.mesh.elements; end 266 if isfield(structmd,'edges'), md.mesh.edges=structmd.mesh.edges; end 267 267 268 268 %Field changes … … 295 295 pos=find(structmd.pressureload(:,end)==119); md.pressureload(pos,end)=2; 296 296 end 297 if (structmd. elements_type(end,end)>100),298 pos=find(structmd. elements_type==59); md.elements_type(pos,end)=0;299 pos=find(structmd. elements_type==55); md.elements_type(pos,end)=1;300 pos=find(structmd. elements_type==56); md.elements_type(pos,end)=2;301 pos=find(structmd. elements_type==60); md.elements_type(pos,end)=3;302 pos=find(structmd. elements_type==62); md.elements_type(pos,end)=4;303 pos=find(structmd. elements_type==57); md.elements_type(pos,end)=5;304 pos=find(structmd. elements_type==58); md.elements_type(pos,end)=6;305 pos=find(structmd. elements_type==61); md.elements_type(pos,end)=7;297 if (structmd.mesh.elements_type(end,end)>100), 298 pos=find(structmd.mesh.elements_type==59); md.mesh.elements_type(pos,end)=0; 299 pos=find(structmd.mesh.elements_type==55); md.mesh.elements_type(pos,end)=1; 300 pos=find(structmd.mesh.elements_type==56); md.mesh.elements_type(pos,end)=2; 301 pos=find(structmd.mesh.elements_type==60); md.mesh.elements_type(pos,end)=3; 302 pos=find(structmd.mesh.elements_type==62); md.mesh.elements_type(pos,end)=4; 303 pos=find(structmd.mesh.elements_type==57); md.mesh.elements_type(pos,end)=5; 304 pos=find(structmd.mesh.elements_type==58); md.mesh.elements_type(pos,end)=6; 305 pos=find(structmd.mesh.elements_type==61); md.mesh.elements_type(pos,end)=7; 306 306 end 307 307 if isfield(structmd,'rheology_law') & isnumeric(structmd.rheology_law), -
issm/trunk/src/m/kml/kml_mesh_elem.m
r9725 r9733 80 80 display('Averaging nodal data to element data.'); 81 81 edata=zeros(1,md.mesh.numberofelements); 82 for i=1:size(md. elements,1)83 for j=1:size(md. elements,2)84 edata(i)=edata(i)+ndata(md. elements(i,j));82 for i=1:size(md.mesh.elements,1) 83 for j=1:size(md.mesh.elements,2) 84 edata(i)=edata(i)+ndata(md.mesh.elements(i,j)); 85 85 end 86 edata(i)=edata(i)/size(md. elements,2);86 edata(i)=edata(i)/size(md.mesh.elements,2); 87 87 end 88 88 else … … 126 126 md.mesh.numberofelements,md.mesh.numberofvertices); 127 127 % see matlab_oop, "initializing a handle object array" 128 %kfold.feature ={repmat(kml_placemark(),1,size(md. elements,1))};129 kfeat(size(md. elements,1))=kml_placemark();128 %kfold.feature ={repmat(kml_placemark(),1,size(md.mesh.elements,1))}; 129 kfeat(size(md.mesh.elements,1))=kml_placemark(); 130 130 kfold.feature={kfeat}; 131 131 132 132 % write each element as a polygon placemark 133 133 134 disp(['Writing ' num2str(size(md. elements,1)) ' tria elements as KML polygons.']);135 for i=1:size(md. elements,1)134 disp(['Writing ' num2str(size(md.mesh.elements,1)) ' tria elements as KML polygons.']); 135 for i=1:size(md.mesh.elements,1) 136 136 kplace=kml_placemark(); 137 137 kplace.name =sprintf('Element %d',i); … … 157 157 158 158 kring=kml_linearring(); 159 kring.coords =zeros(size(md. elements,2)+1,3);159 kring.coords =zeros(size(md.mesh.elements,2)+1,3); 160 160 161 for j=1:size(md. elements,2)162 kring.coords(j,:)=[md.mesh.long(md. elements(i,j)) md.mesh.lat(md.elements(i,j)) alt];161 for j=1:size(md.mesh.elements,2) 162 kring.coords(j,:)=[md.mesh.long(md.mesh.elements(i,j)) md.mesh.lat(md.mesh.elements(i,j)) alt]; 163 163 end 164 164 kring.coords(end,:)=kring.coords(1,:); -
issm/trunk/src/m/kml/kml_mesh_write.m
r9725 r9733 86 86 display('Averaging nodal data to element data.'); 87 87 edata=zeros(1,md.mesh.numberofelements); 88 for i=1:size(md. elements,1)89 for j=1:size(md. elements,2)90 edata(i)=edata(i)+ndata(md. elements(i,j));88 for i=1:size(md.mesh.elements,1) 89 for j=1:size(md.mesh.elements,2) 90 edata(i)=edata(i)+ndata(md.mesh.elements(i,j)); 91 91 end 92 edata(i)=edata(i)/size(md. elements,2);92 edata(i)=edata(i)/size(md.mesh.elements,2); 93 93 end 94 94 else -
issm/trunk/src/m/kml/kml_part_edges.m
r9725 r9733 81 81 display('Averaging nodal data to element data.'); 82 82 edata=zeros(1,md.mesh.numberofelements); 83 for i=1:size(md. elements,1)84 for j=1:size(md. elements,2)85 edata(i)=edata(i)+ndata(md. elements(i,j));83 for i=1:size(md.mesh.elements,1) 84 for j=1:size(md.mesh.elements,2) 85 edata(i)=edata(i)+ndata(md.mesh.elements(i,j)); 86 86 end 87 edata(i)=edata(i)/size(md. elements,2);87 edata(i)=edata(i)/size(md.mesh.elements,2); 88 88 end 89 89 else … … 129 129 130 130 disp(['Writing ' num2str(md.qmu.numberofpartitions) ' partitions as KML linestrings.']); 131 epart=md.qmu.partition(md. elements)+1;131 epart=md.qmu.partition(md.mesh.elements)+1; 132 132 if exist('ndata','var') || exist('edata','var') 133 133 pdata=zeros(1,md.qmu.numberofpartitions); … … 148 148 end 149 149 irow=unique(irow); 150 elemp=md. elements(irow,:);150 elemp=md.mesh.elements(irow,:); 151 151 epartp=epart(irow,:); 152 152 nodeconp=nodeconnectivity(elemp,md.mesh.numberofvertices); -
issm/trunk/src/m/kml/kml_part_elems.m
r9725 r9733 81 81 display('Averaging nodal data to element data.'); 82 82 edata=zeros(1,md.mesh.numberofelements); 83 for i=1:size(md. elements,1)84 for j=1:size(md. elements,2)85 edata(i)=edata(i)+ndata(md. elements(i,j));86 end 87 edata(i)=edata(i)/size(md. elements,2);83 for i=1:size(md.mesh.elements,1) 84 for j=1:size(md.mesh.elements,2) 85 edata(i)=edata(i)+ndata(md.mesh.elements(i,j)); 86 end 87 edata(i)=edata(i)/size(md.mesh.elements,2); 88 88 end 89 89 else … … 129 129 130 130 disp(['Writing ' num2str(md.qmu.numberofpartitions) ' partitions as KML polygons.']); 131 epart=md.qmu.partition(md. elements)+1;131 epart=md.qmu.partition(md.mesh.elements)+1; 132 132 if exist('ndata','var') || exist('edata','var') 133 133 pdata=zeros(1,md.qmu.numberofpartitions); … … 146 146 end 147 147 irow=unique(irow); 148 elem=md. elements(irow,:);148 elem=md.mesh.elements(irow,:); 149 149 150 150 % determine the data to be used for the colors (if any) -
issm/trunk/src/m/kml/kml_part_flagedges.m
r9714 r9733 74 74 if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ... 75 75 md.qmu.numberofpartitions 76 [latseg,lonseg]=flagedges(md. elements,md.mesh.lat,md.mesh.long,md.qmu.partition);76 [latseg,lonseg]=flagedges(md.mesh.elements,md.mesh.lat,md.mesh.long,md.qmu.partition); 77 77 kfold=kml_folder(); 78 78 kfold.name ='Partition Segments'; -
issm/trunk/src/m/kml/kml_partitions.m
r9725 r9733 82 82 display('Averaging nodal data to element data.'); 83 83 edata=zeros(1,md.mesh.numberofelements); 84 for i=1:size(md. elements,1)85 for j=1:size(md. elements,2)86 edata(i)=edata(i)+ndata(md. elements(i,j));84 for i=1:size(md.mesh.elements,1) 85 for j=1:size(md.mesh.elements,2) 86 edata(i)=edata(i)+ndata(md.mesh.elements(i,j)); 87 87 end 88 edata(i)=edata(i)/size(md. elements,2);88 edata(i)=edata(i)/size(md.mesh.elements,2); 89 89 end 90 90 else … … 130 130 131 131 disp(['Writing ' num2str(md.qmu.numberofpartitions) ' partitions as KML polygons.']); 132 epart=md.qmu.partition(md. elements)+1;132 epart=md.qmu.partition(md.mesh.elements)+1; 133 133 if exist('ndata','var') || exist('edata','var') 134 134 pdata=zeros(1,md.qmu.numberofpartitions); … … 149 149 end 150 150 irow=unique(irow); 151 elemp=md. elements(irow,:);151 elemp=md.mesh.elements(irow,:); 152 152 epartp=epart(irow,:); 153 153 nodeconp=nodeconnectivity(elemp,md.mesh.numberofvertices); -
issm/trunk/src/m/kml/kml_unsh_edges.m
r9714 r9733 74 74 if (~exist('prtplt','var') || strncmpi(prtplt,'on' ,2) || strncmpi(prtplt,'y',1)) && ... 75 75 md.qmu.numberofpartitions 76 [edgeadj]=edgeadjacency(md. elements,md.nodeconnectivity);76 [edgeadj]=edgeadjacency(md.mesh.elements,md.nodeconnectivity); 77 77 [icol,irow]=find(edgeadj'==0); 78 78 edgeuns=zeros(length(irow),2); 79 79 for i=1:length(irow) 80 edgeuns(i,1)=md. elements(irow(i),icol(i));81 edgeuns(i,2)=md. elements(irow(i),mod(icol(i),size(md.elements,2))+1);80 edgeuns(i,1)=md.mesh.elements(irow(i),icol(i)); 81 edgeuns(i,2)=md.mesh.elements(irow(i),mod(icol(i),size(md.mesh.elements,2))+1); 82 82 end 83 83 kfold=kml_folder(); -
issm/trunk/src/m/model/BasinConstrain.m
r9725 r9733 33 33 end 34 34 %ok, flag elements and nodes 35 [vertexondomain elementondomain]=ContourToMesh(md. elements(:,1:3),md.x,md.y,domain,'element and node',2);35 [vertexondomain elementondomain]=ContourToMesh(md.mesh.elements(:,1:3),md.x,md.y,domain,'element and node',2); 36 36 end 37 37 if invert, … … 54 54 %now, make sure all elements on water have nodes that are spc'd, otherwise, we'll get a singular problem. 55 55 pos=find(~md.mask.elementonwater); 56 numpos=unique(md. elements(pos,:));56 numpos=unique(md.mesh.elements(pos,:)); 57 57 nodes=setdiff(1:1:md.mesh.numberofvertices,numpos); 58 58 md.diagnostic.spcvx(nodes)=md.inversion.vx_obs(nodes); -
issm/trunk/src/m/model/BasinConstrainShelf.m
r9725 r9733 33 33 end 34 34 %ok, flag elements and nodes 35 [vertexondomain elementondomain]=ContourToMesh(md. elements(:,1:3),md.x,md.y,domain,'element and node',2);35 [vertexondomain elementondomain]=ContourToMesh(md.mesh.elements(:,1:3),md.x,md.y,domain,'element and node',2); 36 36 end 37 37 if invert, … … 54 54 %now, make sure all elements on water have nodes that are spc'd, otherwise, we'll get a singular problem. 55 55 pos=find(~md.mask.elementonwater); 56 numpos=unique(md. elements(pos,:));56 numpos=unique(md.mesh.elements(pos,:)); 57 57 nodes=setdiff(1:1:md.mesh.numberofvertices,numpos); 58 58 md.diagnostic.spcvx(nodes)=md.inversion.vx_obs(nodes); -
issm/trunk/src/m/model/MeltingGroundingLines.m
r9641 r9733 8 8 %get nodes on ice sheet and on ice shelf 9 9 pos_shelf=find(~md.mask.vertexongroundedice); 10 pos_GL=intersect(unique(md. elements(find(md.mask.elementongroundedice),:)),unique(md.elements(find(md.mask.elementonfloatingice),:)));10 pos_GL=intersect(unique(md.mesh.elements(find(md.mask.elementongroundedice),:)),unique(md.mesh.elements(find(md.mask.elementonfloatingice),:))); 11 11 12 12 for i=1:length(pos_shelf) -
issm/trunk/src/m/model/PropagateFlagsUntilDistance.m
r9731 r9733 15 15 md.x=md.mesh.x2d; 16 16 md.y=md.mesh.y2d; 17 md. elements=md.mesh.elements2d;17 md.mesh.elements=md.mesh.elements2d; 18 18 end 19 19 … … 27 27 28 28 %average x and y over elements: 29 x_elem=md.x(md. elements)*[1;1;1]/3;30 y_elem=md.y(md. elements)*[1;1;1]/3;29 x_elem=md.x(md.mesh.elements)*[1;1;1]/3; 30 y_elem=md.y(md.mesh.elements)*[1;1;1]/3; 31 31 32 32 while 1, -
issm/trunk/src/m/model/SectionValues.m
r9731 r9733 82 82 83 83 %Interpolation of data on specified points 84 data_interp=InterpFromMeshToMesh2d(md. elements,md.x,md.y,data,X,Y);84 data_interp=InterpFromMeshToMesh2d(md.mesh.elements,md.x,md.y,data,X,Y); 85 85 %data_interp=griddata(md.x,md.y,data,X,Y); 86 86 … … 120 120 121 121 %Interpolation of data on specified points 122 data_interp=InterpFromMeshToMesh3d(md. elements,md.x,md.y,md.z,data,X3,Y3,Z3,NaN);122 data_interp=InterpFromMeshToMesh3d(md.mesh.elements,md.x,md.y,md.z,data,X3,Y3,Z3,NaN); 123 123 124 124 %build outputs -
issm/trunk/src/m/model/ThicknessCorrection.m
r9691 r9733 24 24 %get nodes on ice sheet and on ice shelf 25 25 pos_shelf=find(~md.mask.vertexongroundedice); 26 pos_GL=intersect(unique(md. elements(find(md.mask.elementongroundedice),:)),unique(md.elements(find(md.mask.elementonfloatingice),:)));26 pos_GL=intersect(unique(md.mesh.elements(find(md.mask.elementongroundedice),:)),unique(md.mesh.elements(find(md.mask.elementonfloatingice),:))); 27 27 debug=(length(pos_shelf)>50000); 28 28 -
issm/trunk/src/m/model/averageconnectivity.m
r9725 r9733 7 7 nnz=0; 8 8 for i=1:md.mesh.numberofvertices, 9 nnz=nnz+length(find(md. elements==i));9 nnz=nnz+length(find(md.mesh.elements==i)); 10 10 end 11 11 conn=nnz/md.mesh.numberofvertices; -
issm/trunk/src/m/model/averaging.m
r9725 r9733 25 25 26 26 %load some variables (it is much faster if the variab;es are loaded from md once for all) 27 index=md. elements;27 index=md.mesh.elements; 28 28 numberofnodes=md.mesh.numberofvertices; 29 29 numberofelements=md.mesh.numberofelements; -
issm/trunk/src/m/model/bamg.m
r9732 r9733 271 271 else 272 272 bamg_mesh.Vertices=[md.x md.y ones(md.mesh.numberofvertices,1)]; 273 bamg_mesh.Triangles=[md. elements ones(md.mesh.numberofelements,1)];273 bamg_mesh.Triangles=[md.mesh.elements ones(md.mesh.numberofelements,1)]; 274 274 end 275 275 … … 319 319 md.x=bamgmesh_out.Vertices(:,1); 320 320 md.y=bamgmesh_out.Vertices(:,2); 321 md. elements=bamgmesh_out.Triangles(:,1:3);322 md. edges=bamgmesh_out.IssmEdges;321 md.mesh.elements=bamgmesh_out.Triangles(:,1:3); 322 md.mesh.edges=bamgmesh_out.IssmEdges; 323 323 md.mesh.segments=bamgmesh_out.IssmSegments(:,1:3); 324 324 md.mesh.segmentmarkers=bamgmesh_out.IssmSegments(:,4); … … 326 326 %Fill in rest of fields: 327 327 md.mesh.dimension=2; 328 md.mesh.numberofelements=size(md. elements,1);328 md.mesh.numberofelements=size(md.mesh.elements,1); 329 329 md.mesh.numberofvertices=length(md.x); 330 md.mesh.numberofedges=size(md. edges,1);330 md.mesh.numberofedges=size(md.mesh.edges,1); 331 331 md.z=zeros(md.mesh.numberofvertices,1); 332 332 md.mesh.vertexonbed=ones(md.mesh.numberofvertices,1); … … 340 340 341 341 %Check for orphan 342 if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md. elements(:)))))342 if any(~ismember(1:md.mesh.numberofvertices,sort(unique(md.mesh.elements(:))))) 343 343 error('Output mesh has orphans. Decrease MaxCornerAngle to prevent outside points (ex: 0.01)'); 344 344 end -
issm/trunk/src/m/model/basevert.m
r9725 r9733 14 14 15 15 for n=1:md.mesh.numberofelements 16 X=inv([md.x(md. elements(n,:)) md.y(md.elements(n,:)) ones(3,1)]);16 X=inv([md.x(md.mesh.elements(n,:)) md.y(md.mesh.elements(n,:)) ones(3,1)]); 17 17 alpha(n,:)=X(1,:); 18 18 beta(n,:)=X(2,:); … … 24 24 25 25 summation=[1;1;1]; 26 hux=(hu(md. elements).*alpha)*summation;27 hvy=(hv(md. elements).*beta)*summation;26 hux=(hu(md.mesh.elements).*alpha)*summation; 27 hvy=(hv(md.mesh.elements).*beta)*summation; 28 28 29 uelem=md.initialization.vx(md. elements)*summation/3;30 velem=md.initialization.vy(md. elements)*summation/3;29 uelem=md.initialization.vx(md.mesh.elements)*summation/3; 30 velem=md.initialization.vy(md.mesh.elements)*summation/3; 31 31 32 dbdx=(md.geometry.bed(md. elements).*alpha)*summation;33 dbdy=(md.geometry.bed(md. elements).*beta)*summation;32 dbdx=(md.geometry.bed(md.mesh.elements).*alpha)*summation; 33 dbdy=(md.geometry.bed(md.mesh.elements).*beta)*summation; 34 34 35 35 wb=-md.materials.rho_ice/md.materials.rho_water*(hux+hvy)+uelem.*dbdx+velem.*dbdy; -
issm/trunk/src/m/model/bedslope.m
r9731 r9733 9 9 numberofelements=md.mesh.numberofelements; 10 10 numberofnodes=md.mesh.numberofvertices; 11 index=md. elements;11 index=md.mesh.elements; 12 12 x=md.x; y=md.y; 13 13 else -
issm/trunk/src/m/model/collapse.m
r9731 r9733 95 95 md.mesh.numberofvertices=md.mesh.numberofvertices2d; 96 96 md.mesh.numberofelements=md.mesh.numberofelements2d; 97 md. elements=md.mesh.elements2d;97 md.mesh.elements=md.mesh.elements2d; 98 98 99 99 %Keep a trace of lower and upper nodes -
issm/trunk/src/m/model/contourenvelope.m
r9729 r9733 36 36 %Computing connectivity 37 37 if size(md.mesh.vertexconnectivity,1)~=md.mesh.numberofvertices, 38 md.mesh.vertexconnectivity=NodeConnectivity(md. elements,md.mesh.numberofvertices);38 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 39 39 end 40 40 if size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements, 41 md.mesh.elementconnectivity=ElementConnectivity(md. elements,md.mesh.vertexconnectivity);41 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 42 42 end 43 43 … … 47 47 if isfile, 48 48 %get flag list of elements and nodes inside the contour 49 nodein=ContourToMesh(md. elements,md.x,md.y,file,'node',1);50 elemin=(sum(nodein(md. elements),2)==size(md.elements,2));49 nodein=ContourToMesh(md.mesh.elements,md.x,md.y,file,'node',1); 50 elemin=(sum(nodein(md.mesh.elements),2)==size(md.mesh.elements,2)); 51 51 %modify element connectivity 52 52 elemout=find(~elemin); … … 60 60 pos=find(flags); 61 61 elemin(pos)=1; 62 nodein(md. elements(pos,:))=1;62 nodein(md.mesh.elements(pos,:))=1; 63 63 64 64 %modify element connectivity … … 87 87 els2=mesh.elementconnectivity(el1,find(mesh.elementconnectivity(el1,:))); 88 88 if length(els2)>1, 89 flag=intersect(md. elements(els2(1),:),md.elements(els2(2),:));90 nods1=md. elements(el1,:);89 flag=intersect(md.mesh.elements(els2(1),:),md.mesh.elements(els2(2),:)); 90 nods1=md.mesh.elements(el1,:); 91 91 nods1(find(nods1==flag))=[]; 92 92 segments(count,:)=[nods1 el1]; 93 93 94 ord1=find(nods1(1)==md. elements(el1,:));95 ord2=find(nods1(2)==md. elements(el1,:));94 ord1=find(nods1(1)==md.mesh.elements(el1,:)); 95 ord2=find(nods1(2)==md.mesh.elements(el1,:)); 96 96 97 97 %swap segment nodes if necessary … … 104 104 count=count+1; 105 105 else 106 nods1=md. elements(el1,:);107 flag=setdiff(nods1,md. elements(els2,:));106 nods1=md.mesh.elements(el1,:); 107 flag=setdiff(nods1,md.mesh.elements(els2,:)); 108 108 for j=1:3, 109 109 nods=nods1; nods(j)=[]; 110 110 if any(ismember(flag,nods)), 111 111 segments(count,:)=[nods el1]; 112 ord1=find(nods(1)==md. elements(el1,:));113 ord2=find(nods(2)==md. elements(el1,:));112 ord1=find(nods(1)==md.mesh.elements(el1,:)); 113 ord2=find(nods(2)==md.mesh.elements(el1,:)); 114 114 if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ), 115 115 temp=segments(count,1); -
issm/trunk/src/m/model/contourmassbalance.m
r9725 r9733 22 22 23 23 %get flag list of elements and nodes inside the contour 24 nodein=ContourToMesh(md. elements,md.x,md.y,file,'node',1);25 elemin=(sum(nodein(md. elements),2)==size(md.elements,2));24 nodein=ContourToMesh(md.mesh.elements,md.x,md.y,file,'node',1); 25 elemin=(sum(nodein(md.mesh.elements),2)==size(md.mesh.elements,2)); 26 26 27 27 %conputing Mass flux … … 36 36 flux = - md.materials.rho_ice*sum(L.*H.*(vx.*nx+vy.*ny)); %outflux is negative! 37 37 disp(['mass outflux on ' file ' = ' num2str(-flux/10^9) ' Gt/yr']); 38 areas=GetAreas(md. elements,md.x,md.y);38 areas=GetAreas(md.mesh.elements,md.x,md.y); 39 39 dhdt=flux/(sum(areas(find(elemin)))*md.materials.rho_ice); 40 40 disp(['dhdt on ' file ' (Flux method) = ' num2str(dhdt) ' m/yr']); -
issm/trunk/src/m/model/divergence.m
r9731 r9733 8 8 numberofelements=md.mesh.numberofelements; 9 9 numberofnodes=md.mesh.numberofvertices; 10 index=md. elements;10 index=md.mesh.elements; 11 11 x=md.x; y=md.y; z=md.z; 12 12 else -
issm/trunk/src/m/model/drivingstress.m
r9691 r9733 12 12 13 13 %Average thickness over elements 14 thickness_bar=(md.geometry.thickness(md. elements(:,1))+md.geometry.thickness(md.elements(:,2))+md.geometry.thickness(md.elements(:,3)))/3;14 thickness_bar=(md.geometry.thickness(md.mesh.elements(:,1))+md.geometry.thickness(md.mesh.elements(:,2))+md.geometry.thickness(md.mesh.elements(:,3)))/3; 15 15 16 16 px=md.materials.rho_ice*md.constants.g*thickness_bar.*sx; -
issm/trunk/src/m/model/extrude.m
r9731 r9733 82 82 elements3d=[]; 83 83 for i=1:numlayers-1, 84 elements3d=[elements3d;[md. elements+(i-1)*md.mesh.numberofvertices md.elements+i*md.mesh.numberofvertices]]; %Create the elements of the 3d mesh for the non extruded part84 elements3d=[elements3d;[md.mesh.elements+(i-1)*md.mesh.numberofvertices md.mesh.elements+i*md.mesh.numberofvertices]]; %Create the elements of the 3d mesh for the non extruded part 85 85 end 86 86 number_el3d=size(elements3d,1); %number of 3d nodes for the non extruded part of the mesh … … 105 105 md.mesh.x2d=md.x; 106 106 md.mesh.y2d=md.y; 107 md.mesh.elements2d=md. elements;107 md.mesh.elements2d=md.mesh.elements; 108 108 md.mesh.numberofelements2d=md.mesh.numberofelements; 109 109 md.mesh.numberofvertices2d=md.mesh.numberofvertices; … … 113 113 114 114 %Build global 3d mesh 115 md. elements=elements3d;115 md.mesh.elements=elements3d; 116 116 md.x=x3d; 117 117 md.y=y3d; -
issm/trunk/src/m/model/kmlimagesc.m
r9714 r9733 49 49 50 50 %regrid to lat,long grid 51 [x_m,y_m,field]=InterpFromMeshToGrid(md. elements,md.mesh.long,md.mesh.lat,field,minlong,maxlat,posting,posting,nlines,ncols,NaN);51 [x_m,y_m,field]=InterpFromMeshToGrid(md.mesh.elements,md.mesh.long,md.mesh.lat,field,minlong,maxlat,posting,posting,nlines,ncols,NaN); 52 52 field=flipud(field); 53 53 -
issm/trunk/src/m/model/mechanicalproperties.m
r9725 r9733 26 26 %initialization 27 27 numberofelements=md.mesh.numberofelements; 28 index=md. elements;28 index=md.mesh.elements; 29 29 summation=[1;1;1]; 30 30 directionsstress=zeros(numberofelements,4); -
issm/trunk/src/m/model/mesh/findsegments.m
r9729 r9733 19 19 error(' ''mesh.elementconnectivity'' option does not have thge right size.'); 20 20 else 21 mesh.elementconnectivity=ElementConnectivity(md. elements,md.mesh.vertexconnectivity);21 mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 22 22 end 23 23 end … … 43 43 44 44 %get nodes of el1 45 nods1=md. elements(el1,:);45 nods1=md.mesh.elements(el1,:); 46 46 47 47 %find the common vertices to the two elements connected to el1 (1 or 2) 48 flag=intersect(md. elements(els2(1),:),md.elements(els2(2),:));48 flag=intersect(md.mesh.elements(els2(1),:),md.mesh.elements(els2(2),:)); 49 49 50 50 %get the vertices on the boundary and build segment … … 53 53 54 54 %swap segment nodes if necessary 55 ord1=find(nods1(1)==md. elements(el1,:));56 ord2=find(nods1(2)==md. elements(el1,:));55 ord1=find(nods1(1)==md.mesh.elements(el1,:)); 56 ord2=find(nods1(2)==md.mesh.elements(el1,:)); 57 57 if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ), 58 58 temp=segments(count,1); … … 66 66 else 67 67 %get nodes of el1 68 nods1=md. elements(el1,:);68 nods1=md.mesh.elements(el1,:); 69 69 70 70 %find the vertex the el1 to not share with els2 71 flag=setdiff(nods1,md. elements(els2,:));71 flag=setdiff(nods1,md.mesh.elements(els2,:)); 72 72 73 73 for j=1:3, … … 78 78 79 79 %swap segment nodes if necessary 80 ord1=find(nods(1)==md. elements(el1,:));81 ord2=find(nods(2)==md. elements(el1,:));80 ord1=find(nods(1)==md.mesh.elements(el1,:)); 81 ord2=find(nods(2)==md.mesh.elements(el1,:)); 82 82 if ( (ord1==1 & ord2==2) | (ord1==2 & ord2==3) | (ord1==3 & ord2==1) ), 83 83 temp=segments(count,1); -
issm/trunk/src/m/model/mesh/meshadaptation.m
r9725 r9733 24 24 25 25 %initialization 26 index=md. elements;26 index=md.mesh.elements; 27 27 numberofnodes=md.mesh.numberofvertices; 28 28 numberofelements=md.mesh.numberofelements; -
issm/trunk/src/m/model/mesh/meshbamg.m
r9725 r9733 97 97 %set nodeonwater field 98 98 if ~strcmp(groundeddomain,'N/A'), 99 nodeground=ContourToMesh(md. elements,md.x,md.y,groundeddomain,'node',2);99 nodeground=ContourToMesh(md.mesh.elements,md.x,md.y,groundeddomain,'node',2); 100 100 md.nodeonwater=ones(md.mesh.numberofvertices,1); 101 101 md.nodeonwater(find(nodeground))=0; -
issm/trunk/src/m/model/mesh/meshconvert.m
r9732 r9733 14 14 x=md.x; 15 15 y=md.y; 16 index=md. elements;16 index=md.mesh.elements; 17 17 else 18 18 x=varargin{1}; … … 30 30 md.x=bamgmesh_out.Vertices(:,1); 31 31 md.y=bamgmesh_out.Vertices(:,2); 32 md. elements=bamgmesh_out.Triangles(:,1:3);33 md. edges=bamgmesh_out.IssmEdges;32 md.mesh.elements=bamgmesh_out.Triangles(:,1:3); 33 md.mesh.edges=bamgmesh_out.IssmEdges; 34 34 md.mesh.segments=bamgmesh_out.IssmSegments(:,1:3); 35 35 md.mesh.segmentmarkers=bamgmesh_out.IssmSegments(:,4); … … 37 37 %Fill in rest of fields: 38 38 md.mesh.dimension=2; 39 md.mesh.numberofelements=size(md. elements,1);39 md.mesh.numberofelements=size(md.mesh.elements,1); 40 40 md.mesh.numberofvertices=length(md.x); 41 md.mesh.numberofedges=size(md. edges,1);41 md.mesh.numberofedges=size(md.mesh.edges,1); 42 42 md.z=zeros(md.mesh.numberofvertices,1); 43 43 md.mesh.vertexonbed=ones(md.mesh.numberofvertices,1); -
issm/trunk/src/m/model/mesh/meshexprefine.m
r9451 r9733 35 35 36 36 %Read domainame file into a matlab array (x,y): 37 refinearea=ContourToMesh(md. elements,md.x,md.y,domainname,'element',1);38 aires=GetAreas(md. elements,md.x,md.y);37 refinearea=ContourToMesh(md.mesh.elements,md.x,md.y,domainname,'element',1); 38 aires=GetAreas(md.mesh.elements,md.x,md.y); 39 39 40 40 %flags areas within the domain -
issm/trunk/src/m/model/mesh/meshnodensity.m
r9729 r9733 25 25 %Mesh using TriMeshNoDensity 26 26 if strcmp(riftname,''), 27 [md. elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers]=TriMeshNoDensity(domainname);27 [md.mesh.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers]=TriMeshNoDensity(domainname); 28 28 else 29 29 [elements,x,y,segments,segmentmarkers]=TriMeshNoDensity(domainname,riftname); … … 49 49 md.x=x; 50 50 md.y=y; 51 md. elements=elements;51 md.mesh.elements=elements; 52 52 md.mesh.segments=segments; 53 53 md.mesh.segmentmarkers=segmentmarkers; … … 55 55 56 56 %Fill in rest of fields: 57 md.mesh.numberofelements=length(md. elements);57 md.mesh.numberofelements=length(md.mesh.elements); 58 58 md.mesh.numberofvertices=length(md.x); 59 59 md.z=zeros(md.mesh.numberofvertices,1); … … 65 65 66 66 %Now, build the connectivity tables for this mesh. 67 md.mesh.vertexconnectivity=NodeConnectivity(md. elements,md.mesh.numberofvertices);68 md.mesh.elementconnectivity=ElementConnectivity(md. elements,md.mesh.vertexconnectivity);67 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 68 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 69 69 70 70 %type of model -
issm/trunk/src/m/model/mesh/meshrefine.m
r9729 r9733 16 16 17 17 %Refine using TriMeshRefine 18 [md. elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers]=TriMeshRefine(md.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers,areas,'yes');18 [md.mesh.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers]=TriMeshRefine(md.mesh.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers,areas,'yes'); 19 19 20 20 %Fill in rest of fields: 21 md.mesh.numberofelements=length(md. elements);21 md.mesh.numberofelements=length(md.mesh.elements); 22 22 md.mesh.numberofvertices=length(md.x); 23 23 md.z=zeros(md.mesh.numberofvertices,1); … … 29 29 30 30 %Now, build the connectivity tables for this mesh. 31 md.mesh.vertexconnectivity=NodeConnectivity(md. elements,md.mesh.numberofvertices);32 md.mesh.elementconnectivity=ElementConnectivity(md. elements,md.mesh.vertexconnectivity);31 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 32 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 33 33 34 34 %type of model -
issm/trunk/src/m/model/mesh/meshyams.m
r9729 r9733 81 81 %set nodeonwater field 82 82 if ~strcmp(groundeddomain,'N/A'), 83 nodeground=ContourToMesh(md. elements,md.x,md.y,groundeddomain,'node',2);83 nodeground=ContourToMesh(md.mesh.elements,md.x,md.y,groundeddomain,'node',2); 84 84 md.nodeonwater=ones(md.mesh.numberofvertices,1); 85 85 md.nodeonwater(find(nodeground))=0; … … 95 95 %rifts, because the segments are used in YamsCall to freeze the rifts elements during refinement. 96 96 if md.rifts.numrifts, 97 md.mesh.vertexconnectivity=NodeConnectivity(md. elements,md.mesh.numberofvertices);98 md.mesh.elementconnectivity=ElementConnectivity(md. elements,md.mesh.vertexconnectivity);97 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 98 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 99 99 md.mesh.segments=findsegments(md); 100 100 md=meshyamsrecreateriftsegments(md); … … 106 106 107 107 %Now, build the connectivity tables for this mesh. 108 md.mesh.vertexconnectivity=NodeConnectivity(md. elements,md.mesh.numberofvertices);109 md.mesh.elementconnectivity=ElementConnectivity(md. elements,md.mesh.vertexconnectivity);108 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 109 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 110 110 111 111 %recreate segments … … 120 120 md.mesh.elementonsurface=ones(md.mesh.numberofelements,1); 121 121 if ~strcmp(groundeddomain,'N/A'), 122 nodeground=ContourToMesh(md. elements,md.x,md.y,groundeddomain,'node',2);122 nodeground=ContourToMesh(md.mesh.elements,md.x,md.y,groundeddomain,'node',2); 123 123 md.nodeonwater=ones(md.mesh.numberofvertices,1); 124 124 md.nodeonwater(find(nodeground))=0; -
issm/trunk/src/m/model/mesh/reorder.m
r9725 r9733 20 20 21 21 %update all fields 22 md. elements=tnewnodes(md.elements(newelements,:));22 md.mesh.elements=tnewnodes(md.mesh.elements(newelements,:)); 23 23 md.mesh.segments=[tnewnodes(md.mesh.segments(:,1)) tnewnodes(md.mesh.segments(:,2)) tnewelements(md.mesh.segments(:,3))]; 24 24 md.x=md.x(newnodes); -
issm/trunk/src/m/model/mesh/rifts/meshaddrifts.m
r9729 r9733 56 56 57 57 %plug md2 mesh into md mesh: 58 [md. elements,md.x,md.y,md.z,md.mesh.numberofelements,md.mesh.numberofvertices,elconv,nodeconv,elconv2,nodeconv2]=meshplug(md.elements,md.x,md.y,md.z,...59 md2. elements,md2.x,md2.y,md2.z,md2.extractednodes,md2.extractedelements,domain_index);58 [md.mesh.elements,md.x,md.y,md.z,md.mesh.numberofelements,md.mesh.numberofvertices,elconv,nodeconv,elconv2,nodeconv2]=meshplug(md.mesh.elements,md.x,md.y,md.z,... 59 md2.mesh.elements,md2.x,md2.y,md2.z,md2.extractednodes,md2.extractedelements,domain_index); 60 60 61 61 %update md2 rifts using elconv and nodeconv, and plug them into md: … … 87 87 88 88 %Now, build the connectivity tables for this mesh. 89 md.mesh.vertexconnectivity=NodeConnectivity(md. elements,md.mesh.numberofvertices);90 md.mesh.elementconnectivity=ElementConnectivity(md. elements,md.mesh.vertexconnectivity);89 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 90 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 91 91 92 92 %type of model -
issm/trunk/src/m/model/mesh/rifts/meshprocessoutsiderifts.m
r9729 r9733 12 12 13 13 %first, flag nodes that belong to the domain outline 14 flags=ContourToMesh(md. elements,md.x,md.y,domainoutline,'node',0);14 flags=ContourToMesh(md.mesh.elements,md.x,md.y,domainoutline,'node',0); 15 15 16 16 rift=md.rifts.riftstruct(i); … … 43 43 while flags(B), %as long as B does not belong to the domain outline, keep looking. 44 44 %detect elements on edge A,B: 45 edgeelements=ElementsFromEdge(md. elements,A,B);45 edgeelements=ElementsFromEdge(md.mesh.elements,A,B); 46 46 %rule out those we already detected 47 47 already_detected=ismember(edgeelements,elements); … … 50 50 elements=[elements;nextelement]; 51 51 %new B: 52 B=md. elements(nextelement,find(~ismember(md.elements(nextelement,:),[A B])));52 B=md.mesh.elements(nextelement,find(~ismember(md.mesh.elements(nextelement,:),[A B]))); 53 53 end 54 54 … … 61 61 62 62 %replace tip in elements 63 newelements=md. elements(elements,:);63 newelements=md.mesh.elements(elements,:); 64 64 pos=find(newelements==tip); 65 65 newelements(pos)=num; 66 md. elements(elements,:)=newelements;66 md.mesh.elements(elements,:)=newelements; 67 67 md.rifts.riftstruct(i).tips=[md.rifts.riftstruct(i).tips num]; 68 68 … … 73 73 pos=find(md.mesh.segments(segment_index,1:2)~=tip); 74 74 other_node=md.mesh.segments(segment_index,pos); 75 if ~isconnected(md. elements,other_node,tip),75 if ~isconnected(md.mesh.elements,other_node,tip), 76 76 pos=find(md.mesh.segments(segment_index,1:2)==tip); 77 77 md.mesh.segments(segment_index,pos)=num; … … 83 83 84 84 %Fill in rest of fields: 85 md.mesh.numberofelements=length(md. elements);85 md.mesh.numberofelements=length(md.mesh.elements); 86 86 md.mesh.numberofvertices=length(md.x); 87 87 md.z=zeros(md.mesh.numberofvertices,1); -
issm/trunk/src/m/model/mesh/rifts/meshprocessrifts.m
r9729 r9733 25 25 26 26 %Call MEX file 27 [md. elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers,md.rifts.riftstruct]=TriMeshProcessRifts(md.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers);27 [md.mesh.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers,md.rifts.riftstruct]=TriMeshProcessRifts(md.mesh.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers); 28 28 md.rifts 29 29 md.rifts.riftstruct … … 33 33 34 34 %Fill in rest of fields: 35 md.mesh.numberofelements=length(md. elements);35 md.mesh.numberofelements=length(md.mesh.elements); 36 36 md.mesh.numberofvertices=length(md.x); 37 37 md.z=zeros(md.mesh.numberofvertices,1); … … 51 51 52 52 %In case we have rifts that open up the domain outline, we need to open them: 53 flags=ContourToMesh(md. elements,md.x,md.y,domainoutline,'node',0);53 flags=ContourToMesh(md.mesh.elements,md.x,md.y,domainoutline,'node',0); 54 54 found=0; 55 55 for i=1:md.rifts.numrifts, … … 68 68 69 69 %get elements that are not correctly oriented in the correct direction: 70 aires=GetAreas(md. elements,md.x,md.y);70 aires=GetAreas(md.mesh.elements,md.x,md.y); 71 71 pos=find(aires<0); 72 md. elements(pos,:)=[md.elements(pos,2) md.elements(pos,1) md.elements(pos,3)];72 md.mesh.elements(pos,:)=[md.mesh.elements(pos,2) md.mesh.elements(pos,1) md.mesh.elements(pos,3)]; -
issm/trunk/src/m/model/mesh/setmesh.m
r9729 r9733 39 39 %Mesh using TriMesh 40 40 if strcmp(riftname,''), 41 [md. elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers]=TriMesh(domainname,area,'yes');41 [md.mesh.elements,md.x,md.y,md.mesh.segments,md.mesh.segmentmarkers]=TriMesh(domainname,area,'yes'); 42 42 else 43 43 [elements,x,y,segments,segmentmarkers]=TriMesh(domainname,riftname,area,'yes'); … … 63 63 md.x=x; 64 64 md.y=y; 65 md. elements=elements;65 md.mesh.elements=elements; 66 66 md.mesh.segments=segments; 67 67 md.mesh.segmentmarkers=segmentmarkers; … … 69 69 70 70 %Fill in rest of fields: 71 md.mesh.numberofelements=length(md. elements);71 md.mesh.numberofelements=length(md.mesh.elements); 72 72 md.mesh.numberofvertices=length(md.x); 73 73 md.z=zeros(md.mesh.numberofvertices,1); … … 79 79 80 80 %Now, build the connectivity tables for this mesh. 81 md.mesh.vertexconnectivity=NodeConnectivity(md. elements,md.mesh.numberofvertices);82 md.mesh.elementconnectivity=ElementConnectivity(md. elements,md.mesh.vertexconnectivity);81 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 82 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 83 83 84 84 %type of model -
issm/trunk/src/m/model/misfit.m
r9731 r9733 10 10 11 11 if md.mesh.dimension==2, 12 elements=md. elements;12 elements=md.mesh.elements; 13 13 x=md.x; 14 14 y=md.y; -
issm/trunk/src/m/model/modelextract.m
r9731 r9733 38 38 %kick out all elements with 3 dirichlets 39 39 spc_elem=find(~flag_elem); 40 spc_node=sort(unique(md1. elements(spc_elem,:)));40 spc_node=sort(unique(md1.mesh.elements(spc_elem,:))); 41 41 flag=ones(md1.numberofnodes,1); 42 42 flag(spc_node)=0; 43 pos=find(sum(flag(md1. elements),2)==0);43 pos=find(sum(flag(md1.mesh.elements),2)==0); 44 44 flag_elem(pos)=0; 45 45 46 46 %extracted elements and nodes lists 47 47 pos_elem=find(flag_elem); 48 pos_node=sort(unique(md1. elements(pos_elem,:)));48 pos_node=sort(unique(md1.mesh.elements(pos_elem,:))); 49 49 50 50 %keep track of some fields … … 63 63 64 64 %renumber the elements (some node won't exist anymore) 65 elements_1=md1. elements;65 elements_1=md1.mesh.elements; 66 66 elements_2=elements_1(pos_elem,:); 67 67 elements_2(:,1)=Pnode(elements_2(:,1)); … … 121 121 md2.numberofelements=numberofelements2; 122 122 md2.numberofnodes=numberofnodes2; 123 md2. elements=elements_2;123 md2.mesh.elements=elements_2; 124 124 125 125 %mesh.uppervertex mesh.lowervertex … … 161 161 162 162 %Edges 163 if size(md2. edges,2)>1, %do not use ~isnan because there are some NaNs...163 if size(md2.mesh.edges,2)>1, %do not use ~isnan because there are some NaNs... 164 164 %renumber first two columns 165 pos=find(~isnan(md2. edges(:,4)));166 md2. edges(: ,1)=Pnode(md2.edges(:,1));167 md2. edges(: ,2)=Pnode(md2.edges(:,2));168 md2. edges(: ,3)=Pelem(md2.edges(:,3));169 md2. edges(pos,4)=Pelem(md2.edges(pos,4));165 pos=find(~isnan(md2.mesh.edges(:,4))); 166 md2.mesh.edges(: ,1)=Pnode(md2.mesh.edges(:,1)); 167 md2.mesh.edges(: ,2)=Pnode(md2.mesh.edges(:,2)); 168 md2.mesh.edges(: ,3)=Pelem(md2.mesh.edges(:,3)); 169 md2.mesh.edges(pos,4)=Pelem(md2.mesh.edges(pos,4)); 170 170 %remove edges when the 2 vertices are not in the domain. 171 md2. edges=md2.edges(find(md2.edges(:,1) & md2.edges(:,2)),:);171 md2.mesh.edges=md2.mesh.edges(find(md2.mesh.edges(:,1) & md2.mesh.edges(:,2)),:); 172 172 %Replace all zeros by NaN in the last two columns; 173 pos=find(md2. edges(:,3)==0);174 md2. edges(pos,3)=NaN;175 pos=find(md2. edges(:,4)==0);176 md2. edges(pos,4)=NaN;173 pos=find(md2.mesh.edges(:,3)==0); 174 md2.mesh.edges(pos,3)=NaN; 175 pos=find(md2.mesh.edges(:,4)==0); 176 md2.mesh.edges(pos,4)=NaN; 177 177 %Invert NaN of the third column with last column (Also invert first two columns!!) 178 pos=find(isnan(md2. edges(:,3)));179 md2. edges(pos,3)=md2.edges(pos,4);180 md2. edges(pos,4)=NaN;181 values=md2. edges(pos,2);182 md2. edges(pos,2)=md2.edges(pos,1);183 md2. edges(pos,1)=values;178 pos=find(isnan(md2.mesh.edges(:,3))); 179 md2.mesh.edges(pos,3)=md2.mesh.edges(pos,4); 180 md2.mesh.edges(pos,4)=NaN; 181 values=md2.mesh.edges(pos,2); 182 md2.mesh.edges(pos,2)=md2.mesh.edges(pos,1); 183 md2.mesh.edges(pos,1)=values; 184 184 %Finally remove edges that do not belong to any element 185 pos=find(isnan(md2. edges(:,3)) & isnan(md2.edges(:,4)));186 md2. edges(pos,:)=[];185 pos=find(isnan(md2.mesh.edges(:,3)) & isnan(md2.mesh.edges(:,4))); 186 md2.mesh.edges(pos,:)=[]; 187 187 end 188 188 … … 203 203 %recreate segments 204 204 if md1.dim==2 205 md2.mesh.vertexconnectivity=NodeConnectivity(md2. elements,md2.numberofnodes);206 md2.mesh.elementconnectivity=ElementConnectivity(md2. elements,md2.mesh.vertexconnectivity);205 md2.mesh.vertexconnectivity=NodeConnectivity(md2.mesh.elements,md2.numberofnodes); 206 md2.mesh.elementconnectivity=ElementConnectivity(md2.mesh.elements,md2.mesh.vertexconnectivity); 207 207 md2.segments=contourenvelope(md2); 208 208 md2.mesh.vertexonboundary=zeros(numberofnodes2,1); md2.nodeonboundary(md2.segments(:,1:2))=1; … … 212 212 %Catch the elements that have not been extracted 213 213 orphans_elem=find(~flag_elem); 214 orphans_node=unique(md1. elements(orphans_elem,:))';214 orphans_node=unique(md1.mesh.elements(orphans_elem,:))'; 215 215 %Figure out which node are on the boundary between md2 and md1 216 216 nodestoflag1=intersect(orphans_node,pos_node); -
issm/trunk/src/m/model/partition/AreaAverageOntoPartition.m
r9731 r9733 16 16 md3d=md; 17 17 18 md. elements=md.mesh.elements2d;18 md.mesh.elements=md.mesh.elements2d; 19 19 md.x=md.mesh.x2d; 20 20 md.y=md.mesh.y2d; -
issm/trunk/src/m/model/partition/adjacency.m
r9729 r9733 8 8 % md.qmu.vertex_weight (double [nv], vertex weights) 9 9 10 indi=[md. elements(:,1);md.elements(:,2);md.elements(:,3)];11 indj=[md. elements(:,2);md.elements(:,3);md.elements(:,1)];10 indi=[md.mesh.elements(:,1);md.mesh.elements(:,2);md.mesh.elements(:,3)]; 11 indj=[md.mesh.elements(:,2);md.mesh.elements(:,3);md.mesh.elements(:,1)]; 12 12 values=1; 13 13 … … 16 16 17 17 %now, build vwgt: 18 areas=GetAreas(md. elements,md.x,md.y);18 areas=GetAreas(md.mesh.elements,md.x,md.y); 19 19 20 20 %get node connectivity 21 md.mesh.vertexconnectivity=NodeConnectivity(md. elements,md.mesh.numberofvertices);21 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 22 22 23 23 connectivity=md.mesh.vertexconnectivity(:,1:end-1); -
issm/trunk/src/m/model/partition/partitioner.m
r9731 r9733 34 34 %extrude the partition vector vertically. 35 35 md3d=md; %save for later 36 md. elements=md.mesh.elements2d;36 md.mesh.elements=md.mesh.elements2d; 37 37 md.x=md.mesh.x2d; 38 38 md.y=md.mesh.y2d; -
issm/trunk/src/m/model/plot/applyoptions.m
r9719 r9733 437 437 %flag edges of a partition 438 438 if exist(options,'partitionedges') 439 [xsegments ysegments]=flagedges(md. elements,md.x,md.y,md.qmu.partition);439 [xsegments ysegments]=flagedges(md.mesh.elements,md.x,md.y,md.qmu.partition); 440 440 xsegments=xsegments*getfieldvalue(options,'unit',1); 441 441 ysegments=ysegments*getfieldvalue(options,'unit',1); -
issm/trunk/src/m/model/plot/plot_edges.m
r9719 r9733 12 12 %process mesh and data 13 13 [x y z elements is2d isplanet]=processmesh(md,[],options); 14 edges=md. edges;14 edges=md.mesh.edges; 15 15 if isnan(edges) 16 16 error('edges in NaN') -
issm/trunk/src/m/model/plot/plot_rifts.m
r9619 r9733 30 30 tip=md.rifts.riftstruct(i).tips(3); 31 31 %who is tip connected to? 32 if isconnected(md. elements,penaltypairs(1,1),tip),32 if isconnected(md.mesh.elements,penaltypairs(1,1),tip), 33 33 normal(1)=penaltypairs(1,5); 34 34 normal(2)=penaltypairs(1,6); … … 37 37 end 38 38 39 if isconnected(md. elements,penaltypairs(1,2),tip),39 if isconnected(md.mesh.elements,penaltypairs(1,2),tip), 40 40 normal(1)=penaltypairs(1,5); 41 41 normal(2)=penaltypairs(1,6); … … 43 43 y(tip)=y(tip)+normal(2)*offset; 44 44 end 45 if isconnected(md. elements,penaltypairs(end,1),tip),45 if isconnected(md.mesh.elements,penaltypairs(end,1),tip), 46 46 normal(1)=penaltypairs(end,5); 47 47 normal(2)=penaltypairs(end,6); … … 49 49 y(tip)=y(tip)-normal(2)*offset; 50 50 end 51 if isconnected(md. elements,penaltypairs(end,2),tip),51 if isconnected(md.mesh.elements,penaltypairs(end,2),tip), 52 52 normal(1)=penaltypairs(end,5); 53 53 normal(2)=penaltypairs(end,6); -
issm/trunk/src/m/model/plot/plot_section.m
r9731 r9733 32 32 md3d=md; 33 33 if exist(options,'layer') 34 md.x=md.mesh.x2d; md.y=md.mesh.y2d; md. elements=md.mesh.elements2d; md.mesh.dimension=2;34 md.x=md.mesh.x2d; md.y=md.mesh.y2d; md.mesh.elements=md.mesh.elements2d; md.mesh.dimension=2; 35 35 end 36 36 -
issm/trunk/src/m/model/plot/plot_tensor_principalaxis.m
r9719 r9733 29 29 %take the center of each element if ~isonnode 30 30 if datatype==1, 31 x=mean(md.x(md. elements'))'; y=mean(md.y(md.elements'))'; z=mean(md.z(md.elements'))';31 x=mean(md.x(md.mesh.elements'))'; y=mean(md.y(md.mesh.elements'))'; z=mean(md.z(md.mesh.elements'))'; 32 32 end 33 33 -
issm/trunk/src/m/model/plot/processdata.m
r9725 r9733 123 123 pos=find(~flags); 124 124 if length(flags)==md.mesh.numberofvertices, 125 [pos2 dummy]=find(ismember(md. elements,pos));125 [pos2 dummy]=find(ismember(md.mesh.elements,pos)); 126 126 data(pos2,:)=NaN; 127 127 elseif length(flags)==md.mesh.numberofelements … … 155 155 data(pos,:)=NaN; 156 156 elseif length(flags)==md.mesh.numberofelements 157 data(md. elements(pos,:),:)=NaN;157 data(md.mesh.elements(pos,:),:)=NaN; 158 158 else 159 159 disp('plotmodel warning: mask length not supported yet (supported length are md.mesh.numberofvertices and md.mesh.numberofelements'); -
issm/trunk/src/m/model/plot/processmesh.m
r9731 r9733 38 38 39 39 elements2d=md.mesh.elements2d; 40 elements=md. elements;40 elements=md.mesh.elements; 41 41 42 42 %is it a 2d plot? -
issm/trunk/src/m/model/setflowequation.m
r9725 r9733 72 72 %1: Hutter elements 73 73 nodeonhutter=zeros(md.mesh.numberofvertices,1); 74 nodeonhutter(md. elements(find(hutterflag),:))=1;74 nodeonhutter(md.mesh.elements(find(hutterflag),:))=1; 75 75 md.flowequation.element_equation(find(hutterflag))=1; 76 76 77 77 %2: MacAyeal elements 78 78 nodeonmacayeal=zeros(md.mesh.numberofvertices,1); 79 nodeonmacayeal(md. elements(find(macayealflag),:))=1;79 nodeonmacayeal(md.mesh.elements(find(macayealflag),:))=1; 80 80 md.flowequation.bordermacayeal=nodeonmacayeal; 81 81 md.flowequation.element_equation(find(macayealflag))=2; … … 83 83 %3: Pattyn elements 84 84 nodeonpattyn=zeros(md.mesh.numberofvertices,1); 85 nodeonpattyn(md. elements(find(pattynflag),:))=1;85 nodeonpattyn(md.mesh.elements(find(pattynflag),:))=1; 86 86 md.flowequation.borderpattyn=nodeonpattyn; 87 87 md.flowequation.element_equation(find(pattynflag))=3; … … 91 91 if any(stokesflag), 92 92 nodeonstokes=zeros(md.mesh.numberofvertices,1); 93 nodeonstokes(md. elements(find(stokesflag),:))=1;93 nodeonstokes(md.mesh.elements(find(stokesflag),:))=1; 94 94 fullspcnodes=double((~isnan(md.diagnostic.spcvx)+~isnan(md.diagnostic.spcvy)+~isnan(md.diagnostic.spcvz))==3 | (nodeonpattyn & nodeonstokes)); %find all the nodes on the boundary of the domain without icefront 95 fullspcelems=double(sum(fullspcnodes(md. elements),2)==6); %find all the nodes on the boundary of the domain without icefront95 fullspcelems=double(sum(fullspcnodes(md.mesh.elements),2)==6); %find all the nodes on the boundary of the domain without icefront 96 96 stokesflag(find(fullspcelems))=0; 97 97 end 98 98 nodeonstokes=zeros(md.mesh.numberofvertices,1); 99 nodeonstokes(md. elements(find(stokesflag),:))=1;99 nodeonstokes(md.mesh.elements(find(stokesflag),:))=1; 100 100 md.flowequation.borderstokes=nodeonstokes; 101 101 md.flowequation.element_equation(find(stokesflag))=4; … … 105 105 if any(pattynflag), %fill with pattyn 106 106 pattynflag(~stokesflag)=1; 107 nodeonpattyn(md. elements(find(pattynflag),:))=1;107 nodeonpattyn(md.mesh.elements(find(pattynflag),:))=1; 108 108 md.flowequation.borderpattyn=nodeonpattyn; 109 109 md.flowequation.element_equation(find(~stokesflag))=3; 110 110 elseif any(macayealflag), %fill with macayeal 111 111 macayealflag(~stokesflag)=1; 112 nodeonmacayeal(md. elements(find(macayealflag),:))=1;112 nodeonmacayeal(md.mesh.elements(find(macayealflag),:))=1; 113 113 md.flowequation.bordermacayeal=nodeonmacayeal; 114 114 md.flowequation.element_equation(find(~stokesflag))=2; … … 143 143 nodeonmacayealpattyn(find(nodeonmacayeal & nodeonpattyn))=1; 144 144 %Macayeal elements in contact with this layer become MacAyealPattyn elements 145 matrixelements=ismember(md. elements,find(nodeonmacayealpattyn));145 matrixelements=ismember(md.mesh.elements,find(nodeonmacayealpattyn)); 146 146 commonelements=sum(matrixelements,2)~=0; 147 147 commonelements(find(pattynflag))=0; %only one layer: the elements previously in macayeal … … 150 150 macayealpattynflag(find(commonelements))=1; 151 151 nodeonmacayeal=zeros(md.mesh.numberofvertices,1); 152 nodeonmacayeal(md. elements(find(macayealflag),:))=1;152 nodeonmacayeal(md.mesh.elements(find(macayealflag),:))=1; 153 153 md.flowequation.bordermacayeal=nodeonmacayeal; 154 154 … … 157 157 158 158 %Now recreate nodeonmacayeal and nodeonmacayealpattyn 159 nodeonmacayealpattyn(md. elements(find(macayealpattynflag),:))=1;159 nodeonmacayealpattyn(md.mesh.elements(find(macayealpattynflag),:))=1; 160 160 elseif any(pattynflag) & any(stokesflag), %coupling pattyn stokes 161 161 %Find node at the border 162 162 nodeonpattynstokes(find(nodeonpattyn & nodeonstokes))=1; 163 163 %Stokes elements in contact with this layer become PattynStokes elements 164 matrixelements=ismember(md. elements,find(nodeonpattynstokes));164 matrixelements=ismember(md.mesh.elements,find(nodeonpattynstokes)); 165 165 commonelements=sum(matrixelements,2)~=0; 166 166 commonelements(find(pattynflag))=0; %only one layer: the elements previously in macayeal … … 169 169 pattynstokesflag(find(commonelements))=1; 170 170 nodeonstokes=zeros(md.mesh.numberofvertices,1); 171 nodeonstokes(md. elements(find(stokesflag),:))=1;171 nodeonstokes(md.mesh.elements(find(stokesflag),:))=1; 172 172 md.flowequation.borderstokes=nodeonstokes; 173 173 … … 177 177 %Now recreate nodeonpattynstokes 178 178 nodeonpattynstokes=zeros(md.mesh.numberofvertices,1); 179 nodeonpattynstokes(md. elements(find(pattynstokesflag),:))=1;179 nodeonpattynstokes(md.mesh.elements(find(pattynstokesflag),:))=1; 180 180 elseif any(stokesflag) & any(macayealflag), 181 181 %Find node at the border 182 182 nodeonmacayealstokes(find(nodeonmacayeal & nodeonstokes))=1; 183 183 %Stokes elements in contact with this layer become MacAyealStokes elements 184 matrixelements=ismember(md. elements,find(nodeonmacayealstokes));184 matrixelements=ismember(md.mesh.elements,find(nodeonmacayealstokes)); 185 185 commonelements=sum(matrixelements,2)~=0; 186 186 commonelements(find(macayealflag))=0; %only one layer: the elements previously in macayeal … … 189 189 macayealstokesflag(find(commonelements))=1; 190 190 nodeonstokes=zeros(md.mesh.numberofvertices,1); 191 nodeonstokes(md. elements(find(stokesflag),:))=1;191 nodeonstokes(md.mesh.elements(find(stokesflag),:))=1; 192 192 md.flowequation.borderstokes=nodeonstokes; 193 193 … … 197 197 %Now recreate nodeonmacayealstokes 198 198 nodeonmacayealstokes=zeros(md.mesh.numberofvertices,1); 199 nodeonmacayealstokes(md. elements(find(macayealstokesflag),:))=1;199 nodeonmacayealstokes(md.mesh.elements(find(macayealstokesflag),:))=1; 200 200 elseif any(stokesflag) & any(hutterflag), 201 201 error('type of coupling not supported yet'); -
issm/trunk/src/m/model/setmask.m
r9725 r9733 23 23 x=md.x; 24 24 y=md.y; 25 elements=md. elements;25 elements=md.mesh.elements; 26 26 27 27 %Assign elementonfloatingice, elementongroundedice, vertexongroundedice and vertexonfloatingice. Only change at your own peril! This is synchronized heavily with the GroundingLineMigration module. {{{1 … … 37 37 vertexonfloatingice=zeros(md.mesh.numberofvertices,1); 38 38 vertexongroundedice=zeros(md.mesh.numberofvertices,1); 39 vertexongroundedice(md. elements(find(elementongroundedice),:))=1;39 vertexongroundedice(md.mesh.elements(find(elementongroundedice),:))=1; 40 40 vertexonfloatingice(find(~vertexongroundedice))=1; 41 41 %}}} -
issm/trunk/src/m/model/setmask2.m
r9729 r9733 11 11 x=md.x; 12 12 y=md.y; 13 elements=md. elements;13 elements=md.mesh.elements; 14 14 15 15 %recover elements and nodes on land. … … 22 22 elementonland=landname; 23 23 vertexonland=zeros(md.mesh.numberofvertices,1); 24 vertexonland(md. elements(find(elementonland),:))=1;24 vertexonland(md.mesh.elements(find(elementonland),:))=1; 25 25 else 26 26 error('Invalid area option option'); … … 29 29 %Now, build the connectivity tables for this mesh. 30 30 if size(md.mesh.vertexconnectivity,1)~=md.mesh.numberofvertices, 31 md.mesh.vertexconnectivity=NodeConnectivity(md. elements,md.mesh.numberofvertices);31 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 32 32 end 33 33 if size(md.mesh.elementconnectivity,1)~=md.mesh.numberofelements, 34 md.mesh.elementconnectivity=ElementConnectivity(md. elements,md.mesh.vertexconnectivity);34 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 35 35 end 36 36 37 37 %any element with 3 nodes on land should be on land: 38 38 elementsonwater=find(~elementonland); 39 wrongelements=elementsonwater(find(( vertexonland(md. elements(elementsonwater,1)) + vertexonland(md.elements(elementsonwater,2)) + vertexonland(md.elements(elementsonwater,3)) ...39 wrongelements=elementsonwater(find(( vertexonland(md.mesh.elements(elementsonwater,1)) + vertexonland(md.mesh.elements(elementsonwater,2)) + vertexonland(md.mesh.elements(elementsonwater,3)) ... 40 40 )==3)); 41 41 elementonland(wrongelements)=1; … … 45 45 weights={[1;1;1],[2;1;1],[1;2;1],[1;1;2]}; 46 46 for i=1:length(weights), 47 xelem=x(md. elements)*weights{i}/sum(weights{i});48 yelem=y(md. elements)*weights{i}/sum(weights{i});47 xelem=x(md.mesh.elements)*weights{i}/sum(weights{i}); 48 yelem=y(md.mesh.elements)*weights{i}/sum(weights{i}); 49 49 end 50 50 baryonland=ContourToNodes(xelem,yelem,landname,1); … … 79 79 elementonfloatingice=double((elementonfloatingice & ~elementongroundedice)); 80 80 elementongroundedice=double(~elementonfloatingice); 81 vertexonfloatingice(md. elements(find(elementonfloatingice),:))=1;82 vertexongroundedice(md. elements(find(elementongroundedice),:))=1;81 vertexonfloatingice(md.mesh.elements(find(elementonfloatingice),:))=1; 82 vertexongroundedice(md.mesh.elements(find(elementongroundedice),:))=1; 83 83 84 84 %now correct, so that none of the floatingice and groundedice elements and nodes are in the water. -
issm/trunk/src/m/model/shear2d.m
r9684 r9733 8 8 % s=shear2d(md); 9 9 10 [alpha beta]=GetNodalFunctionsCoeff(md. elements,md.x,md.y);10 [alpha beta]=GetNodalFunctionsCoeff(md.mesh.elements,md.x,md.y); 11 11 12 12 summation=[1;1;1]; 13 sx=(md.initialization.vx(md. elements).*alpha)*summation;14 uy=(md.initialization.vx(md. elements).*beta)*summation;15 vx=(md.initialization.vy(md. elements).*alpha)*summation;16 sy=(md.initialization.vy(md. elements).*beta)*summation;13 sx=(md.initialization.vx(md.mesh.elements).*alpha)*summation; 14 uy=(md.initialization.vx(md.mesh.elements).*beta)*summation; 15 vx=(md.initialization.vy(md.mesh.elements).*alpha)*summation; 16 sy=(md.initialization.vy(md.mesh.elements).*beta)*summation; 17 17 sxy=(uy+vx)/2; 18 18 s=sqrt(sx.^2+sy.^2+sxy.^2+sx.*sy); -
issm/trunk/src/m/model/sia.m
r9719 r9733 17 17 %Average thickness and B over all elements. 18 18 summer=[1;1;1]; 19 hel=md.geometry.thickness(md. elements)*summer/3;20 Bel=md.B(md. elements)*summer/3;19 hel=md.geometry.thickness(md.mesh.elements)*summer/3; 20 Bel=md.B(md.mesh.elements)*summer/3; 21 21 22 22 Ael=Bel.^(-3); -
issm/trunk/src/m/model/slope.m
r9731 r9733 9 9 numberofelements=md.mesh.numberofelements; 10 10 numberofnodes=md.mesh.numberofvertices; 11 index=md. elements;11 index=md.mesh.elements; 12 12 x=md.x; y=md.y; 13 13 else -
issm/trunk/src/m/model/thicknessevolution.m
r9725 r9733 17 17 vx=md.initialization.vx; 18 18 vy=md.initialization.vy; 19 index=md. elements;19 index=md.mesh.elements; 20 20 21 21 %compute nodal functions coefficients N(x,y)=alpha x + beta y + gamma 22 [alpha beta]=GetNodalFunctionsCoeff(md. elements,md.x,md.y);22 [alpha beta]=GetNodalFunctionsCoeff(md.mesh.elements,md.x,md.y); 23 23 24 24 %compute dhdt=div(Hu) -
issm/trunk/src/m/planet/planetmixedmesh.m
r9725 r9733 86 86 87 87 88 md. elements=quads;88 md.mesh.elements=quads; 89 89 md.x=x; 90 90 md.y=y; … … 95 95 96 96 md.mesh.numberofvertices=length(md.x); 97 md.mesh.numberofelements=size(md. elements,1);97 md.mesh.numberofelements=size(md.mesh.elements,1); 98 98 99 99 md.mesh.dimension=3; -
issm/trunk/src/m/planet/planettrimesh.m
r9725 r9733 9 9 md.y=results.vertices(:,2); 10 10 md.z=results.vertices(:,3); 11 md. elements=results.faces;11 md.mesh.elements=results.faces; 12 12 13 13 md.r=sqrt(md.x.^2+md.y.^2+md.z.^2); … … 16 16 17 17 md.mesh.numberofvertices=length(md.x); 18 md.mesh.numberofelements=size(md. elements,1);18 md.mesh.numberofelements=size(md.mesh.elements,1); 19 19 20 20 md.mesh.dimension=3; -
issm/trunk/src/m/qmu/importancefactors.m
r9725 r9733 53 53 %if numel(factors)==md.mesh.numberofvertices, 54 54 % %get areas for each vertex. 55 % aire=GetAreas(md. elements,md.x,md.y);55 % aire=GetAreas(md.mesh.elements,md.x,md.y); 56 56 % num_elements_by_node=md.nodeconnectivity(:,end); 57 57 % grid_aire=zeros(md.mesh.numberofvertices,1); -
issm/trunk/src/m/qmu/process_qmu_response_data.m
r9650 r9733 47 47 48 48 for i=1:num_mass_flux, 49 md.qmu.mass_flux_segments{i}=MeshProfileIntersection(md. elements,md.x,md.y,[md.qmu.mass_flux_profile_directory '/' md.qmu.mass_flux_profiles{i}]);49 md.qmu.mass_flux_segments{i}=MeshProfileIntersection(md.mesh.elements,md.x,md.y,[md.qmu.mass_flux_profile_directory '/' md.qmu.mass_flux_profiles{i}]); 50 50 end 51 51 -
issm/trunk/src/m/solutions/flaim.m
r9714 r9733 80 80 81 81 display('Calling KMLMeshWrite.'); 82 KMLMeshWrite(md.miscellaneous.name,md.miscellaneous.notes,md. elements,md.nodeconnectivity,md.mesh.lat,md.mesh.long,md.qmu.partition,md.flaim.criterion,options.cmap,filekml);82 KMLMeshWrite(md.miscellaneous.name,md.miscellaneous.notes,md.mesh.elements,md.nodeconnectivity,md.mesh.lat,md.mesh.long,md.qmu.partition,md.flaim.criterion,options.cmap,filekml); 83 83 % for testing 84 84 %filekml='issm-split-geikie1-targets.kml'; -
issm/trunk/src/m/utils/BC/SetIceShelfBC.m
r9729 r9733 19 19 icefrontfile=varargin{1}; 20 20 if ~exist(icefrontfile), error(['SetIceShelfBC error message: ice front file ' icefrontfile ' not found']); end 21 nodeinsideicefront=ContourToMesh(md. elements,md.x,md.y,icefrontfile,'node',2);21 nodeinsideicefront=ContourToMesh(md.mesh.elements,md.x,md.y,icefrontfile,'node',2); 22 22 nodeonicefront=double(md.mesh.vertexonboundary & nodeinsideicefront); 23 23 elseif nargin==1, -
issm/trunk/src/m/utils/BC/SetMarineIceSheetBC.m
r9729 r9733 23 23 error(['SetMarineIceSheetBC error message: ice front file ' icefrontfile ' not found']); 24 24 end 25 nodeinsideicefront=ContourToMesh(md. elements,md.x,md.y,icefrontfile,'node',2);25 nodeinsideicefront=ContourToMesh(md.mesh.elements,md.x,md.y,icefrontfile,'node',2); 26 26 vertexonicefront=double(md.mesh.vertexonboundary & nodeinsideicefront); 27 27 else 28 28 %Guess where the ice front is 29 29 vertexonfloatingice=zeros(md.mesh.numberofvertices,1); 30 vertexonfloatingice(md. elements(find(md.mask.elementonfloatingice),:))=1;30 vertexonfloatingice(md.mesh.elements(find(md.mask.elementonfloatingice),:))=1; 31 31 vertexonicefront=double(md.mesh.vertexonboundary & vertexonfloatingice); 32 32 end -
issm/trunk/src/m/utils/Exp/clicktoflowline.m
r9681 r9733 4 4 % Usage: clicktoflowline(index,x,y,u,v,x0,y0,filename) 5 5 % 6 % Ex: clicktoflowline(md. elements,md.x,md.y,md.inversion.vx_obs,md.inversion.vy_obs,'flowline1.exp')6 % Ex: clicktoflowline(md.mesh.elements,md.x,md.y,md.inversion.vx_obs,md.inversion.vy_obs,'flowline1.exp') 7 7 8 8 -
issm/trunk/src/m/utils/Exp/downstreamflowlines.m
r9684 r9733 10 10 % 11 11 % Example: 12 % flowpath=downstreamflowlines(md. elements,md.x,md.y,md.vx,md.initialization.vy,x0,y0)12 % flowpath=downstreamflowlines(md.mesh.elements,md.x,md.y,md.vx,md.initialization.vy,x0,y0) 13 13 14 14 %check input size -
issm/trunk/src/m/utils/Exp/flowlines.m
r9684 r9733 10 10 % 11 11 % Example: 12 % flowpath=flowlines(md. elements,md.x,md.y,md.vx,md.initialization.vy,x0,y0)12 % flowpath=flowlines(md.mesh.elements,md.x,md.y,md.vx,md.initialization.vy,x0,y0) 13 13 14 14 %check input size -
issm/trunk/src/m/utils/Geometry/FlagElements.m
r9725 r9733 34 34 [xlim,ylim]=basinzoom('basin',region); 35 35 flag_nodes=double(md.x<xlim(2) & md.x>xlim(1) & md.y<ylim(2) & md.y>ylim(1)); 36 flag=prod(flag_nodes(md. elements),2);36 flag=prod(flag_nodes(md.mesh.elements),2); 37 37 else 38 38 %ok, flag elements 39 flag=ContourToMesh(md. elements(:,1:3),md.x,md.y,region,'element',1);39 flag=ContourToMesh(md.mesh.elements(:,1:3),md.x,md.y,region,'element',1); 40 40 end 41 41 end -
issm/trunk/src/m/utils/Interp/FillHole.m
r9691 r9733 6 6 % 7 7 % Example: 8 % md.geometry.surface=FillHole(md. elements,x,md.y,md.geometry.surface)8 % md.geometry.surface=FillHole(md.mesh.elements,x,md.y,md.geometry.surface) 9 9 % 10 10 -
issm/trunk/src/m/utils/Mesh/BamgCall.m
r9725 r9733 20 20 %Compute Hessian 21 21 t1=clock; fprintf('%s',' computing Hessian...'); 22 hessian=ComputeHessian(md. elements,md.x,md.y,field,'node');22 hessian=ComputeHessian(md.mesh.elements,md.x,md.y,field,'node'); 23 23 t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']); 24 24 … … 54 54 %Triangles 55 55 fprintf(fid,'\n\n%s\n%i\n\n','Triangles',md.mesh.numberofelements); 56 fprintf(fid,'%i %i %i %i\n',[md. elements ones(md.mesh.numberofelements,1)]');56 fprintf(fid,'%i %i %i %i\n',[md.mesh.elements ones(md.mesh.numberofelements,1)]'); 57 57 numberofelements1=md.mesh.numberofelements; 58 58 … … 71 71 md.y=A.y; 72 72 md.z=zeros(A.nods,1); 73 md. elements=A.index;73 md.mesh.elements=A.index; 74 74 md.mesh.numberofvertices=A.nods; 75 75 md.mesh.numberofelements=A.nels; -
issm/trunk/src/m/utils/Mesh/BamgCallFromMetric.m
r9725 r9733 35 35 %Triangles 36 36 fprintf(fid,'\n\n%s\n%i\n\n','Triangles',md.mesh.numberofelements); 37 fprintf(fid,'%i %i %i %i\n',[md. elements ones(md.mesh.numberofelements,1)]');37 fprintf(fid,'%i %i %i %i\n',[md.mesh.elements ones(md.mesh.numberofelements,1)]'); 38 38 numberofelements1=md.mesh.numberofelements; 39 39 … … 52 52 md.y=A.y; 53 53 md.z=zeros(A.nods,1); 54 md. elements=A.index;54 md.mesh.elements=A.index; 55 55 md.mesh.numberofvertices=A.nods; 56 56 md.mesh.numberofelements=A.nels; -
issm/trunk/src/m/utils/Mesh/ComputeHessian.m
r9681 r9733 10 10 % 11 11 % Example: 12 % hessian=ComputeHessian(md. elements,md.x,md.y,md.inversion.vel_obs,'node')12 % hessian=ComputeHessian(md.mesh.elements,md.x,md.y,md.inversion.vel_obs,'node') 13 13 14 14 %some variables -
issm/trunk/src/m/utils/Mesh/ElementsFromEdge.m
r3258 r9733 4 4 % Usage: edgeelements=ElementsFromEdge(elements,A,B) 5 5 % 6 % Eg: edgeelements=ElementsFromEdge(md. elements,tip1,tip2)6 % Eg: edgeelements=ElementsFromEdge(md.mesh.elements,tip1,tip2) 7 7 % 8 8 % -
issm/trunk/src/m/utils/Mesh/GetAreas.m
r2890 r9733 10 10 % 11 11 % Examples: 12 % areas =GetAreas(md. elements,md.x,md.y);13 % volumes=GetAreas(md. elements,md.x,md.y,md.z);12 % areas =GetAreas(md.mesh.elements,md.x,md.y); 13 % volumes=GetAreas(md.mesh.elements,md.x,md.y,md.z); 14 14 15 15 %get number of elements and number of nodes -
issm/trunk/src/m/utils/Mesh/GetCharacteristicLength.m
r1269 r9733 9 9 % 10 10 % Examples: 11 % length =GetCharacteristicLength(md. elements,md.x,md.y);12 % length =GetCharacteristicLength(md. elements,md.x,md.y,md.z);11 % length =GetCharacteristicLength(md.mesh.elements,md.x,md.y); 12 % length =GetCharacteristicLength(md.mesh.elements,md.x,md.y,md.z); 13 13 14 14 -
issm/trunk/src/m/utils/Mesh/GetNodalFunctionsCoeff.m
r1235 r9733 12 12 % 13 13 % Example: 14 % [alpha beta gamma]=GetNodalFunctionsCoeff(md. elements,md.x,md.y);14 % [alpha beta gamma]=GetNodalFunctionsCoeff(md.mesh.elements,md.x,md.y); 15 15 16 16 %make columns out of x and y -
issm/trunk/src/m/utils/Mesh/MeshQuality.m
r9725 r9733 6 6 7 7 %Get some variables from the model 8 index=md. elements;8 index=md.mesh.elements; 9 9 x=md.x; 10 10 y=md.y; -
issm/trunk/src/m/utils/Mesh/ProfileProjectOntoMesh.m
r9729 r9733 8 8 9 9 %make a curve out of the mesh, to use the intersections routine. 10 rows=[md. elements md.elements(:,1)]'; rows=rows(:);10 rows=[md.mesh.elements md.mesh.elements(:,1)]'; rows=rows(:); 11 11 x=md.x(rows); 12 12 y=md.y(rows); … … 48 48 49 49 %now, for each node, figure out which element it belongs to. 50 node_in_element=NodeInElement(newx,newy,md. elements,md.x,md.y,md.mesh.vertexconnectivity);50 node_in_element=NodeInElement(newx,newy,md.mesh.elements,md.x,md.y,md.mesh.vertexconnectivity); 51 51 52 52 % eliminate nodes that don't fall in any element -
issm/trunk/src/m/utils/Mesh/YamsCall.m
r9725 r9733 20 20 %Compute Hessian 21 21 t1=clock; fprintf('%s',' computing Hessian...'); 22 hessian=ComputeHessian(md. elements,md.x,md.y,field,'node');22 hessian=ComputeHessian(md.mesh.elements,md.x,md.y,field,'node'); 23 23 t2=clock;fprintf('%s\n',[' done (' num2str(etime(t2,t1)) ' seconds)']); 24 24 … … 51 51 %Triangles 52 52 fprintf(fid,'\n\n%s\n%i\n\n','Triangles',md.mesh.numberofelements); 53 fprintf(fid,'%i %i %i %i\n',[md. elements zeros(md.mesh.numberofelements,1)]');53 fprintf(fid,'%i %i %i %i\n',[md.mesh.elements zeros(md.mesh.numberofelements,1)]'); 54 54 numberofelements1=md.mesh.numberofelements; 55 55 … … 91 91 md.y=Coor(:,2); 92 92 md.z=zeros(size(Coor,1),1); 93 md. elements=Tria;93 md.mesh.elements=Tria; 94 94 md.mesh.numberofvertices=size(Coor,1); 95 95 md.mesh.numberofelements=size(Tria,1); -
issm/trunk/src/m/utils/Mesh/argusmesh.m
r9729 r9733 77 77 78 78 %Finally, use model constructor to build a complete model: 79 md. elements=elements;79 md.mesh.elements=elements; 80 80 md.x=x; 81 81 md.y=y; 82 82 md.z=z; 83 83 md.mesh.numberofvertices=size(md.x,1); 84 md.mesh.numberofelements=size(md. elements,1);84 md.mesh.numberofelements=size(md.mesh.elements,1); 85 85 md.mesh.vertexonbed=ones(md.mesh.numberofvertices,1); 86 86 md.mesh.vertexonsurface=ones(md.mesh.numberofvertices,1); -
issm/trunk/src/m/utils/Mesh/squaremesh.m
r9729 r9733 65 65 66 66 %plug elements 67 md. elements=index;67 md.mesh.elements=index; 68 68 md.mesh.segments=segments; 69 69 md.mesh.numberofelements=nel; … … 72 72 73 73 %Now, build the connectivity tables for this mesh. 74 md.mesh.vertexconnectivity=NodeConnectivity(md. elements,md.mesh.numberofvertices);75 md.mesh.elementconnectivity=ElementConnectivity(md. elements,md.mesh.vertexconnectivity);74 md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices); 75 md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity); 76 76 77 77 %plug other field -
issm/trunk/src/m/utils/Numerics/cfl_step.m
r9725 r9733 15 15 end 16 16 17 index=md. elements;17 index=md.mesh.elements; 18 18 edgex=max(md.x(index),[],2)-min(md.x(index),[],2); 19 19 edgey=max(md.y(index),[],2)-min(md.y(index),[],2); -
issm/trunk/test/Miscellaneous/Bump/Bump.par
r9725 r9733 17 17 %Take care of iceshelves: no basal drag 18 18 pos=find(md.mask.elementonfloatingice); 19 md.drag_coefficient(md. elements(pos,:))=0;19 md.drag_coefficient(md.mesh.elements(pos,:))=0; 20 20 md.drag_p=ones(md.mesh.numberofelements,1); 21 21 md.drag_q=ones(md.mesh.numberofelements,1); -
issm/trunk/test/Miscellaneous/GJM_test1/SquareShelf.par
r9725 r9733 20 20 md.drag_type=2; 21 21 md.drag_coefficient=20*ones(md.mesh.numberofvertices,1); 22 md.drag_coefficient(md. elements(pos,:))=0;22 md.drag_coefficient(md.mesh.elements(pos,:))=0; 23 23 md.drag_p=ones(md.mesh.numberofelements,1); 24 24 md.drag_q=ones(md.mesh.numberofelements,1); -
issm/trunk/test/Miscellaneous/connectivity/Square.par
r9725 r9733 19 19 %Take care of iceshelves: no basal drag 20 20 pos=find(md.mask.elementonfloatingice); 21 md.drag_coefficient(md. elements(pos,:))=0;21 md.drag_coefficient(md.mesh.elements(pos,:))=0; 22 22 md.drag_p=ones(md.mesh.numberofelements,1); 23 23 md.drag_q=ones(md.mesh.numberofelements,1); -
issm/trunk/test/NightlyRun/test1102.m
r9729 r9733 18 18 % %Find elements at the corner and extract model 19 19 % posnodes=find((md.x==0 | md.x==max(md.x)) & (md.y==0 | md.y==max(md.y))); 20 % [a,b]=find(ismember(md. elements,posnodes));20 % [a,b]=find(ismember(md.mesh.elements,posnodes)); 21 21 % elements=ones(md.mesh.numberofelements,1); 22 22 % elements(a)=0; -
issm/trunk/test/NightlyRun/test1205.m
r9729 r9733 51 51 set(gcf,'Position',[1 1 1580 1150]) 52 52 subplot(2,2,1) 53 p=patch('Faces',md. elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',...53 p=patch('Faces',md.mesh.elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',... 54 54 vel,'FaceColor','interp','EdgeColor','none'); 55 55 title('Modelled velocity','FontSize',14,'FontWeight','bold') … … 58 58 59 59 subplot(2,2,2) 60 p=patch('Faces',md. elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',...60 p=patch('Faces',md.mesh.elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',... 61 61 vel_obs,'FaceColor','interp','EdgeColor','none'); 62 62 title('Analytical velocity','FontSize',14,'FontWeight','bold') … … 76 76 77 77 subplot(2,2,4) 78 p=patch('Faces',md. elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',...78 p=patch('Faces',md.mesh.elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',... 79 79 abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none'); 80 80 title('Relative misfit [%]','FontSize',14,'FontWeight','bold') -
issm/trunk/test/NightlyRun/test1206.m
r9729 r9733 50 50 figure(1) 51 51 subplot(2,2,1) 52 p=patch('Faces',md. elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',...52 p=patch('Faces',md.mesh.elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',... 53 53 vel,'FaceColor','interp','EdgeColor','none'); 54 54 title('Modelled velocity','FontSize',14,'FontWeight','bold') … … 57 57 58 58 subplot(2,2,2) 59 p=patch('Faces',md. elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',...59 p=patch('Faces',md.mesh.elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',... 60 60 vel_obs,'FaceColor','interp','EdgeColor','none'); 61 61 title('Analytical velocity','FontSize',14,'FontWeight','bold') … … 75 75 76 76 subplot(2,2,4) 77 p=patch('Faces',md. elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',...77 p=patch('Faces',md.mesh.elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',... 78 78 abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none'); 79 79 title('Relative misfit [%]','FontSize',14,'FontWeight','bold') -
issm/trunk/test/NightlyRun/test1207.m
r9729 r9733 50 50 figure(1) 51 51 subplot(2,2,1) 52 p=patch('Faces',md. elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',...52 p=patch('Faces',md.mesh.elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',... 53 53 vel,'FaceColor','interp','EdgeColor','none'); 54 54 title('Modelled velocity','FontSize',14,'FontWeight','bold') … … 57 57 58 58 subplot(2,2,2) 59 p=patch('Faces',md. elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',...59 p=patch('Faces',md.mesh.elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',... 60 60 vel_obs,'FaceColor','interp','EdgeColor','none'); 61 61 title('Analytical velocity','FontSize',14,'FontWeight','bold') … … 75 75 76 76 subplot(2,2,4) 77 p=patch('Faces',md. elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',...77 p=patch('Faces',md.mesh.elements2d,'Vertices',[md.x2d md.y2d],'FaceVertexCData',... 78 78 abs(vel-vel_obs)./vel_obs*100,'FaceColor','interp','EdgeColor','none'); 79 79 title('Relative misfit [%]','FontSize',14,'FontWeight','bold') -
issm/trunk/test/NightlyRun/test1302.m
r9729 r9733 12 12 13 13 %Thermal boundary conditions 14 pos1=find(md.mesh.elementonbed); md.thermal.spctemperature(md. elements(pos1,1:3))=10;15 pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md. elements(pos2,4:6))=0;14 pos1=find(md.mesh.elementonbed); md.thermal.spctemperature(md.mesh.elements(pos1,1:3))=10; 15 pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0; 16 16 md.initialization.vz=0.1*ones(md.mesh.numberofvertices,1); 17 17 md.initialization.vel=sqrt( md.initialization.vx.^2+ md.initialization.vy.^2+ md.initialization.vz.^2); -
issm/trunk/test/NightlyRun/test1303.m
r9729 r9733 11 11 md=extrude(md,11,2); 12 12 md=setflowequation(md,'Pattyn','all'); 13 pos1=find(md.mesh.elementonbed); md.thermal.spctemperature(md. elements(pos1,1:3))=10;14 pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md. elements(pos2,4:6))=0;13 pos1=find(md.mesh.elementonbed); md.thermal.spctemperature(md.mesh.elements(pos1,1:3))=10; 14 pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0; 15 15 md.initialization.pressure=zeros(md.mesh.numberofvertices,1); 16 16 -
issm/trunk/test/NightlyRun/test1304.m
r9729 r9733 12 12 md=setflowequation(md,'Pattyn','all'); 13 13 14 pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md. elements(pos2,4:6))=0;14 pos2=find(md.mesh.elementonsurface); md.thermal.spctemperature(md.mesh.elements(pos2,4:6))=0; 15 15 md.initialization.pressure=zeros(md.mesh.numberofvertices,1); 16 16 md.basalforcings.geothermalflux(:)=0.1; %100mW/m^2 -
issm/trunk/test/NightlyRun/test1501.m
r9725 r9733 96 96 ts = [starttime:res:endtime]; 97 97 98 index = md. elements;98 index = md.mesh.elements; 99 99 x1=md.x(index(:,1)); x2=md.x(index(:,2)); x3=md.x(index(:,3)); 100 100 y1=md.y(index(:,1)); y2=md.y(index(:,2)); y3=md.y(index(:,3)); -
issm/trunk/test/NightlyRun/test1502.m
r9725 r9733 102 102 ts = [starttime:res:endtime]; 103 103 104 index = md. elements;104 index = md.mesh.elements; 105 105 x1=md.x(index(:,1)); x2=md.x(index(:,2)); x3=md.x(index(:,3)); 106 106 y1=md.y(index(:,1)); y2=md.y(index(:,2)); y3=md.y(index(:,3)); -
issm/trunk/test/NightlyRun/test446.m
r9725 r9733 10 10 %}}} 11 11 %put our grounding line 'shelfextent' meters from the icefront {{{1 12 xelem=md.x(md. elements)*[1;1;1]/3;13 yelem=md.y(md. elements)*[1;1;1]/3;12 xelem=md.x(md.mesh.elements)*[1;1;1]/3; 13 yelem=md.y(md.mesh.elements)*[1;1;1]/3; 14 14 rad=sqrt((xelem).*xelem+(yelem).*yelem); 15 15 flags=zeros(md.mesh.numberofelements,1); -
issm/trunk/test/NightlyRun/test527.m
r9725 r9733 14 14 15 15 %refine existing mesh 1 16 hessian=ComputeHessian(md. elements,md.x,md.y,md.inversion.vy_obs,'node');16 hessian=ComputeHessian(md.mesh.elements,md.x,md.y,md.inversion.vy_obs,'node'); 17 17 metric=ComputeMetric(hessian,2/9,1,1000,25*10^3,[]); 18 18 md.miscellaneous.dummy=metric; -
issm/trunk/test/Par/79North.par
r9725 r9733 18 18 pos=find(md.mask.elementonfloatingice); 19 19 md.friction.coefficient=50*ones(md.mesh.numberofvertices,1); 20 md.friction.coefficient(md. elements(pos,:))=0;20 md.friction.coefficient(md.mesh.elements(pos,:))=0; 21 21 md.friction.p=ones(md.mesh.numberofelements,1); 22 22 md.friction.q=ones(md.mesh.numberofelements,1); … … 25 25 md.basalforcings.melting_rate=zeros(md.mesh.numberofvertices,1); 26 26 pos=zeros(md.mesh.numberofvertices,1); 27 pos(md. elements(find(md.mask.elementonfloatingice),:))=1;27 pos(md.mesh.elements(find(md.mask.elementonfloatingice),:))=1; 28 28 md.basalforcings.melting_rate(find(pos))=10; 29 29 md.surfaceforcings.mass_balance=15*ones(md.mesh.numberofvertices,1); -
issm/trunk/test/Par/ISMIPA.par
r9725 r9733 10 10 %Take care of iceshelves: no basal drag 11 11 pos=find(md.mask.elementonfloatingice); 12 md.friction.coefficient(md. elements(pos,:))=0;12 md.friction.coefficient(md.mesh.elements(pos,:))=0; 13 13 md.friction.p=ones(md.mesh.numberofelements,1); 14 14 md.friction.q=ones(md.mesh.numberofelements,1); -
issm/trunk/test/Par/ISMIPB.par
r9725 r9733 10 10 %Take care of iceshelves: no basal drag 11 11 pos=find(md.mask.elementonfloatingice); 12 md.friction.coefficient(md. elements(pos,:))=0;12 md.friction.coefficient(md.mesh.elements(pos,:))=0; 13 13 md.friction.p=ones(md.mesh.numberofelements,1); 14 14 md.friction.q=ones(md.mesh.numberofelements,1); -
issm/trunk/test/Par/ISMIPC.par
r9725 r9733 11 11 %Take care of iceshelves: no basal drag 12 12 pos=find(md.mask.elementonfloatingice); 13 md.friction.coefficient(md. elements(pos,:))=0;13 md.friction.coefficient(md.mesh.elements(pos,:))=0; 14 14 md.friction.p=ones(md.mesh.numberofelements,1); 15 15 md.friction.q=zeros(md.mesh.numberofelements,1); -
issm/trunk/test/Par/ISMIPD.par
r9725 r9733 10 10 %Take care of iceshelves: no basal drag 11 11 pos=find(md.mask.elementonfloatingice); 12 md.friction.coefficient(md. elements(pos,:))=0;12 md.friction.coefficient(md.mesh.elements(pos,:))=0; 13 13 md.friction.p=ones(md.mesh.numberofelements,1); 14 14 md.friction.q=zeros(md.mesh.numberofelements,1); -
issm/trunk/test/Par/Pig.par
r9725 r9733 23 23 pos=find(md.mask.elementonfloatingice); 24 24 md.friction.coefficient=50*ones(md.mesh.numberofvertices,1); 25 md.friction.coefficient(md. elements(pos,:))=0;25 md.friction.coefficient(md.mesh.elements(pos,:))=0; 26 26 md.friction.p=ones(md.mesh.numberofelements,1); 27 27 md.friction.q=ones(md.mesh.numberofelements,1); -
issm/trunk/test/Par/RoundSheetShelf.par
r9725 r9733 52 52 pos=find(md.mask.elementonfloatingice); 53 53 md.friction.coefficient=20*ones(md.mesh.numberofvertices,1); 54 md.friction.coefficient(md. elements(pos,:))=0;54 md.friction.coefficient(md.mesh.elements(pos,:))=0; 55 55 md.friction.p=ones(md.mesh.numberofelements,1); 56 56 md.friction.q=ones(md.mesh.numberofelements,1); -
issm/trunk/test/Par/RoundSheetStaticEISMINT.par
r9725 r9733 12 12 %Take care of iceshelves: no basal drag 13 13 pos=find(md.mask.elementonfloatingice); 14 md.friction.coefficient(md. elements(pos,:))=0;14 md.friction.coefficient(md.mesh.elements(pos,:))=0; 15 15 md.friction.p=ones(md.mesh.numberofelements,1); 16 16 md.friction.q=ones(md.mesh.numberofelements,1); -
issm/trunk/test/Par/SquareEISMINT.par
r9725 r9733 12 12 %Take care of iceshelves: no basal drag 13 13 pos=find(md.mask.elementonfloatingice); 14 md.friction.coefficient(md. elements(pos,:))=0;14 md.friction.coefficient(md.mesh.elements(pos,:))=0; 15 15 md.friction.p=ones(md.mesh.numberofelements,1); 16 16 md.friction.q=ones(md.mesh.numberofelements,1); -
issm/trunk/test/Par/SquareSheetConstrained.par
r9725 r9733 26 26 pos=find(md.mask.elementonfloatingice); 27 27 md.friction.coefficient=20*ones(md.mesh.numberofvertices,1); 28 md.friction.coefficient(md. elements(pos,:))=0;28 md.friction.coefficient(md.mesh.elements(pos,:))=0; 29 29 md.friction.p=ones(md.mesh.numberofelements,1); 30 30 md.friction.q=ones(md.mesh.numberofelements,1); -
issm/trunk/test/Par/SquareSheetShelf.par
r9725 r9733 33 33 pos=find(md.mask.elementonfloatingice); 34 34 md.friction.coefficient=20*ones(md.mesh.numberofvertices,1); 35 md.friction.coefficient(md. elements(pos,:))=0;35 md.friction.coefficient(md.mesh.elements(pos,:))=0; 36 36 md.friction.p=ones(md.mesh.numberofelements,1); 37 37 md.friction.q=ones(md.mesh.numberofelements,1); -
issm/trunk/test/Par/SquareShelf.par
r9725 r9733 26 26 pos=find(md.mask.elementonfloatingice); 27 27 md.friction.coefficient=20*ones(md.mesh.numberofvertices,1); 28 md.friction.coefficient(md. elements(pos,:))=0;28 md.friction.coefficient(md.mesh.elements(pos,:))=0; 29 29 md.friction.p=ones(md.mesh.numberofelements,1); 30 30 md.friction.q=ones(md.mesh.numberofelements,1); -
issm/trunk/test/Par/SquareShelfConstrained.par
r9725 r9733 30 30 pos=find(md.mask.elementonfloatingice); 31 31 md.friction.coefficient=20*ones(md.mesh.numberofvertices,1); 32 md.friction.coefficient(md. elements(pos,:))=0;32 md.friction.coefficient(md.mesh.elements(pos,:))=0; 33 33 md.friction.p=ones(md.mesh.numberofelements,1); 34 34 md.friction.q=ones(md.mesh.numberofelements,1); -
issm/trunk/test/Par/SquareThermal.par
r9725 r9733 18 18 %Take care of iceshelves: no basal drag 19 19 pos=find(md.mask.elementonfloatingice); 20 md.friction.coefficient(md. elements(pos,:))=0;20 md.friction.coefficient(md.mesh.elements(pos,:))=0; 21 21 md.friction.p=ones(md.mesh.numberofelements,1); 22 22 md.friction.q=ones(md.mesh.numberofelements,1); … … 41 41 md.thermal.spctemperature(:)=md.initialization.temperature; 42 42 md.basalforcings.geothermalflux=zeros(md.mesh.numberofvertices,1); 43 pos=find(md.mask.elementongroundedice);md.basalforcings.geothermalflux(md. elements(pos,:))=1*10^-3; %1 mW/m^243 pos=find(md.mask.elementongroundedice);md.basalforcings.geothermalflux(md.mesh.elements(pos,:))=1*10^-3; %1 mW/m^2
Note:
See TracChangeset
for help on using the changeset viewer.