Changeset 15428
- Timestamp:
- 07/04/13 10:44:52 (12 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 59 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/ElementHook.cpp
r15372 r15428 57 57 int* vertex_ids = xNew<int>(numvertices); 58 58 for(int i=0;i<numvertices;i++){ 59 vertex_ids[i]=reCast<int>(iomodel-> Data(MeshElementsEnum)[(element_id-1)*numvertices+i]);59 vertex_ids[i]=reCast<int>(iomodel->elements[(element_id-1)*numvertices+i]); 60 60 } 61 61 -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r15425 r15428 1395 1395 TransientInput* transientinput=NULL; 1396 1396 1397 int numberofvertices;1398 int numberofelements;1399 1397 IssmDouble yts; 1400 1398 1401 1399 /*Fetch parameters: */ 1402 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);1403 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);1404 1400 iomodel->Constant(&yts,ConstantsYtsEnum); 1405 1401 … … 1409 1405 /*Recover vertices ids needed to initialize inputs*/ 1410 1406 for(i=0;i<6;i++){ 1411 _assert_(iomodel-> Data(MeshElementsEnum));1412 penta_vertex_ids[i]= reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[6*index+i]); //ids for vertices are in the elements array from Matlab1407 _assert_(iomodel->elements); 1408 penta_vertex_ids[i]=iomodel->elements[6*index+i]; //ids for vertices are in the elements array from Matlab 1413 1409 } 1414 1410 1415 1411 /*Are we in transient or static? */ 1416 if(M== numberofvertices){1412 if(M==iomodel->numberofvertices){ 1417 1413 1418 1414 /*create input values: */ … … 1422 1418 this->inputs->AddInput(new PentaInput(vector_enum,nodeinputs,P1Enum)); 1423 1419 } 1424 else if(M== numberofvertices+1){1420 else if(M==iomodel->numberofvertices+1){ 1425 1421 /*create transient input: */ 1426 1422 for(t=0;t<N;t++){ //N is the number of times … … 1440 1436 this->inputs->AddInput(transientinput); 1441 1437 } 1442 else _error_("nodal vector is either numberof nodes (" << numberofvertices << "), or numberofnodes+1 long. Field provided is " << M << " long. Enum " << EnumToStringx(vector_enum));1438 else _error_("nodal vector is either numberofvertices (" << iomodel->numberofvertices << "), or numberofvertices+1 long. Field provided is " << M << " long. Enum " << EnumToStringx(vector_enum)); 1443 1439 } 1444 1440 else if(vector_type==2){ //element vector 1445 1441 /*Are we in transient or static? */ 1446 if(M== numberofelements){1442 if(M==iomodel->numberofelements){ 1447 1443 1448 1444 /*static mode: create an input out of the element value: */ … … 1734 1730 /*Checks if debuging*/ 1735 1731 /*{{{*/ 1736 _assert_(iomodel-> Data(MeshElementsEnum));1732 _assert_(iomodel->elements); 1737 1733 /*}}}*/ 1738 1734 1739 1735 /*Recover vertices ids needed to initialize inputs*/ 1740 1736 for(i=0;i<6;i++){ 1741 penta_vertex_ids[i]= reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[6*index+i]); //ids for vertices are in the elements array from Matlab1737 penta_vertex_ids[i]=iomodel->elements[6*index+i]; //ids for vertices are in the elements array from Matlab 1742 1738 } 1743 1739 … … 2936 2932 /*Checks if debuging*/ 2937 2933 /*{{{*/ 2938 _assert_(iomodel-> Data(MeshElementsEnum));2934 _assert_(iomodel->elements); 2939 2935 /*}}}*/ 2940 2936 … … 2951 2947 2952 2948 /*Recover vertices ids needed to initialize inputs*/ 2953 for(i=0;i<6;i++) penta_vertex_ids[i]= reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[6*index+i]); //ids for vertices are in the elements array from Matlab2949 for(i=0;i<6;i++) penta_vertex_ids[i]=iomodel->elements[6*index+i]; //ids for vertices are in the elements array from Matlab 2954 2950 2955 2951 /*Recover nodes ids needed to initialize the node hook.*/ … … 2957 2953 //go recover node ids, needed to initialize the node hook. 2958 2954 //WARNING: We assume P1 elements here!!!!! 2959 penta_node_ids[i]=iomodel->nodecounter+ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[6*index+i]); //ids for vertices are in the elements array from Matlab2955 penta_node_ids[i]=iomodel->nodecounter+iomodel->elements[6*index+i]; //ids for vertices are in the elements array from Matlab 2960 2956 } 2961 2957 -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r15407 r15428 1317 1317 /*Recover vertices ids needed to initialize inputs*/ 1318 1318 for(i=0;i<3;i++){ 1319 tria_vertex_ids[i]=reCast<int>(iomodel-> Data(MeshElementsEnum)[3*index+i]); //ids for vertices are in the elements array from Matlab1319 tria_vertex_ids[i]=reCast<int>(iomodel->elements[3*index+i]); //ids for vertices are in the elements array from Matlab 1320 1320 } 1321 1321 … … 1651 1651 IssmDouble time; 1652 1652 TransientInput* transientinput=NULL; 1653 int numberofvertices;1654 int numberofelements;1655 1653 IssmDouble yts; 1656 1654 1657 1655 /*Fetch parameters: */ 1658 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);1659 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);1660 1656 iomodel->Constant(&yts,ConstantsYtsEnum); 1661 1657 … … 1665 1661 /*Recover vertices ids needed to initialize inputs*/ 1666 1662 for(i=0;i<3;i++){ 1667 _assert_(iomodel-> Data(MeshElementsEnum));1668 tria_vertex_ids[i]=reCast<int>(iomodel-> Data(MeshElementsEnum)[3*index+i]); //ids for vertices are in the elements array from Matlab1663 _assert_(iomodel->elements); 1664 tria_vertex_ids[i]=reCast<int>(iomodel->elements[3*index+i]); //ids for vertices are in the elements array from Matlab 1669 1665 } 1670 1666 1671 1667 /*Are we in transient or static? */ 1672 if(M== numberofvertices){1668 if(M==iomodel->numberofvertices){ 1673 1669 1674 1670 /*create input values: */ … … 1678 1674 this->inputs->AddInput(new TriaInput(vector_enum,nodeinputs,P1Enum)); 1679 1675 } 1680 else if(M== numberofvertices+1){1676 else if(M==iomodel->numberofvertices+1){ 1681 1677 /*create transient input: */ 1682 1678 for(t=0;t<N;t++){ //N is the number of times … … 1696 1692 this->inputs->AddInput(transientinput); 1697 1693 } 1698 else _error_("nodal vector is either numberof nodes or numberofnodes+1 long. Field provided (" << EnumToStringx(vector_enum) << ") is " << M << " long");1694 else _error_("nodal vector is either numberofvertices or numberofvertices+1 long. Field provided (" << EnumToStringx(vector_enum) << ") is " << M << " long"); 1699 1695 } 1700 1696 else if(vector_type==2){ //element vector 1701 1697 /*Are we in transient or static? */ 1702 if(M== numberofelements){1698 if(M==iomodel->numberofelements){ 1703 1699 1704 1700 /*static mode: create an input out of the element value: */ … … 2219 2215 /*Checks if debuging*/ 2220 2216 /*{{{*/ 2221 _assert_(iomodel-> Data(MeshElementsEnum));2217 _assert_(iomodel->elements); 2222 2218 /*}}}*/ 2223 2219 … … 2241 2237 /*Recover vertices ids needed to initialize inputs*/ 2242 2238 for(i=0;i<3;i++){ 2243 tria_vertex_ids[i]=reCast<int>(iomodel-> Data(MeshElementsEnum)[3*index+i]); //ids for vertices are in the elements array from Matlab2239 tria_vertex_ids[i]=reCast<int>(iomodel->elements[3*index+i]); //ids for vertices are in the elements array from Matlab 2244 2240 } 2245 2241 … … 2254 2250 /*Continuous Galerkin*/ 2255 2251 for(i=0;i<3;i++){ 2256 tria_node_ids[i]=iomodel->nodecounter+reCast<int,IssmDouble>(*(iomodel-> Data(MeshElementsEnum)+3*index+i)); //ids for vertices are in the elements array from Matlab2252 tria_node_ids[i]=iomodel->nodecounter+reCast<int,IssmDouble>(*(iomodel->elements+3*index+i)); //ids for vertices are in the elements array from Matlab 2257 2253 } 2258 2254 } -
issm/trunk-jpl/src/c/classes/IoModel.cpp
r15419 r15428 69 69 70 70 FetchData(&this->dim,MeshDimensionEnum); 71 this->elements=NULL; 71 FetchData(&this->numberofvertices,MeshNumberofverticesEnum); 72 FetchData(&this->numberofelements,MeshNumberofelementsEnum); 73 FetchData(&this->elements,NULL,NULL,MeshElementsEnum); 72 74 this->edges=NULL; 73 75 this->singlenodetoelementconnectivity=NULL; … … 101 103 xDelete<bool>(this->my_nodes); 102 104 xDelete<int>(this->my_vertices); 105 xDelete<int>(this->elements); 106 xDelete<int>(this->edges); 103 107 xDelete<int>(this->singlenodetoelementconnectivity); 104 108 xDelete<int>(this->numbernodetoelementconnectivity); -
issm/trunk-jpl/src/c/classes/IoModel.h
r15419 r15428 33 33 /*Mesh properties and connectivity tables*/ 34 34 int dim; 35 int numberofvertices; 36 int numberofelements; 35 37 int *elements; 36 38 int *edges; -
issm/trunk-jpl/src/c/classes/Loads/Numericalflux.cpp
r15373 r15428 93 93 pos1=pos2=pos3=pos4=UNDEF; 94 94 for(j=0;j<3;j++){ 95 if (iomodel-> Data(MeshElementsEnum)[3*(e1-1)+j]==i1) pos1=j+1;96 if (iomodel-> Data(MeshElementsEnum)[3*(e1-1)+j]==i2) pos2=j+1;97 if (iomodel-> Data(MeshElementsEnum)[3*(e2-1)+j]==i1) pos3=j+1;98 if (iomodel-> Data(MeshElementsEnum)[3*(e2-1)+j]==i2) pos4=j+1;95 if (iomodel->elements[3*(e1-1)+j]==i1) pos1=j+1; 96 if (iomodel->elements[3*(e1-1)+j]==i2) pos2=j+1; 97 if (iomodel->elements[3*(e2-1)+j]==i1) pos3=j+1; 98 if (iomodel->elements[3*(e2-1)+j]==i2) pos4=j+1; 99 99 } 100 100 _assert_(pos1!=UNDEF && pos2!=UNDEF && pos3!=UNDEF && pos4!=UNDEF); … … 112 112 pos1=pos2=UNDEF; 113 113 for(j=0;j<3;j++){ 114 if (iomodel-> Data(MeshElementsEnum)[3*(e1-1)+j]==i1) pos1=j+1;115 if (iomodel-> Data(MeshElementsEnum)[3*(e1-1)+j]==i2) pos2=j+1;114 if (iomodel->elements[3*(e1-1)+j]==i1) pos1=j+1; 115 if (iomodel->elements[3*(e1-1)+j]==i2) pos2=j+1; 116 116 } 117 117 _assert_(pos1!=UNDEF && pos2!=UNDEF); -
issm/trunk-jpl/src/c/classes/Loads/Pengrid.cpp
r15104 r15428 43 43 int pengrid_element_id; 44 44 45 int numberofvertices;46 int numberofelements;47 48 /*Fetch parameters: */49 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);50 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);51 52 45 /*Some checks if debugging activated*/ 53 46 _assert_(iomodel->singlenodetoelementconnectivity); 54 _assert_(index>=0 && index< numberofvertices);47 _assert_(index>=0 && index<iomodel->numberofvertices); 55 48 _assert_(id); 56 49 … … 63 56 pengrid_element_id=iomodel->singlenodetoelementconnectivity[index]; 64 57 _assert_(pengrid_element_id); 65 pengrid_matpar_id= numberofelements+1; //refers to the constant material parameters object58 pengrid_matpar_id=iomodel->numberofelements+1; //refers to the constant material parameters object 66 59 67 60 this->hnode=new Hook(&pengrid_node_id,1); -
issm/trunk-jpl/src/c/classes/Materials/Matdamageice.cpp
r15423 r15428 754 754 /*Get B*/ 755 755 if (iomodel->Data(MaterialsRheologyBEnum)) { 756 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)];756 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[iomodel->elements[num_vertices*index+i]-1]; 757 757 this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,nodeinputs,P1Enum)); 758 758 } … … 766 766 /*Get Z*/ 767 767 if (iomodel->Data(MaterialsRheologyZEnum)) { 768 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyZEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)];768 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyZEnum)[iomodel->elements[num_vertices*index+i]-1]; 769 769 this->inputs->AddInput(new TriaInput(MaterialsRheologyZbarEnum,nodeinputs,P1Enum)); 770 770 } … … 778 778 if (iomodel->Data(MaterialsRheologyBEnum)){ 779 779 _assert_(iomodel->Data(MaterialsRheologyBEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 780 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)];781 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];782 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];780 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[iomodel->elements[num_vertices*index+j]-1]; 781 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 782 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 783 783 this->inputs->AddInput(new ControlInput(MaterialsRheologyBbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 784 784 } … … 787 787 if (iomodel->Data(MaterialsRheologyZEnum)){ 788 788 _assert_(iomodel->Data(MaterialsRheologyZEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 789 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyZEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)];790 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];791 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];789 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyZEnum)[iomodel->elements[num_vertices*index+j]-1]; 790 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 791 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 792 792 this->inputs->AddInput(new ControlInput(MaterialsRheologyZbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 793 793 } … … 812 812 /*Get B*/ 813 813 if (iomodel->Data(MaterialsRheologyBEnum)) { 814 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)];814 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[iomodel->elements[num_vertices*index+i]-1]; 815 815 this->inputs->AddInput(new PentaInput(MaterialsRheologyBEnum,nodeinputs,P1Enum)); 816 816 } … … 824 824 /*Get Z*/ 825 825 if (iomodel->Data(MaterialsRheologyZEnum)) { 826 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyZEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)];826 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyZEnum)[iomodel->elements[num_vertices*index+i]-1]; 827 827 this->inputs->AddInput(new PentaInput(MaterialsRheologyZEnum,nodeinputs,P1Enum)); 828 828 } … … 836 836 if (iomodel->Data(MaterialsRheologyBEnum)){ 837 837 _assert_(iomodel->Data(MaterialsRheologyBEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 838 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)];839 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];840 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];838 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[iomodel->elements[num_vertices*index+j]-1]; 839 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 840 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 841 841 this->inputs->AddInput(new ControlInput(MaterialsRheologyBEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 842 842 } … … 845 845 if (iomodel->Data(MaterialsRheologyZEnum)){ 846 846 _assert_(iomodel->Data(MaterialsRheologyZEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 847 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyZEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)];848 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];849 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];847 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyZEnum)[iomodel->elements[num_vertices*index+j]-1]; 848 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 849 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 850 850 this->inputs->AddInput(new ControlInput(MaterialsRheologyZEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 851 851 } -
issm/trunk-jpl/src/c/classes/Materials/Matice.cpp
r15423 r15428 704 704 /*Get B*/ 705 705 if (iomodel->Data(MaterialsRheologyBEnum)) { 706 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)];706 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[iomodel->elements[num_vertices*index+i]-1]; 707 707 this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,nodeinputs,P1Enum)); 708 708 } … … 722 722 if (iomodel->Data(MaterialsRheologyBEnum)){ 723 723 _assert_(iomodel->Data(MaterialsRheologyBEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 724 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)];725 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];726 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];724 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[iomodel->elements[num_vertices*index+j]-1]; 725 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 726 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 727 727 this->inputs->AddInput(new ControlInput(MaterialsRheologyBbarEnum,TriaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 728 728 } … … 739 739 740 740 /*Intermediaries*/ 741 const int num_vertices = 6; //Penta has 6 vertices742 IssmDouble 743 IssmDouble 744 IssmDouble 741 const int num_vertices = 6; //Penta has 6 vertices 742 IssmDouble nodeinputs[num_vertices]; 743 IssmDouble cmmininputs[num_vertices]; 744 IssmDouble cmmaxinputs[num_vertices]; 745 745 746 746 /*Get B*/ 747 747 if (iomodel->Data(MaterialsRheologyBEnum)) { 748 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+i]-1)];748 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->Data(MaterialsRheologyBEnum)[iomodel->elements[num_vertices*index+i]-1]; 749 749 this->inputs->AddInput(new PentaInput(MaterialsRheologyBEnum,nodeinputs,P1Enum)); 750 750 } … … 764 764 if (iomodel->Data(MaterialsRheologyBEnum)){ 765 765 _assert_(iomodel->Data(MaterialsRheologyBEnum));_assert_(iomodel->Data(InversionMinParametersEnum)); _assert_(iomodel->Data(InversionMaxParametersEnum)); 766 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)];767 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];768 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[ reCast<int,IssmDouble>(iomodel->Data(MeshElementsEnum)[num_vertices*index+j]-1)*num_control_type+i];766 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->Data(MaterialsRheologyBEnum)[iomodel->elements[num_vertices*index+j]-1]; 767 for(j=0;j<num_vertices;j++)cmmininputs[j]=iomodel->Data(InversionMinParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 768 for(j=0;j<num_vertices;j++)cmmaxinputs[j]=iomodel->Data(InversionMaxParametersEnum)[(iomodel->elements[num_vertices*index+j]-1)*num_control_type+i]; 769 769 this->inputs->AddInput(new ControlInput(MaterialsRheologyBEnum,PentaInputEnum,nodeinputs,cmmininputs,cmmaxinputs,i+1)); 770 770 } -
issm/trunk-jpl/src/c/modules/IoModelToConstraintsx/IoModelToConstraintsx.cpp
r15186 r15428 20 20 bool spcpresent = false; 21 21 int count = 0; 22 int numberofvertices;23 22 24 23 /*variables being fetched: */ … … 27 26 28 27 /*Fetch parameters: */ 29 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);30 28 iomodel->Constant(&yts,ConstantsYtsEnum); 31 29 … … 40 38 41 39 /*Transient or static?:*/ 42 if(M== numberofvertices){40 if(M==iomodel->numberofvertices){ 43 41 /*static: just create Constraints objects*/ 44 42 count=0; 45 43 46 44 /*Create Constraints from x,y,z: */ 47 for (i=0;i< numberofvertices;i++){45 for (i=0;i<iomodel->numberofvertices;i++){ 48 46 49 47 /*keep only this partition's nodes:*/ … … 58 56 } 59 57 } 60 else if (M==( numberofvertices+1)){58 else if (M==(iomodel->numberofvertices+1)){ 61 59 /*transient: create transient SpcTransient objects. Same logic, except we need to retrieve 62 60 * various times and values to initialize an SpcTransient object: */ … … 70 68 71 69 /*Create constraints from x,y,z: */ 72 for (i=0;i< numberofvertices;i++){70 for (i=0;i<iomodel->numberofvertices;i++){ 73 71 74 72 /*keep only this partition's nodes:*/ -
issm/trunk-jpl/src/c/modules/MeshPartitionx/MeshPartitionx.h
r14999 r15428 10 10 /* local prototypes: */ 11 11 template <class doubletype> 12 int MeshPartitionx(int** pepart, int** pnpart, int numberofelements,int numberofnodes, doubletype* elements,12 int MeshPartitionx(int** pepart, int** pnpart, int numberofelements,int numberofnodes,int* elements, 13 13 int numberofelements2d,int numberofnodes2d,doubletype* elements2d,int numlayers,int elements_width, int dim,int num_procs){ 14 14 … … 37 37 for (i=0;i<numberofelements;i++){ 38 38 for (j=0;j<elements_width;j++){ 39 *(index+elements_width*i+j)= reCast<int>(*(elements+elements_width*i+j))-1; //-1 for C indexing in Metis39 *(index+elements_width*i+j)=(*(elements+elements_width*i+j))-1; //-1 for C indexing in Metis 40 40 } 41 41 } … … 118 118 xDelete<int>(index2d); 119 119 return noerr; 120 } 120 } 121 121 #endif /* _MESHPARTITIONX_H */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/CreateLoadsBalancethickness.cpp
r15000 r15428 28 28 29 29 /*Get edges and elements*/ 30 iomodel->FetchData( 3,MeshEdgesEnum,MeshElementsEnum,ThicknessEnum);30 iomodel->FetchData(2,MeshEdgesEnum,ThicknessEnum); 31 31 32 32 /*First load data:*/ … … 44 44 45 45 /*Free data: */ 46 iomodel->DeleteData( 3,MeshEdgesEnum,MeshElementsEnum,ThicknessEnum);46 iomodel->DeleteData(2,MeshEdgesEnum,ThicknessEnum); 47 47 } 48 48 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/CreateNodesBalancethickness.cpp
r15423 r15428 17 17 int io_index; 18 18 bool continuous_galerkin=true; 19 int numberofelements; 20 int numberofvertices; 21 int stabilization; 19 int stabilization; 22 20 23 21 /*Fetch parameters: */ 24 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);25 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);26 22 iomodel->Constant(&stabilization,BalancethicknessStabilizationEnum); 27 23 … … 40 36 41 37 /*First fetch data: */ 42 iomodel->FetchData( 7,MeshElementsEnum,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum);38 iomodel->FetchData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 43 39 44 40 if(continuous_galerkin){ 45 41 46 42 /*Build Nodes dataset (Continuous Galerkin)*/ 47 for (i=0;i< numberofvertices;i++){43 for (i=0;i<iomodel->numberofvertices;i++){ 48 44 if(iomodel->my_vertices[i]){ 49 45 … … 57 53 58 54 /*Build Nodes dataset -> 3 for each element (Discontinuous Galerkin)*/ 59 for (i=0;i< numberofelements;i++){55 for (i=0;i<iomodel->numberofelements;i++){ 60 56 for (j=0;j<3;j++){ 61 57 … … 63 59 64 60 //Get index of the vertex on which the current node is located 65 vertex_id= reCast<int,IssmDouble>(*(iomodel->Data(MeshElementsEnum)+3*i+j)); //(Matlab indexing)66 io_index=vertex_id-1; 67 _assert_(vertex_id>0 && vertex_id<= numberofvertices);61 vertex_id=iomodel->elements[3*i+j]; //(Matlab indexing) 62 io_index=vertex_id-1; //(C indexing) 63 _assert_(vertex_id>0 && vertex_id<=iomodel->numberofvertices); 68 64 69 65 //Compute Node id … … 79 75 80 76 /*Clean fetched data: */ 81 iomodel->DeleteData( 7,MeshElementsEnum,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum);77 iomodel->DeleteData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 82 78 83 79 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Balancethickness/UpdateElementsBalancethickness.cpp
r15423 r15428 11 11 void UpdateElementsBalancethickness(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){ 12 12 13 int numberofelements;14 15 /*Fetch data needed: */16 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);17 iomodel->FetchData(1,MeshElementsEnum);18 19 13 /*Update elements: */ 20 14 int counter=0; 21 for(int i=0;i< numberofelements;i++){15 for(int i=0;i<iomodel->numberofelements;i++){ 22 16 if(iomodel->my_elements[i]){ 23 17 Element* element=(Element*)elements->GetObjectByOffset(counter); … … 42 36 iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum); 43 37 } 44 /*Free data: */45 iomodel->DeleteData(1,MeshElementsEnum);46 38 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/BedSlope/CreateNodesBedSlope.cpp
r15000 r15428 12 12 13 13 /*Intermediary*/ 14 int i;15 14 bool continuous_galerkin=true; 16 17 /*Fetch parameters: */18 int numberofvertices;19 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);20 15 21 16 /*Recover pointer: */ … … 31 26 iomodel->FetchData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 32 27 33 for (i=0;i<numberofvertices;i++){28 for(int i=0;i<iomodel->numberofvertices;i++){ 34 29 if(iomodel->my_vertices[i]){ 35 30 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/BedSlope/UpdateElementsBedSlope.cpp
r15423 r15428 11 11 void UpdateElementsBedSlope(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){ 12 12 13 int numberofelements;14 15 /*Fetch data needed: */16 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);17 iomodel->FetchData(1,MeshElementsEnum);18 19 13 /*Update elements: */ 20 14 int counter=0; 21 for(int i=0;i< numberofelements;i++){15 for(int i=0;i<iomodel->numberofelements;i++){ 22 16 if(iomodel->my_elements[i]){ 23 17 Element* element=(Element*)elements->GetObjectByOffset(counter); … … 30 24 iomodel->FetchDataToInput(elements,BedEnum); 31 25 iomodel->FetchDataToInput(elements,MaskElementonwaterEnum); 32 33 26 if(iomodel->dim==3){ 34 27 iomodel->FetchDataToInput(elements,MeshElementonbedEnum); 35 28 iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum); 36 29 } 37 38 /*Free data: */39 iomodel->DeleteData(1,MeshElementsEnum);40 30 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/UpdateElementsAndMaterialsControl.cpp
r15000 r15428 29 29 30 30 /*Fetch data needed: */ 31 iomodel->FetchData(1,MeshElementsEnum);32 31 iomodel->FetchDataToInput(elements,InversionVxObsEnum); 33 32 iomodel->FetchDataToInput(elements,InversionVyObsEnum); … … 62 61 63 62 /*Free data: */ 64 iomodel->DeleteData( 1+4+6,MeshElementsEnum,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum,MaterialsRheologyZEnum);63 iomodel->DeleteData(4+6,InversionControlParametersEnum,InversionCostFunctionsCoefficientsEnum,InversionMinParametersEnum,InversionMaxParametersEnum,BalancethicknessThickeningRateEnum,VxEnum,VyEnum,FrictionCoefficientEnum,MaterialsRheologyBEnum,MaterialsRheologyZEnum); 65 64 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
r15423 r15428 13 13 int i; 14 14 int materials_type; 15 int numberofelements;16 int numberofvertices;17 15 bool control_analysis; 18 16 bool dakota_analysis; … … 24 22 25 23 /*Fetch parameters: */ 26 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);27 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);28 24 iomodel->Constant(&control_analysis,InversionIscontrolEnum); 29 25 iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum); … … 38 34 materials = new Materials(); 39 35 40 iomodel->FetchData( 2,MeshElementsEnum,MeshElementconnectivityEnum);36 iomodel->FetchData(1,MeshElementconnectivityEnum); 41 37 #ifdef _HAVE_3D_ 42 38 if(iomodel->dim==3)iomodel->FetchData(2,MeshUpperelementsEnum,MeshLowerelementsEnum); … … 45 41 46 42 /*Create elements*/ 47 for (i=0;i<numberofelements;i++){43 for(i=0;i<iomodel->numberofelements;i++){ 48 44 if(iomodel->my_elements[i]){ 49 45 … … 60 56 case MaticeEnum: 61 57 iomodel->FetchData(2,MaterialsRheologyBEnum,MaterialsRheologyNEnum); 62 for (i=0;i< numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matice(i+1,i,iomodel));58 for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matice(i+1,i,iomodel)); 63 59 if(dakota_analysis){ 64 60 if(iomodel->dim==2) materials->InputDuplicate(MaterialsRheologyBbarEnum,QmuMaterialsRheologyBEnum); … … 70 66 case MatdamageiceEnum: 71 67 iomodel->FetchData(3,MaterialsRheologyBEnum,MaterialsRheologyNEnum,MaterialsRheologyZEnum); 72 for (i=0;i< numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matdamageice(i+1,i,iomodel));68 for (i=0;i<iomodel->numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matdamageice(i+1,i,iomodel)); 73 69 break; 74 70 default: … … 77 73 78 74 /*Free data: */ 79 iomodel->DeleteData( 10,MeshElementsEnum,MeshElementconnectivityEnum,MeshUpperelementsEnum,MeshLowerelementsEnum,75 iomodel->DeleteData(9,MeshElementconnectivityEnum,MeshUpperelementsEnum,MeshLowerelementsEnum, 80 76 MaterialsRheologyBEnum,MaterialsRheologyNEnum,MaterialsRheologyZEnum,InversionControlParametersEnum,InversionMinParametersEnum, 81 77 InversionMaxParametersEnum); 82 78 83 79 /*Add new constant material property to materials, at the end: */ 84 materials->AddObject(new Matpar( numberofelements+1,iomodel));//put it at the end of the materials80 materials->AddObject(new Matpar(iomodel->numberofelements+1,iomodel));//put it at the end of the materials 85 81 86 82 /*Create vertices: */ 87 83 88 84 /*Fetch data:*/ 89 iomodel->FetchData( 7,MeshElementsEnum,MeshXEnum,MeshYEnum,MeshZEnum,BedEnum,ThicknessEnum,IcelevelsetEnum);85 iomodel->FetchData(6,MeshXEnum,MeshYEnum,MeshZEnum,BedEnum,ThicknessEnum,IcelevelsetEnum); 90 86 CreateNumberNodeToElementConnectivity(iomodel); 91 87 92 for (i=0;i<numberofvertices;i++){88 for(i=0;i<iomodel->numberofvertices;i++){ 93 89 94 90 /*vertices and nodes (same number, as we are running continuous galerkin formulation): */ … … 101 97 102 98 /*Free data: */ 103 iomodel->DeleteData( 7,MeshElementsEnum,MeshXEnum,MeshYEnum,MeshZEnum,BedEnum,ThicknessEnum,IcelevelsetEnum);99 iomodel->DeleteData(6,MeshXEnum,MeshYEnum,MeshZEnum,BedEnum,ThicknessEnum,IcelevelsetEnum); 104 100 105 101 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp
r15423 r15428 20 20 int vertexid; 21 21 int elementswidth; 22 int numberofelements;23 int numberofvertices;24 IssmDouble* elements=NULL;25 22 26 23 /*output*/ … … 30 27 if(iomodel->numbernodetoelementconnectivity) return; 31 28 32 /*Fetch parameters: */33 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);34 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);35 elements=iomodel->Data(MeshElementsEnum);36 37 29 /*Some checks if debugging*/ 38 _assert_( numberofvertices);39 _assert_( numberofelements);40 _assert_( elements);30 _assert_(iomodel->numberofvertices); 31 _assert_(iomodel->numberofelements); 32 _assert_(iomodel->elements); 41 33 42 34 /*Allocate ouput*/ 43 connectivity=xNewZeroInit<int>( numberofvertices);35 connectivity=xNewZeroInit<int>(iomodel->numberofvertices); 44 36 45 37 /*Get element width (3 or 6)*/ 46 if 38 if(iomodel->dim==2){ 47 39 elementswidth=3; 48 40 } … … 52 44 53 45 /*Create connectivity table*/ 54 for (i=0;i< numberofelements;i++){46 for (i=0;i<iomodel->numberofelements;i++){ 55 47 for (j=0;j<elementswidth;j++){ 56 vertexid= reCast<int>(elements[elementswidth*i+j]);57 _assert_(vertexid>0 && vertexid-1< numberofvertices);48 vertexid=iomodel->elements[elementswidth*i+j]; 49 _assert_(vertexid>0 && vertexid-1<iomodel->numberofvertices); 58 50 connectivity[vertexid-1]+=1; 59 51 } … … 62 54 /*Assign to iomodel*/ 63 55 iomodel->numbernodetoelementconnectivity=connectivity; 64 65 /*Do not free connectivity!!!*/66 56 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp
r15423 r15428 17 17 18 18 /*Intermediary*/ 19 int i,j;20 19 int vertexid; 21 20 int elementswidth; 22 int numberofelements;23 int numberofvertices;24 IssmDouble* elements=NULL;25 21 26 22 /*output*/ … … 30 26 if(iomodel->singlenodetoelementconnectivity) return; 31 27 32 /*Fetch parameters: */33 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);34 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);35 elements=iomodel->Data(MeshElementsEnum);36 37 28 /*Some checks if debugging*/ 38 _assert_( numberofvertices);39 _assert_( numberofelements);29 _assert_(iomodel->numberofvertices); 30 _assert_(iomodel->numberofelements); 40 31 _assert_(iomodel->my_elements); 41 _assert_( elements);32 _assert_(iomodel->elements); 42 33 43 34 /*Allocate ouput*/ 44 connectivity=xNewZeroInit<int>( numberofvertices);35 connectivity=xNewZeroInit<int>(iomodel->numberofvertices); 45 36 46 37 /*Get element width (3 or 6)*/ … … 53 44 54 45 /*Create connectivity table*/ 55 for (i=0;i<numberofelements;i++){46 for(int i=0;i<iomodel->numberofelements;i++){ 56 47 /*!! in parallel we do not want the vertex to be connected to an element that is not in its partition!!*/ 57 48 if(iomodel->my_elements[i]){ 58 for (j=0;j<elementswidth;j++){59 vertexid= reCast<int>(elements[elementswidth*i+j]);60 _assert_(vertexid>0 && vertexid-1< numberofvertices);49 for(int j=0;j<elementswidth;j++){ 50 vertexid=iomodel->elements[elementswidth*i+j]; 51 _assert_(vertexid>0 && vertexid-1<iomodel->numberofvertices); 61 52 connectivity[vertexid-1]=i+1; 62 53 } … … 66 57 /*Assign to iomodel*/ 67 58 iomodel->singlenodetoelementconnectivity=connectivity; 68 69 /*Do not free connectivity!!!*/70 59 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp
r15000 r15428 36 36 char* name=NULL; 37 37 int numberofresponses; 38 int numberofvertices;39 38 int nrows; 40 39 int ncols; … … 52 51 iomodel->Constant(&name,MiscellaneousNameEnum); 53 52 iomodel->Constant(&numberofresponses,QmuNumberofresponsesEnum); 54 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);55 53 56 54 /*name of qmu input, error and output files:{{{*/ … … 92 90 ElementsAndVerticesPartitioning(&iomodel->my_elements,&iomodel->my_vertices,iomodel); 93 91 94 dpart=xNew<double>( numberofvertices);95 for(i=0;i< numberofvertices;i++)dpart[i]=iomodel->my_vertices[i];92 dpart=xNew<double>(iomodel->numberofvertices); 93 for(i=0;i<iomodel->numberofvertices;i++)dpart[i]=iomodel->my_vertices[i]; 96 94 } 97 parameters->AddObject(new DoubleVecParam(QmuPartitionEnum,dpart, numberofvertices));95 parameters->AddObject(new DoubleVecParam(QmuPartitionEnum,dpart,iomodel->numberofvertices)); 98 96 /*}}}*/ 99 97 /*Deal with data needed because of qmu variables: {{{*/ … … 109 107 110 108 /*Add to parameters: */ 111 if(nrows== numberofvertices){109 if(nrows==iomodel->numberofvertices){ 112 110 parameters->AddObject(new DoubleMatParam(StringToEnumx(tag),dakota_parameter,nrows,ncols)); 113 111 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateConstraintsDiagnosticHoriz.cpp
r15423 r15428 41 41 Constraints *constraints = NULL; 42 42 SpcStatic *spcstatic = NULL; 43 int numberofvertices;44 43 45 44 /*Fetch parameters: */ 46 45 iomodel->Constant(&yts,ConstantsYtsEnum); 47 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);48 46 iomodel->Constant(&g,ConstantsGEnum); 49 47 iomodel->Constant(&rho_ice,MaterialsRhoIceEnum); … … 98 96 99 97 /*Create spcs from x,y,z, as well as the spc values on those spcs: */ 100 for (i=0;i<numberofvertices;i++){98 for(i=0;i<iomodel->numberofvertices;i++){ 101 99 if(iomodel->my_vertices[i]){ 102 100 … … 218 216 /*Now add the regular spcs*/ 219 217 else{ 220 if (Mx== numberofvertices && !xIsNan<IssmDouble>(spcvx[i])){218 if (Mx==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvx[i])){ 221 219 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,1,spcvx[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vx. 222 220 count++; 223 221 } 224 else if (Mx== numberofvertices+1) {222 else if (Mx==iomodel->numberofvertices+1) { 225 223 /*figure out times and values: */ 226 224 values=xNew<IssmDouble>(Nx); … … 242 240 } 243 241 244 if (My== numberofvertices && !xIsNan<IssmDouble>(spcvy[i])){242 if (My==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvy[i])){ 245 243 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,2,spcvy[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 1 to vy. 246 244 count++; 247 245 } 248 else if (My== numberofvertices+1){246 else if (My==iomodel->numberofvertices+1){ 249 247 /*figure out times and values: */ 250 248 values=xNew<IssmDouble>(Ny); … … 266 264 267 265 if (reCast<int,IssmDouble>(vertices_type[i])==StokesApproximationEnum || (reCast<int,IssmDouble>(vertices_type[i])==NoneApproximationEnum)){ 268 if (Mz== numberofvertices && !xIsNan<IssmDouble>(spcvz[i])){266 if (Mz==iomodel->numberofvertices && !xIsNan<IssmDouble>(spcvz[i])){ 269 267 constraints->AddObject(new SpcStatic(iomodel->constraintcounter+count+1,iomodel->nodecounter+i+1,3,spcvz[i]/yts,DiagnosticHorizAnalysisEnum)); //add count'th spc, on node i+1, setting dof 2 to vy 270 268 count++; 271 269 } 272 else if (Mz== numberofvertices+1){270 else if (Mz==iomodel->numberofvertices+1){ 273 271 /*figure out times and values: */ 274 272 values=xNew<IssmDouble>(Nz); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateLoadsDiagnosticHoriz.cpp
r15423 r15428 19 19 int count=0; 20 20 int penpair_ids[2]; 21 int numberofvertices;22 21 bool ismacayealpattyn,isstokes,isl1l2; 23 22 int numpenalties,numberofpressureloads,numrifts,numriftsegments; … … 33 32 34 33 /*Fetch parameters: */ 35 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);36 34 iomodel->Constant(&isl1l2,FlowequationIsl1l2Enum); 37 35 iomodel->Constant(&isstokes,FlowequationIsstokesEnum); -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/CreateNodesDiagnosticHoriz.cpp
r15298 r15428 12 12 13 13 /*Intermediary*/ 14 int i;15 14 bool continuous_galerkin=true; 16 int numberofvertices;17 15 bool isstokes,isl1l2,ismacayealpattyn; 18 16 19 17 /*Fetch parameters: */ 20 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);21 18 iomodel->Constant(&isstokes,FlowequationIsstokesEnum); 22 19 iomodel->Constant(&isl1l2,FlowequationIsl1l2Enum); … … 42 39 MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,MaskVertexonwaterEnum,FlowequationVertexEquationEnum,DiagnosticReferentialEnum); 43 40 44 for (i=0;i<numberofvertices;i++){41 for(int i=0;i<iomodel->numberofvertices;i++){ 45 42 46 43 if(iomodel->my_vertices[i]){ … … 59 56 iomodel->Constant(&numberofedges,MeshNumberofedgesEnum); 60 57 61 for (i=0;i<numberofedges;i++){58 for(int i=0;i<numberofedges;i++){ 62 59 63 60 /*Get left and right elements*/ … … 73 70 /*Add node on edge*/ 74 71 if(my_edge){ 75 nodes->AddObject(new Node(iomodel->nodecounter+ numberofvertices+i+1,numberofvertices+i,numberofvertices+i+1,i,iomodel,DiagnosticHorizAnalysisEnum));72 nodes->AddObject(new Node(iomodel->nodecounter+iomodel->numberofvertices+i+1,iomodel->numberofvertices+i,iomodel->numberofvertices+i+1,i,iomodel,DiagnosticHorizAnalysisEnum)); 76 73 } 77 74 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHoriz/UpdateElementsDiagnosticHoriz.cpp
r15423 r15428 17 17 18 18 int materials_type; 19 int numberofelements;20 19 bool ismacayealpattyn; 21 20 bool isl1l2; … … 28 27 iomodel->Constant(&isl1l2,FlowequationIsl1l2Enum); 29 28 iomodel->Constant(&ismacayealpattyn,FlowequationIsmacayealpattynEnum); 30 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);31 29 iomodel->Constant(&control_analysis,InversionIscontrolEnum); 32 30 iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum); … … 37 35 38 36 /*Fetch data needed: */ 39 iomodel->FetchData( 2,MeshElementsEnum,FlowequationElementEquationEnum);37 iomodel->FetchData(1,FlowequationElementEquationEnum); 40 38 41 39 /*Update elements: */ 42 40 int counter=0; 43 for(int i=0;i< numberofelements;i++){41 for(int i=0;i<iomodel->numberofelements;i++){ 44 42 if(iomodel->my_elements[i]){ 45 43 Element* element=(Element*)elements->GetObjectByOffset(counter); … … 103 101 104 102 /*Free data: */ 105 iomodel->DeleteData( 2,MeshElementsEnum,FlowequationElementEquationEnum);103 iomodel->DeleteData(1,FlowequationElementEquationEnum); 106 104 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp
r15000 r15428 11 11 12 12 /*Intermediary*/ 13 int i; 14 int count; 13 int count; 15 14 IssmDouble yts; 16 int numberofvertices; 17 bool ishutter; 15 bool ishutter; 18 16 19 17 /*Output*/ … … 26 24 /*Fetch parameters: */ 27 25 iomodel->Constant(&yts,ConstantsYtsEnum); 28 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);29 26 iomodel->Constant(&ishutter,FlowequationIshutterEnum); 30 27 … … 45 42 46 43 /*vx and vy are spc'd if we are not on nodeonhutter: */ 47 for (i=0;i<numberofvertices;i++){44 for(int i=0;i<iomodel->numberofvertices;i++){ 48 45 /*keep only this partition's nodes:*/ 49 46 if((iomodel->my_vertices[i])){ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHutter/CreateNodesDiagnosticHutter.cpp
r15000 r15428 12 12 13 13 /*Intermediary*/ 14 int i; 15 bool continuous_galerkin=true; 16 int numberofvertices; 17 bool ishutter; 14 bool continuous_galerkin = true; 15 bool ishutter; 18 16 19 17 /*Fetch parameters: */ 20 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);21 18 iomodel->Constant(&ishutter,FlowequationIshutterEnum); 22 19 … … 37 34 38 35 /*First fetch data: */ 39 iomodel->FetchData( 7,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,MeshElementsEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum);36 iomodel->FetchData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 40 37 41 for (i=0;i<numberofvertices;i++){38 for(int i=0;i<iomodel->numberofvertices;i++){ 42 39 if(iomodel->my_vertices[i]){ 43 40 … … 49 46 50 47 /*Clean fetched data: */ 51 iomodel->DeleteData( 7,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,MeshElementsEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum);48 iomodel->DeleteData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 52 49 53 50 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticHutter/UpdateElementsDiagnosticHutter.cpp
r15000 r15428 21 21 if (!ishutter)return; 22 22 23 iomodel->FetchData( 2,MeshElementsEnum,FlowequationElementEquationEnum);23 iomodel->FetchData(1,FlowequationElementEquationEnum); 24 24 25 25 /*Update elements: */ … … 37 37 38 38 /*Free data: */ 39 iomodel->DeleteData( 2,MeshElementsEnum,FlowequationElementEquationEnum);39 iomodel->DeleteData(1,FlowequationElementEquationEnum); 40 40 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CreateConstraintsDiagnosticVert.cpp
r15423 r15428 11 11 12 12 /*Intermediary*/ 13 int i;14 13 int count; 15 14 IssmDouble yts; 16 int numberofvertices;17 15 18 16 /*Fetch parameters: */ 19 17 iomodel->Constant(&yts,ConstantsYtsEnum); 20 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);21 18 22 19 /*Recover pointer: */ … … 39 36 40 37 /*Create spcs from x,y,z, as well as the spc values on those spcs: */ 41 for (i=0;i<numberofvertices;i++){38 for(int i=0;i<iomodel->numberofvertices;i++){ 42 39 43 40 /*keep only this partition's nodes:*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/CreateNodesDiagnosticVert.cpp
r15423 r15428 12 12 13 13 /*Intermediary*/ 14 int i;15 14 bool continuous_galerkin=true; 16 int numberofvertices;17 18 /*Fetch parameters: */19 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);20 15 21 16 /*Recover pointer: */ … … 37 32 iomodel->FetchData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 38 33 39 for (i=0;i<numberofvertices;i++){34 for(int i=0;i<iomodel->numberofvertices;i++){ 40 35 if(iomodel->my_vertices[i]){ 41 36 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/DiagnosticVert/UpdateElementsDiagnosticVert.cpp
r15423 r15428 14 14 if (iomodel->dim==2)return; 15 15 16 int numberofelements;17 18 /*Fetch parameters: */19 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);20 21 /*Fetch data needed: */22 iomodel->FetchData(1,MeshElementsEnum);23 24 16 /*Update elements: */ 25 17 int counter=0; 26 for(int i=0;i< numberofelements;i++){18 for(int i=0;i<iomodel->numberofelements;i++){ 27 19 if(iomodel->my_elements[i]){ 28 20 Element* element=(Element*)elements->GetObjectByOffset(counter); … … 44 36 iomodel->FetchDataToInput(elements,VxEnum); 45 37 iomodel->FetchDataToInput(elements,VyEnum); 46 47 /*Free data: */48 iomodel->DeleteData(1,MeshElementsEnum);49 50 38 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp
r15423 r15428 21 21 int my_rank; 22 22 int num_procs; 23 int numberofelements;24 int numberofvertices;25 23 int numberofelements2d; 26 24 int numberofvertices2d; … … 38 36 int elements_width; //number of columns in elements (2d->3, 3d->6) 39 37 int el1,el2; 40 IssmDouble* elements=NULL;41 IssmDouble* elements2d=NULL;38 int* elements2d=NULL; 39 int* vertex_pairing=NULL; 42 40 IssmDouble* riftinfo=NULL; 43 IssmDouble* vertex_pairing=NULL;44 41 45 42 /*Get my_rank:*/ 46 my_rank =IssmComm::GetRank();47 num_procs =IssmComm::GetSize();43 my_rank = IssmComm::GetRank(); 44 num_procs = IssmComm::GetSize(); 48 45 49 46 /*Fetch parameters: */ 50 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);51 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);52 47 iomodel->Constant(&numberofelements2d,MeshNumberofelements2dEnum); 53 48 iomodel->Constant(&numberofvertices2d,MeshNumberofvertices2dEnum); … … 62 57 if(iomodel->dim==2){ 63 58 elements_width=3; //tria elements 64 iomodel->FetchData(&elements,NULL,NULL,MeshElementsEnum);65 59 } 66 60 else{ … … 69 63 } 70 64 71 MeshPartitionx(&epart, &npart,numberofelements,numberofvertices,elements,numberofelements2d,numberofvertices2d,elements2d,numlayers,elements_width,iomodel->dim,num_procs);65 MeshPartitionx(&epart,&npart,iomodel->numberofelements,iomodel->numberofvertices,iomodel->elements,numberofelements2d,numberofvertices2d,elements2d,numlayers,elements_width,iomodel->dim,num_procs); 72 66 73 /*Free elements and elements2d: */ 74 iomodel->DeleteData(elements,MeshElementsEnum); 75 iomodel->DeleteData(elements2d,MeshElements2dEnum); 67 /*Free elements2d: */ 68 xDelete<int>(elements2d); 76 69 77 70 /*Deal with rifts, they have to be included into one partition only, not several: */ … … 87 80 88 81 /*Used later on: */ 89 my_vertices=xNewZeroInit<int>( numberofvertices);90 my_elements=xNewZeroInit<bool>( numberofelements);82 my_vertices=xNewZeroInit<int>(iomodel->numberofvertices); 83 my_elements=xNewZeroInit<bool>(iomodel->numberofelements); 91 84 92 85 /*Start figuring out, out of the partition, which elements belong to this cpu: */ 93 iomodel->FetchData(&elements,NULL,NULL,MeshElementsEnum); 94 for (i=0;i<numberofelements;i++){ 86 for (i=0;i<iomodel->numberofelements;i++){ 95 87 96 88 /*!All elements have been partitioned above, only deal with elements for this cpu: */ … … 103 95 into the vertices coordinates. If we start plugging 1 into my_vertices for each index[n][i] (i=0:2), then my_vertices 104 96 will hold which vertices belong to this partition*/ 105 my_vertices[ reCast<int>(*(elements+elements_width*i+0))-1]=1;106 my_vertices[ reCast<int>(*(elements+elements_width*i+1))-1]=1;107 my_vertices[ reCast<int>(*(elements+elements_width*i+2))-1]=1;97 my_vertices[iomodel->elements[elements_width*i+0]-1]=1; 98 my_vertices[iomodel->elements[elements_width*i+1]-1]=1; 99 my_vertices[iomodel->elements[elements_width*i+2]-1]=1; 108 100 109 101 if(elements_width==6){ 110 my_vertices[ reCast<int>(*(elements+elements_width*i+3))-1]=1;111 my_vertices[ reCast<int>(*(elements+elements_width*i+4))-1]=1;112 my_vertices[ reCast<int>(*(elements+elements_width*i+5))-1]=1;102 my_vertices[iomodel->elements[elements_width*i+3]-1]=1; 103 my_vertices[iomodel->elements[elements_width*i+4]-1]=1; 104 my_vertices[iomodel->elements[elements_width*i+5]-1]=1; 113 105 } 114 106 } 115 }//for (i=0;i<numberofelements;i++) 116 /*Free data : */ 117 iomodel->DeleteData(elements,MeshElementsEnum); 107 } 118 108 119 109 /*We might have vertex_pairing in which case, some vertices have to be cloned: … … 122 112 iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,DiagnosticVertexPairingEnum); 123 113 for(i=0;i<numvertex_pairing;i++){ 124 if(my_vertices[ reCast<int>(vertex_pairing[2*i+0])-1] && !my_vertices[reCast<int>(vertex_pairing[2*i+1])-1]){125 my_vertices[ reCast<int>(vertex_pairing[2*i+1])-1]=2; //to know that these elements are not on the partition114 if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){ 115 my_vertices[vertex_pairing[2*i+1]-1]=2; //to know that these elements are not on the partition 126 116 } 127 117 } 128 iomodel->DeleteData(vertex_pairing,DiagnosticVertexPairingEnum);118 xDelete<int>(vertex_pairing); 129 119 iomodel->FetchData(&vertex_pairing,&numvertex_pairing,NULL,PrognosticVertexPairingEnum); 130 120 for(i=0;i<numvertex_pairing;i++){ 131 if(my_vertices[ reCast<int>(vertex_pairing[2*i+0])-1] && !my_vertices[reCast<int>(vertex_pairing[2*i+1])-1]){132 my_vertices[ reCast<int>(vertex_pairing[2*i+1])-1]=2; //to know that these elements are not on the partition121 if(my_vertices[vertex_pairing[2*i+0]-1] && !my_vertices[vertex_pairing[2*i+1]-1]){ 122 my_vertices[vertex_pairing[2*i+1]-1]=2; //to know that these elements are not on the partition 133 123 } 134 124 } 135 iomodel->DeleteData(vertex_pairing,PrognosticVertexPairingEnum);125 xDelete<int>(vertex_pairing); 136 126 137 127 /*Free ressources:*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CreateConstraintsEnthalpy.cpp
r15423 r15428 11 11 12 12 /*Intermediary*/ 13 int i,j; 14 int count; 15 int M,N; 16 int numberofvertices; 17 bool spcpresent=false; 13 int i,j; 14 int count; 15 int M,N; 16 bool spcpresent = false; 18 17 IssmDouble heatcapacity; 19 18 IssmDouble referencetemperature; … … 25 24 26 25 /*Fetch parameters: */ 27 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);28 26 iomodel->Constant(&heatcapacity,MaterialsHeatcapacityEnum); 29 27 iomodel->Constant(&referencetemperature,ConstantsReferencetemperatureEnum); … … 36 34 37 35 /*return if 2d mesh*/ 38 if 36 if(iomodel->dim==2){ 39 37 *pconstraints=constraints; 40 38 return; … … 46 44 //FIX ME: SHOULD USE IOMODELCREATECONSTRAINTS 47 45 /*Transient or static?:*/ 48 if(M== numberofvertices){46 if(M==iomodel->numberofvertices){ 49 47 /*static: just create Constraints objects*/ 50 48 count=0; 51 49 52 for (i=0;i<numberofvertices;i++){50 for(int i=0;i<iomodel->numberofvertices;i++){ 53 51 /*keep only this partition's nodes:*/ 54 52 if((iomodel->my_vertices[i])){ … … 63 61 } 64 62 } 65 else if (M==( numberofvertices+1)){63 else if (M==(iomodel->numberofvertices+1)){ 66 64 /*transient: create transient SpcTransient objects. Same logic, except we need to retrieve 67 65 * various times and values to initialize an SpcTransient object: */ … … 70 68 /*figure out times: */ 71 69 times=xNew<IssmDouble>(N); 72 for( j=0;j<N;j++){70 for(int j=0;j<N;j++){ 73 71 times[j]=spcvector[(M-1)*N+j]; 74 72 } 75 73 76 74 /*Create constraints from x,y,z: */ 77 for (i=0;i<numberofvertices;i++){75 for(int i=0;i<iomodel->numberofvertices;i++){ 78 76 79 77 /*keep only this partition's nodes:*/ … … 83 81 values=xNew<IssmDouble>(N); 84 82 spcpresent=false; 85 for( j=0;j<N;j++){83 for(int j=0;j<N;j++){ 86 84 values[j]=heatcapacity*(spcvector[i*N+j]-referencetemperature); 87 85 if(!xIsNan<IssmDouble>(values[j]))spcpresent=true; //NaN means no spc by default -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/CreateNodesEnthalpy.cpp
r15000 r15428 12 12 13 13 /*Intermediary*/ 14 int i;15 14 bool continuous_galerkin=true; 16 int numberofvertices;17 18 /*Fetch parameters: */19 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);20 15 21 16 /*Recover pointer: */ … … 31 26 iomodel->FetchData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 32 27 33 for (i=0;i<numberofvertices;i++){28 for(int i=0;i<iomodel->numberofvertices;i++){ 34 29 if(iomodel->my_vertices[i]){ 35 30 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Enthalpy/UpdateElementsEnthalpy.cpp
r15423 r15428 20 20 21 21 /*Fetch data needed: */ 22 iomodel->FetchData( 4,MeshElementsEnum,TemperatureEnum,WaterfractionEnum,PressureEnum);22 iomodel->FetchData(3,TemperatureEnum,WaterfractionEnum,PressureEnum); 23 23 24 24 /*Update elements: */ … … 54 54 55 55 /*Free data: */ 56 iomodel->DeleteData( 4,MeshElementsEnum,TemperatureEnum,WaterfractionEnum,PressureEnum);56 iomodel->DeleteData(3,TemperatureEnum,WaterfractionEnum,PressureEnum); 57 57 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Gia/CreateNodesGia.cpp
r15000 r15428 12 12 13 13 /*Intermediary*/ 14 int i;15 14 bool continuous_galerkin=true; 16 17 /*Fetch parameters: */18 int numberofvertices;19 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);20 15 21 16 /*Recover pointer: */ … … 32 27 33 28 /*First fetch data: */ 34 for (i=0;i<numberofvertices;i++){29 for(int i=0;i<iomodel->numberofvertices;i++){ 35 30 if(iomodel->my_vertices[i]){ 36 31 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Gia/UpdateElementsGia.cpp
r15423 r15428 11 11 void UpdateElementsGia(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){ 12 12 13 int numberofelements;14 15 /*Fetch parameters: */16 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);17 18 /*Fetch data needed: */19 iomodel->FetchData(1,MeshElementsEnum);20 21 13 /*Update elements: */ 22 14 int counter=0; 23 for(int i=0;i< numberofelements;i++){15 for(int i=0;i<iomodel->numberofelements;i++){ 24 16 if(iomodel->my_elements[i]){ 25 17 Element* element=(Element*)elements->GetObjectByOffset(counter); … … 33 25 iomodel->FetchDataToInput(elements,GiaLithosphereThicknessEnum); 34 26 35 /*Free data: */36 iomodel->DeleteData(1,MeshElementsEnum);37 38 27 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCEfficient/CreateLoadsHydrologyDCEfficient.cpp
r15000 r15428 10 10 11 11 /*Intermediary*/ 12 bool isefficientlayer; 13 int hydrology_model; 14 int numberofvertices; 15 Pengrid *pengrid = NULL; 12 bool isefficientlayer; 13 int hydrology_model; 16 14 17 15 /*Recover pointer: */ 18 16 Loads* loads=*ploads; 19 20 /*Fetch parameters: */21 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);22 17 23 18 /*Create loads if they do not exist yet*/ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCEfficient/CreateNodesHydrologyDCEfficient.cpp
r15000 r15428 12 12 13 13 /*Intermediary*/ 14 int i;15 14 bool isefficientlayer; 16 15 bool continuous_galerkin=true; 17 16 int hydrology_model; 18 int numberofvertices;19 20 /*Fetch parameters: */21 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);22 17 23 18 /*Recover pointer: */ … … 46 41 /*Create nodes and vertices: */ 47 42 iomodel->FetchData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 48 for (i=0;i<numberofvertices;i++){43 for(int i=0;i<iomodel->numberofvertices;i++){ 49 44 50 45 if(iomodel->my_vertices[i]){ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCEfficient/UpdateElementsHydrologyDCEfficient.cpp
r15000 r15428 13 13 bool isefficientlayer; 14 14 int hydrology_model; 15 int numberofelements;16 17 /*Fetch data needed: */18 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);19 15 20 16 /*Now, do we really want DC?*/ … … 26 22 if(!isefficientlayer) return; 27 23 28 /*Fetch data needed: */29 iomodel->FetchData(1,MeshElementsEnum);30 31 24 /*Update elements: */ 32 25 int counter=0; 33 for(int i=0;i< numberofelements;i++){26 for(int i=0;i<iomodel->numberofelements;i++){ 34 27 if(iomodel->my_elements[i]){ 35 28 Element* element=(Element*)elements->GetObjectByOffset(counter); … … 48 41 iomodel->FetchDataToInput(elements,BasalforcingsMeltingRateEnum); 49 42 iomodel->FetchDataToInput(elements,EplHeadEnum); 50 51 /*Free data: */52 iomodel->DeleteData(1,MeshElementsEnum);53 43 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/CreateLoadsHydrologyDCInefficient.cpp
r15000 r15428 11 11 /*Intermediary*/ 12 12 int hydrology_model; 13 int numberofvertices;14 Pengrid *pengrid = NULL;15 13 16 14 /*Recover pointer: */ … … 19 17 /*Fetch parameters: */ 20 18 iomodel->Constant(&hydrology_model,HydrologyModelEnum); 21 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);22 19 23 20 /*Create loads if they do not exist yet*/ … … 30 27 31 28 //create penalties for nodes: no node can have a temperature over the melting point 32 iomodel->FetchData(1,MeshElementsEnum);33 29 CreateSingleNodeToElementConnectivity(iomodel); 34 35 for(int i=0;i<numberofvertices;i++){ 30 for(int i=0;i<iomodel->numberofvertices;i++){ 36 31 /*keep only this partition's nodes:*/ 37 32 if((iomodel->my_vertices[i]==1)){ … … 39 34 } 40 35 } 41 iomodel->DeleteData(1,MeshElementsEnum);42 36 43 37 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/CreateNodesHydrologyDCInefficient.cpp
r15000 r15428 12 12 13 13 /*Intermediary*/ 14 int i;15 14 bool continuous_galerkin=true; 16 15 int hydrology_model; 17 int numberofvertices;18 16 19 17 /*Fetch parameters: */ 20 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);21 18 iomodel->Constant(&hydrology_model,HydrologyModelEnum); 22 19 … … 38 35 /*Create nodes and vertices: */ 39 36 iomodel->FetchData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 40 for (i=0;i<numberofvertices;i++){37 for(int i=0;i<iomodel->numberofvertices;i++){ 41 38 42 39 if(iomodel->my_vertices[i]){ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyDCInefficient/UpdateElementsHydrologyDCInefficient.cpp
r15195 r15428 13 13 bool isefficientlayer; 14 14 int hydrology_model; 15 int numberofelements;16 15 17 16 /*Fetch data needed: */ 18 17 iomodel->Constant(&hydrology_model,HydrologyModelEnum); 19 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);20 18 21 19 /*Now, do we really want DC?*/ … … 24 22 /*Fetch data needed: */ 25 23 iomodel->Constant(&isefficientlayer,HydrologydcIsefficientlayerEnum); 26 iomodel->FetchData(1,MeshElementsEnum);27 24 28 25 /*Update elements: */ 29 26 int counter=0; 30 for(int i=0;i< numberofelements;i++){27 for(int i=0;i<iomodel->numberofelements;i++){ 31 28 if(iomodel->my_elements[i]){ 32 29 Element* element=(Element*)elements->GetObjectByOffset(counter); … … 46 43 iomodel->FetchDataToInput(elements,SedimentHeadEnum); 47 44 if(isefficientlayer)iomodel->FetchDataToInput(elements,HydrologydcMaskEplactiveEnum); 48 49 /*Free data: */50 iomodel->DeleteData(1,MeshElementsEnum);51 45 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/CreateNodesHydrologyShreve.cpp
r15000 r15428 12 12 13 13 /*Intermediary*/ 14 int i;15 14 int hydrology_model; 16 15 bool continuous_galerkin=true; 17 int numberofvertices;18 16 19 17 /*Fetch parameters: */ 20 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);21 18 iomodel->Constant(&hydrology_model,HydrologyModelEnum); 22 19 … … 38 35 /*Create nodes and vertices: */ 39 36 iomodel->FetchData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 40 for (i=0;i<numberofvertices;i++){37 for(int i=0;i<iomodel->numberofvertices;i++){ 41 38 42 39 if(iomodel->my_vertices[i]){ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/HydrologyShreve/UpdateElementsHydrologyShreve.cpp
r15000 r15428 12 12 13 13 int hydrology_model; 14 int numberofelements;15 14 16 15 /*Fetch data needed: */ 17 16 iomodel->Constant(&hydrology_model,HydrologyModelEnum); 18 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);19 17 20 18 /*Now, do we really want Shreve?*/ 21 19 if(hydrology_model!=HydrologyshreveEnum) return; 22 20 23 /*Fetch data needed: */24 iomodel->FetchData(1,MeshElementsEnum);25 26 21 /*Update elements: */ 27 22 int counter=0; 28 for(int i=0;i< numberofelements;i++){23 for(int i=0;i<iomodel->numberofelements;i++){ 29 24 if(iomodel->my_elements[i]){ 30 25 Element* element=(Element*)elements->GetObjectByOffset(counter); … … 46 41 elements->InputDuplicate(WatercolumnEnum,WaterColumnOldEnum); 47 42 48 /*Free data: */49 iomodel->DeleteData(1,MeshElementsEnum);50 43 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Melting/CreateLoadsMelting.cpp
r15423 r15428 8 8 9 9 void CreateLoadsMelting(Loads** ploads, IoModel* iomodel){ 10 11 /*Intermediary*/12 int numberofvertices;13 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);14 10 15 11 /*if 2d: Error*/ … … 23 19 24 20 //create penalties for nodes: no node can have a temperature over the melting point 25 iomodel->FetchData( 2,MeshVertexonbedEnum,MeshElementsEnum);21 iomodel->FetchData(1,MeshVertexonbedEnum); 26 22 CreateSingleNodeToElementConnectivity(iomodel); 27 23 28 for(int i=0;i< numberofvertices;i++){24 for(int i=0;i<iomodel->numberofvertices;i++){ 29 25 if((iomodel->my_vertices[i]==1)){ 30 26 if (reCast<int>(iomodel->Data(MeshVertexonbedEnum)[i])){ … … 33 29 } 34 30 } 35 iomodel->DeleteData( 2,MeshVertexonbedEnum,MeshElementsEnum);31 iomodel->DeleteData(1,MeshVertexonbedEnum); 36 32 37 33 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Melting/CreateNodesMelting.cpp
r15000 r15428 12 12 13 13 /*Intermediary*/ 14 int i;15 14 bool continuous_galerkin=true; 16 int numberofvertices;17 18 /*Fetch parameters: */19 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);20 15 21 16 /*Recover pointer: */ … … 30 25 /*First fetch data: */ 31 26 iomodel->FetchData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 32 for (i=0;i<numberofvertices;i++){27 for(int i=0;i<iomodel->numberofvertices;i++){ 33 28 34 29 if(iomodel->my_vertices[i]){ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Melting/UpdateElementsMelting.cpp
r15423 r15428 11 11 void UpdateElementsMelting(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){ 12 12 13 int numberofelements;14 15 /*Fetch parameters: */16 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);17 18 13 /*Now, is the model 3d? otherwise, do nothing: */ 19 14 if(iomodel->dim==2)return; 20 15 21 /*Fetch data needed: */22 iomodel->FetchData(1,MeshElementsEnum);23 24 16 /*Update elements: */ 25 17 int counter=0; 26 for(int i=0;i< numberofelements;i++){18 for(int i=0;i<iomodel->numberofelements;i++){ 27 19 if(iomodel->my_elements[i]){ 28 20 Element* element=(Element*)elements->GetObjectByOffset(counter); … … 48 40 iomodel->FetchDataToInput(elements,BasalforcingsMeltingRateEnum); 49 41 iomodel->FetchDataToInput(elements,PressureEnum); 50 51 /*Free data: */52 iomodel->DeleteData(1,MeshElementsEnum);53 42 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/NodesPartitioning.cpp
r15423 r15428 32 32 void ContinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices, IoModel* iomodel){ 33 33 34 /*as many nodes as there are vertices */35 int numberofvertices;36 37 34 /*output: */ 38 bool* my_nodes=NULL; 39 40 /*Fetch parameters: */ 41 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum); 42 43 my_nodes=xNew<bool>(numberofvertices); 44 for(int i=0;i<numberofvertices;i++) my_nodes[i]=(bool)my_vertices[i]; 35 bool* my_nodes=xNew<bool>(iomodel->numberofvertices); 36 for(int i=0;i<iomodel->numberofvertices;i++) my_nodes[i]=(bool)my_vertices[i]; 45 37 46 38 /*Assign output pointers:*/ … … 49 41 50 42 void DiscontinuousGalerkinNodesPartitioning(bool** pmy_nodes,bool* my_elements, int* my_vertices, IoModel* iomodel){ 51 52 int numberofelements;53 54 /*Fetch parameters: */55 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);56 43 57 44 /*each element has it own nodes (as many as vertices) + additional nodes from neighbouring elements for each edge. This yields to a very different partition for … … 80 67 81 68 /*Allocate*/ 82 my_nodes=xNewZeroInit<bool>(3* numberofelements);69 my_nodes=xNewZeroInit<bool>(3*iomodel->numberofelements); 83 70 84 71 /*First: add all the nodes of all the elements belonging to this cpu*/ 85 72 if (iomodel->dim==2){ 86 for (i=0;i< numberofelements;i++){73 for (i=0;i<iomodel->numberofelements;i++){ 87 74 if (my_elements[i]){ 88 75 my_nodes[3*i+0]=true; … … 100 87 /*Get edges and elements*/ 101 88 iomodel->FetchData(&edges,&numberofedges,&cols,MeshEdgesEnum); 102 iomodel->FetchData(&elements,NULL,NULL,MeshElementsEnum);103 89 if (cols!=4) _error_("field edges should have 4 columns"); 104 90 … … 124 110 pos=UNDEF; 125 111 for(int j=0;j<3;j++){ 126 if (elements[3*e2+j]==i1) pos=j;112 if(iomodel->elements[3*e2+j]==i1) pos=j; 127 113 } 128 114 … … 148 134 149 135 /*Free data: */ 150 xDelete<int>(elements);151 136 xDelete<int>(edges); 152 137 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/CreateLoadsPrognostic.cpp
r15000 r15428 17 17 int numberofedges; 18 18 int numvertex_pairing; 19 int numberofelements;20 19 21 20 /*Fetch parameters: */ 22 21 iomodel->Constant(&stabilization,PrognosticStabilizationEnum); 23 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);24 22 iomodel->Constant(&numberofedges,MeshNumberofedgesEnum); 25 23 … … 34 32 35 33 /*Get edges and elements*/ 36 iomodel->FetchData( 3,MeshEdgesEnum,MeshElementsEnum,ThicknessEnum);34 iomodel->FetchData(2,MeshEdgesEnum,ThicknessEnum); 37 35 38 36 /*First load data:*/ … … 50 48 51 49 /*Free data: */ 52 iomodel->DeleteData( 3,MeshEdgesEnum,MeshElementsEnum,ThicknessEnum);50 iomodel->DeleteData(2,MeshEdgesEnum,ThicknessEnum); 53 51 } 54 52 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/CreateNodesPrognostic.cpp
r15423 r15428 17 17 int io_index; 18 18 bool continuous_galerkin=true; 19 int numberofelements; 20 int numberofvertices; 21 int stabilization; 19 int stabilization; 22 20 23 21 /*Fetch parameters: */ 24 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);25 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);26 22 iomodel->Constant(&stabilization,PrognosticStabilizationEnum); 27 23 … … 40 36 41 37 /*First fetch data: */ 42 iomodel->FetchData( 7,MeshElementsEnum,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum);38 iomodel->FetchData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 43 39 if(continuous_galerkin){ 44 40 45 41 /*Build Nodes dataset (Continuous Galerkin)*/ 46 for (i=0;i< numberofvertices;i++){42 for (i=0;i<iomodel->numberofvertices;i++){ 47 43 48 44 if(iomodel->my_vertices[i]){ … … 57 53 58 54 /*Build Nodes dataset -> 3 for each element (Discontinuous Galerkin)*/ 59 for (i=0;i< numberofelements;i++){55 for (i=0;i<iomodel->numberofelements;i++){ 60 56 for (j=0;j<3;j++){ 61 57 … … 63 59 64 60 //Get index of the vertex on which the current node is located 65 vertex_id= reCast<int>(*(iomodel->Data(MeshElementsEnum)+3*i+j)); //(Matlab indexing)66 io_index=vertex_id-1; 67 _assert_(vertex_id>0 && vertex_id<= numberofvertices);61 vertex_id=iomodel->elements[+3*i+j]; //(Matlab indexing) 62 io_index=vertex_id-1; //(C indexing) 63 _assert_(vertex_id>0 && vertex_id<=iomodel->numberofvertices); 68 64 69 65 //Compute Node id … … 79 75 80 76 /*Clean fetched data: */ 81 iomodel->DeleteData( 7,MeshElementsEnum,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum);77 iomodel->DeleteData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 82 78 83 79 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
r15423 r15428 25 25 iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum); 26 26 iomodel->Constant(&issmbgradients,SurfaceforcingsIssmbgradientsEnum); 27 iomodel->FetchData(1,MeshElementsEnum);28 27 29 28 /*Update elements: */ … … 94 93 iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum); 95 94 } 96 97 /*Free data: */98 iomodel->DeleteData(1,MeshElementsEnum);99 95 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/SurfaceSlope/CreateNodesSurfaceSlope.cpp
r15000 r15428 13 13 /*Intermediary*/ 14 14 bool continuous_galerkin=true; 15 int numberofvertices;16 17 /*Fetch parameters: */18 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);19 15 20 16 /*Recover pointer: */ … … 30 26 iomodel->FetchData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 31 27 32 for(int i=0;i< numberofvertices;i++){28 for(int i=0;i<iomodel->numberofvertices;i++){ 33 29 if(iomodel->my_vertices[i]){ 34 30 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/SurfaceSlope/UpdateElementsSurfaceSlope.cpp
r15423 r15428 11 11 void UpdateElementsSurfaceSlope(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){ 12 12 13 int numberofelements;14 15 /*Fetch data needed: */16 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);17 iomodel->FetchData(1,MeshElementsEnum);18 19 13 /*Update elements: */ 20 14 int counter=0; 21 for(int i=0;i< numberofelements;i++){15 for(int i=0;i<iomodel->numberofelements;i++){ 22 16 if(iomodel->my_elements[i]){ 23 17 Element* element=(Element*)elements->GetObjectByOffset(counter); … … 35 29 iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum); 36 30 } 37 38 /*Free data: */39 iomodel->DeleteData(1,MeshElementsEnum);40 31 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CreateLoadsThermal.cpp
r15423 r15428 9 9 void CreateLoadsThermal(Loads** ploads, IoModel* iomodel){ 10 10 11 /*Intermediary*/12 int numberofvertices;13 Pengrid *pengrid = NULL;14 15 11 /*Recover pointer: */ 16 12 Loads* loads=*ploads; … … 18 14 if(iomodel->dim==2) _error_("2d meshes not supported yet"); 19 15 20 /*Fetch parameters: */21 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);22 23 16 /*Create loads if they do not exist yet*/ 24 17 if(!loads) loads = new Loads(); 25 18 26 19 //create penalties for nodes: no node can have a temperature over the melting point 27 iomodel->FetchData( 2,ThermalSpctemperatureEnum,MeshElementsEnum);20 iomodel->FetchData(1,ThermalSpctemperatureEnum); 28 21 CreateSingleNodeToElementConnectivity(iomodel); 29 22 30 for(int i=0;i< numberofvertices;i++){23 for(int i=0;i<iomodel->numberofvertices;i++){ 31 24 32 25 /*keep only this partition's nodes:*/ … … 37 30 } 38 31 } 39 iomodel->DeleteData( 2,ThermalSpctemperatureEnum,MeshElementsEnum);32 iomodel->DeleteData(1,ThermalSpctemperatureEnum); 40 33 41 34 /*Assign output pointer: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/CreateNodesThermal.cpp
r15000 r15428 14 14 bool continuous_galerkin=true; 15 15 16 /*Fetch parameters: */17 int numberofvertices;18 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum);19 20 16 /*Recover pointer: */ 21 17 Nodes* nodes=*pnodes; … … 30 26 iomodel->FetchData(6,MeshVertexonbedEnum,MeshVertexonsurfaceEnum,MaskVertexongroundediceEnum,MaskVertexonfloatingiceEnum,FlowequationVertexEquationEnum,MaskVertexonwaterEnum); 31 27 32 for(int i=0;i< numberofvertices;i++){28 for(int i=0;i<iomodel->numberofvertices;i++){ 33 29 if(iomodel->my_vertices[i]){ 34 30 /*Add node to nodes dataset: */ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp
r15423 r15428 11 11 void UpdateElementsThermal(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){ 12 12 13 int numberofelements;14 bool dakota_analysis;15 16 13 /*Now, is the model 3d? otherwise, do nothing: */ 17 14 if(iomodel->dim==2)return; 18 15 19 /*Fetch parameters: */20 iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);21 iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);22 23 /*Fetch data needed: */24 iomodel->FetchData(1,MeshElementsEnum);25 26 16 /*Update elements: */ 27 17 int counter=0; 28 for(int i=0;i< numberofelements;i++){18 for(int i=0;i<iomodel->numberofelements;i++){ 29 19 if(iomodel->my_elements[i]){ 30 20 Element* element=(Element*)elements->GetObjectByOffset(counter); … … 54 44 iomodel->FetchDataToInput(elements,VzEnum); 55 45 46 bool dakota_analysis; 47 iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum); 56 48 if(dakota_analysis){ 57 49 elements->InputDuplicate(TemperatureEnum,QmuTemperatureEnum); … … 59 51 elements->InputDuplicate(BasalforcingsMeltingRateEnum,QmuMeltingEnum); 60 52 } 61 62 /*Free data: */63 iomodel->DeleteData(1,MeshElementsEnum);64 53 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Transient/UpdateElementsTransient.cpp
r15000 r15428 13 13 bool isgl; 14 14 int migration_style; 15 int i,numberofvertices;16 15 IssmDouble rho_ice,rho_water; 17 16 IssmDouble *phi = NULL; … … 26 25 iomodel->Constant(&rho_ice,MaterialsRhoIceEnum); 27 26 iomodel->Constant(&rho_water,MaterialsRhoWaterEnum); 28 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum); 29 iomodel->FetchData(3,MeshElementsEnum,ThicknessEnum,BathymetryEnum); 27 iomodel->FetchData(2,ThicknessEnum,BathymetryEnum); 30 28 31 29 /*Create phi vector */ 32 phi=xNew<IssmDouble>( numberofvertices);33 for (i=0;i<numberofvertices;i++){30 phi=xNew<IssmDouble>(iomodel->numberofvertices); 31 for(int i=0;i<iomodel->numberofvertices;i++){ 34 32 if(iomodel->my_vertices[i]){ 35 33 phi[i] = iomodel->Data(ThicknessEnum)[i] + rho_water/rho_ice * iomodel->Data(BathymetryEnum)[i]; … … 38 36 39 37 /*Update elements: */ 40 for(i =0;i<elements->Size();i++){38 for(int i=0;i<elements->Size();i++){ 41 39 Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(i)); 42 element->InputCreate(phi,element->Sid(),iomodel, numberofvertices,1,1,GLlevelsetEnum,1);40 element->InputCreate(phi,element->Sid(),iomodel,iomodel->numberofvertices,1,1,GLlevelsetEnum,1); 43 41 } 44 42 45 43 /*Free ressources:*/ 46 iomodel->DeleteData( 3,MeshElementsEnum,ThicknessEnum,BathymetryEnum);44 iomodel->DeleteData(2,ThicknessEnum,BathymetryEnum); 47 45 xDelete<IssmDouble>(phi); 48 46 } -
issm/trunk-jpl/src/wrappers/MeshPartition/MeshPartition.cpp
r15106 r15428 22 22 int numberofelements; 23 23 int numberofvertices; 24 double*elements = NULL;24 int *elements = NULL; 25 25 int elements_width; 26 26 27 27 int numberofelements2d; 28 28 int numberofvertices2d; 29 double* elements2d=NULL;29 int* elements2d=NULL; 30 30 31 31 int numberoflayers;
Note:
See TracChangeset
for help on using the changeset viewer.