Changeset 16186
- Timestamp:
- 09/19/13 14:23:51 (12 years ago)
- Location:
- issm/trunk-jpl/src/c/classes
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Element.h
r16042 r16186 66 66 virtual void InputToResult(int enum_type,int step,IssmDouble time)=0; 67 67 virtual void InputDuplicate(int original_enum,int new_enum)=0; 68 virtual void InputCreate(IssmDouble scalar,int name,int code)=0;69 68 virtual void InputCreate(IssmDouble* vector, int index,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code)=0; 70 69 virtual void RequestedOutput(int output_enum,int step,IssmDouble time)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r16167 r16186 1859 1859 /*ArtificialNoise: */ 1860 1860 input->ArtificialNoise(min,max); 1861 }1862 /*}}}*/1863 /*FUNCTION Penta::InputCreate(IssmDouble scalar,int enum,int code);{{{*/1864 void Penta::InputCreate(IssmDouble scalar,int name,int code){1865 1866 /*Check that name is an element input*/1867 if (!IsInput(name)) return;1868 1869 if ((code==5) || (code==1)){ //boolean1870 this->inputs->AddInput(new BoolInput(name,reCast<bool,IssmDouble>(scalar)));1871 }1872 else if ((code==6) || (code==2)){ //integer1873 this->inputs->AddInput(new IntInput(name,reCast<int,IssmDouble>(scalar)));1874 }1875 else if ((code==7) || (code==3)){ //IssmDouble1876 this->inputs->AddInput(new DoubleInput(name,scalar));1877 }1878 else _error_("could not recognize nature of vector from code " << code);1879 1880 1861 } 1881 1862 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r16125 r16186 94 94 int Sid(); 95 95 void InputArtificialNoise(int enum_type,IssmDouble min, IssmDouble max); 96 void InputCreate(IssmDouble scalar,int name,int code);97 96 void InputCreate(IssmDouble* vector, int index,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code); 98 97 void InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum=MeshElementsEnum); -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r16184 r16186 1466 1466 /*FUNCTION Tria::InputUpdateFromConstant(int value, int name);{{{*/ 1467 1467 void Tria::InputUpdateFromConstant(int constant, int name){ 1468 1468 1469 /*Check that name is an element input*/ 1469 if 1470 if(!IsInput(name)) return; 1470 1471 1471 1472 /*update input*/ … … 1475 1476 /*FUNCTION Tria::InputUpdateFromConstant(IssmDouble value, int name);{{{*/ 1476 1477 void Tria::InputUpdateFromConstant(IssmDouble constant, int name){ 1478 1477 1479 /*Check that name is an element input*/ 1478 if 1480 if(!IsInput(name)) return; 1479 1481 1480 1482 /*update input*/ … … 1484 1486 /*FUNCTION Tria::InputUpdateFromConstant(bool value, int name);{{{*/ 1485 1487 void Tria::InputUpdateFromConstant(bool constant, int name){ 1488 1486 1489 /*Check that name is an element input*/ 1487 if 1490 if(!IsInput(name)) return; 1488 1491 1489 1492 /*update input*/ … … 1762 1765 void Tria::InputUpdateFromVector(IssmDouble* vector, int name, int type){ 1763 1766 1764 1765 1767 /*Check that name is an element input*/ 1766 1768 if (!IsInput(name)) return; … … 1833 1835 xDelete<int>(doflist); 1834 1836 xDelete<IssmDouble>(values); 1835 1836 }1837 /*}}}*/1838 /*FUNCTION Tria::InputCreate(IssmDouble scalar,int enum,int code);{{{*/1839 void Tria::InputCreate(IssmDouble scalar,int name,int code){1840 1841 /*Check that name is an element input*/1842 if (!IsInput(name)) return;1843 1844 if ((code==5) || (code==1)){ //boolean1845 this->inputs->AddInput(new BoolInput(name,reCast<bool>(scalar)));1846 }1847 else if ((code==6) || (code==2)){ //integer1848 this->inputs->AddInput(new IntInput(name,reCast<int>(scalar)));1849 }1850 else if ((code==7) || (code==3)){ //IssmDouble1851 this->inputs->AddInput(new DoubleInput(name,scalar));1852 }1853 else _error_("could not recognize nature of vector from code " << code);1854 1837 1855 1838 } -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r16146 r16186 91 91 void GetVectorFromResults(Vector<IssmDouble>* vector,int offset,int enum_in,int interp); 92 92 void InputArtificialNoise(int enum_type,IssmDouble min, IssmDouble max); 93 void InputCreate(IssmDouble scalar,int name,int code);94 93 void InputCreate(IssmDouble* vector, int index,IoModel* iomodel,int M,int N,int vector_type,int vector_enum,int code); 95 94 void InputDepthAverageAtBase(int enum_type,int average_enum_type,int object_enum=MeshElementsEnum); -
issm/trunk-jpl/src/c/classes/IoModel.cpp
r16164 r16186 1048 1048 IssmDouble scalar; 1049 1049 char *string = NULL; 1050 IssmDouble * IssmDoublevector= NULL;1050 IssmDouble *doublearray = NULL; 1051 1051 int M,N; 1052 1052 … … 1060 1060 case 1: //boolean constant. {{{ 1061 1061 this->FetchData(&boolean,vector_enum); 1062 1063 /*Add boolean constant input to all elements: */ 1064 counter=0; 1065 for (i=0;i<numberofelements;i++){ 1066 if(this->my_elements[i]){ 1067 Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(counter)); 1068 element->InputCreate((IssmDouble)boolean,vector_enum,code); 1069 counter++; 1070 } 1062 for(i=0;i<elements->Size();i++){ 1063 Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(i)); 1064 element->InputUpdateFromConstant(boolean,vector_enum); 1071 1065 } 1072 1066 break; /*}}}*/ 1073 1067 case 2: //integer constant. {{{ 1074 1068 this->FetchData(&integer,vector_enum); 1075 1076 /*Add integer constant input to all elements: */ 1077 counter=0; 1078 for (i=0;i<numberofelements;i++){ 1079 if(this->my_elements[i]){ 1080 Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(counter)); 1081 element->InputCreate((IssmDouble)integer,vector_enum,code); 1082 counter++; 1083 } 1069 for(i=0;i<elements->Size();i++){ 1070 Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(i)); 1071 element->InputUpdateFromConstant(integer,vector_enum); 1084 1072 } 1085 1073 break; /*}}}*/ 1086 1074 case 3: //IssmDouble constant. {{{ 1087 1075 this->FetchData(&scalar,vector_enum); 1088 1089 /*Add IssmDouble constant input to all elements: */ 1090 counter=0; 1091 for (i=0;i<numberofelements;i++){ 1092 if(this->my_elements[i]){ 1093 Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(counter)); 1094 element->InputCreate(scalar,vector_enum,code); 1095 counter++; 1096 } 1076 for(i=0;i<elements->Size();i++){ 1077 Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(i)); 1078 element->InputUpdateFromConstant(scalar,vector_enum); 1097 1079 } 1098 1080 break; /*}}}*/ … … 1100 1082 1101 1083 /*Fetch vector:*/ 1102 this->FetchData(& IssmDoublevector,&M,&N,vector_enum); //we still have a IssmDoublevector, because it might include times in transient mode1084 this->FetchData(&doublearray,&M,&N,vector_enum); //we still have a doublearray, because it might include times in transient mode 1103 1085 /*Check we got something, otherwise fetch default: */ 1104 if( IssmDoublevector){1086 if(doublearray){ 1105 1087 defaulting=false; //we are not defaulting, because we do have a vector 1106 1088 } … … 1109 1091 if(default_vector_enum!=NoneEnum){ 1110 1092 /*yes. fetch it: */ 1111 this->FetchData(& IssmDoublevector,&M,&N,default_vector_enum);1112 if( IssmDoublevector){1093 this->FetchData(&doublearray,&M,&N,default_vector_enum); 1094 if(doublearray){ 1113 1095 defaulting=false; //we are not defaulting, because we do have a vector 1114 1096 } … … 1129 1111 if(this->my_elements[i]){ 1130 1112 Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(counter)); 1131 if(defaulting) element->Input Create(default_value,vector_enum,code);1132 else element->InputCreate( IssmDoublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.1113 if(defaulting) element->InputUpdateFromConstant(reCast<bool>(default_value),vector_enum); 1114 else element->InputCreate(doublearray,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements. 1133 1115 counter++; 1134 1116 } … … 1138 1120 1139 1121 /*Fetch vector:*/ 1140 this->FetchData(& IssmDoublevector,&M,&N,vector_enum); //we still have a IssmDoublevector, because it might include times in transient mode1122 this->FetchData(&doublearray,&M,&N,vector_enum); //we still have a doublearray, because it might include times in transient mode 1141 1123 /*Check we got something, otherwise fetch default: */ 1142 if( IssmDoublevector){1124 if(doublearray){ 1143 1125 defaulting=false; //we are not defaulting, because we do have a vector 1144 1126 } … … 1147 1129 if(default_vector_enum!=NoneEnum){ 1148 1130 /*yes. fetch it: */ 1149 this->FetchData(& IssmDoublevector,&M,&N,default_vector_enum);1150 if( IssmDoublevector){1131 this->FetchData(&doublearray,&M,&N,default_vector_enum); 1132 if(doublearray){ 1151 1133 defaulting=false; //we are not defaulting, because we do have a vector 1152 1134 } … … 1167 1149 if(this->my_elements[i]){ 1168 1150 Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(counter)); 1169 if(defaulting) element->Input Create(default_value,vector_enum,code);1170 else element->InputCreate( IssmDoublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.1151 if(defaulting) element->InputUpdateFromConstant(reCast<int>(default_value),vector_enum); 1152 else element->InputCreate(doublearray,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements. 1171 1153 counter++; 1172 1154 } … … 1176 1158 1177 1159 /*Fetch vector:*/ 1178 this->FetchData(& IssmDoublevector,&M,&N,vector_enum);1160 this->FetchData(&doublearray,&M,&N,vector_enum); 1179 1161 /*Check we got something, otherwise fetch default: */ 1180 if( IssmDoublevector){1162 if(doublearray){ 1181 1163 defaulting=false; //we are not defaulting, because we do have a vector 1182 1164 } … … 1185 1167 if(default_vector_enum!=NoneEnum){ 1186 1168 /*yes. fetch it: */ 1187 this->FetchData(& IssmDoublevector,&M,&N,default_vector_enum);1188 if( IssmDoublevector){1169 this->FetchData(&doublearray,&M,&N,default_vector_enum); 1170 if(doublearray){ 1189 1171 defaulting=false; //we are not defaulting, because we do have a vector 1190 1172 } … … 1205 1187 if(this->my_elements[i]){ 1206 1188 Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(counter)); 1207 if(defaulting) element->Input Create(default_value,vector_enum,code);1208 else element->InputCreate( IssmDoublevector,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements.1189 if(defaulting) element->InputUpdateFromConstant(default_value,vector_enum); 1190 else element->InputCreate(doublearray,i,this,M,N,vector_layout,vector_enum,code);//we need i to index into elements. 1209 1191 counter++; 1210 1192 } … … 1218 1200 } 1219 1201 /*Free ressources. Pay attention to not freeing an AD mode independent variable though!:*/ 1220 if (!this->independents[vector_enum] && !this->independents[default_vector_enum]) xDelete<IssmDouble>( IssmDoublevector);1202 if (!this->independents[vector_enum] && !this->independents[default_vector_enum]) xDelete<IssmDouble>(doublearray); 1221 1203 xDelete<char>(string); 1222 1204 }
Note:
See TracChangeset
for help on using the changeset viewer.