Changeset 24935
- Timestamp:
- 05/30/20 22:18:26 (5 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 2 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/Makefile.am
r24919 r24935 320 320 ./classes/Inputs2/Inputs2.cpp \ 321 321 ./classes/Inputs2/BoolInput2.cpp \ 322 ./classes/Inputs2/DoubleInput2.cpp \ 322 323 ./classes/Inputs2/IntInput2.cpp \ 323 324 ./classes/Inputs2/ElementInput2.cpp \ -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r24889 r24935 1189 1189 }/*}}}*/ 1190 1190 void Element::GetInput2Value(int* pvalue,int inputenum){/*{{{*/ 1191 1192 this->inputs2->GetInputValue(pvalue,inputenum,this->lid); 1193 1194 }/*}}}*/ 1195 void Element::GetInput2Value(IssmDouble* pvalue,int inputenum){/*{{{*/ 1191 1196 1192 1197 this->inputs2->GetInputValue(pvalue,inputenum,this->lid); -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r24924 r24935 102 102 void GetInput2Value(bool* pvalue,int enum_type); 103 103 void GetInput2Value(int* pvalue,int enum_type); 104 void GetInput2Value(IssmDouble* pvalue,int enum_type); 104 105 void GetInputValue(IssmDouble* pvalue,Gauss* gauss,int enum_type); 105 106 Node* GetNode(int nodeindex); -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r24926 r24935 5584 5584 bool computerigid = true; 5585 5585 5586 /*recover computational flags: */5587 this->parameters->FindParam(&computerigid,SealevelriseRigidEnum);5588 if(!computerigid) return; //we are running eustatic solution only.5589 5590 5586 /*how many dofs are we working with here? */ 5591 5587 this->parameters->FindParam(&gsize,MeshNumberofverticesEnum); … … 5650 5646 /*Add in inputs:*/ 5651 5647 this->inputs2->SetArrayInput(SealevelriseIndicesEnum,this->lid,indices,gsize); 5648 5649 /*Another quantity, area:*/ 5650 this->inputs2->SetDoubleInput(AreaEnum,this->lid,GetAreaSpherical()); 5652 5651 5653 5652 return; … … 5741 5740 this->parameters->FindParam(&scaleoceanarea,SealevelriseOceanAreaScalingEnum); 5742 5741 5743 /*recover elastic green function:*/5742 /*recover precomputed green function kernels:*/ 5744 5743 DoubleVecParam* parameter = static_cast<DoubleVecParam*>(this->parameters->FindParamObject(SealevelriseGRigidEnum)); _assert_(parameter); 5745 5744 parameter->GetParameterValueByPointer(&G_rigid_precomputed,&M); … … 5756 5755 if(computerigid){this->inputs2->GetArrayPtr(SealevelriseIndicesEnum,this->lid,&indices,&dummy); _assert_(dummy==gsize);} 5757 5756 5758 /*Compute area of element. Scale it by grounded fraction if not fully grounded: */ 5759 area=GetAreaSpherical(); 5757 /*Get area of element: precomputed in the sealevelrise_core_geometry:*/ 5758 this->GetInput2Value(&area,AreaEnum); 5759 5760 5760 if(notfullygrounded){ 5761 5761 IssmDouble phi=0; … … 5925 5925 /*}}}*/ 5926 5926 5927 /* Compute area of element. For now, we dont do partially grounded elements:*/5928 area=GetAreaSpherical();5927 /*Get area of element: precomputed in the sealevelrise_core_geometry:*/ 5928 this->GetInput2Value(&area,AreaEnum); 5929 5929 5930 5930 /*Compute bottom pressure change: */ … … 6037 6037 S=0; for(int i=0;i<NUMVERTICES;i++) S+=Sg_old[this->vertices[i]->Sid()]/NUMVERTICES; 6038 6038 6039 /* Compute area of element:*/6040 area=GetAreaSpherical();6039 /*Get area of element: precomputed in the sealevelrise_core_geometry:*/ 6040 this->GetInput2Value(&area,AreaEnum); 6041 6041 6042 6042 /*recover rigid and elastic green functions:*/ … … 6140 6140 if(computerigid){this->inputs2->GetArrayPtr(SealevelriseIndicesEnum,this->lid,&indices,&dummy); _assert_(dummy==gsize);} 6141 6141 6142 /* compute area of element:*/6143 area=GetAreaSpherical();6142 /*Get area of element: precomputed in the sealevelrise_core_geometry:*/ 6143 this->GetInput2Value(&area,AreaEnum); 6144 6144 6145 6145 /*figure out gravity center of our element (Cartesian): */ … … 6184 6184 IssmDouble N_azim, E_azim; 6185 6185 6186 /*we are going to use the result of these masks a lot: */ 6187 bool isiceonlyinelement=IsIceOnlyInElement(); 6188 bool isoceaninelement=IsOceanInElement(); 6189 6186 6190 for(int i=0;i<gsize;i++){ 6187 6191 … … 6215 6219 6216 6220 /*Add all components to the pUp solution vectors:*/ 6217 if( IsIceOnlyInElement()){6221 if(isiceonlyinelement){ 6218 6222 Up[i]+=3*rho_ice/rho_earth*area/eartharea*I*U_elastic[i]; 6219 6223 if(horiz){ … … 6222 6226 } 6223 6227 } 6224 else if( IsOceanInElement()){6228 else if(isoceaninelement){ 6225 6229 Up[i]+=3*rho_water/rho_earth*area/eartharea*S*U_elastic[i]; 6226 6230 if(horiz){ -
issm/trunk-jpl/src/c/classes/Inputs2/Inputs2.cpp
r24926 r24935 15 15 #include "./BoolInput2.h" 16 16 #include "./IntInput2.h" 17 #include "./DoubleInput2.h" 17 18 #include "./ElementInput2.h" 18 19 #include "./SegInput2.h" … … 518 519 input->GetInput(pvalue,index); 519 520 }/*}}}*/ 521 void Inputs2::GetInputValue(IssmDouble* pvalue,int enum_in,int index){/*{{{*/ 522 523 /*Get input id*/ 524 int id = EnumToIndex(enum_in); 525 526 /*Create it if necessary*/ 527 if(this->inputs[id]){ 528 if(this->inputs[id]->ObjectEnum()!=DoubleInput2Enum) _error_(EnumToStringx(this->inputs[id]->ObjectEnum())<<" cannot return a int"); 529 } 530 else{ 531 int* temp = xNew<int>(3); 532 _error_("Input "<<EnumToStringx(enum_in)<<" not found"); 533 } 534 535 /*Set input*/ 536 DoubleInput2* input = xDynamicCast<DoubleInput2*>(this->inputs[id]); 537 input->GetInput(pvalue,index); 538 539 }/*}}}*/ 520 540 void Inputs2::ResultInterpolation(int* pinterpolation,int* pnodesperelement,int* parray_size, int output_enum){/*{{{*/ 521 541 … … 568 588 input->SetInput(index,value); 569 589 }/*}}}*/ 590 void Inputs2::SetDoubleInput(int enum_in,int index,IssmDouble value){/*{{{*/ 591 592 /*Get input id*/ 593 int id = EnumToIndex(enum_in); 594 595 /*Create it if necessary*/ 596 if(this->inputs[id]){ 597 if(this->inputs[id]->ObjectEnum()!=DoubleInput2Enum) _error_("cannot add a double to a "<<EnumToStringx(this->inputs[id]->ObjectEnum())); 598 } 599 else{ 600 this->inputs[id] = new DoubleInput2(this->numberofelements_local); 601 } 602 603 /*Set input*/ 604 DoubleInput2* input = xDynamicCast<DoubleInput2*>(this->inputs[id]); 605 input->SetInput(index,value); 606 }/*}}}*/ 570 607 void Inputs2::SetArrayInput(int enum_in,int row,IssmDouble* values,int numlayers){/*{{{*/ 571 608 -
issm/trunk-jpl/src/c/classes/Inputs2/Inputs2.h
r24926 r24935 66 66 void GetInputValue(bool* pvalue,int enum_in,int index); 67 67 void GetInputValue(int* pvalue,int enum_in,int index); 68 void GetInputValue(IssmDouble* pvalue,int enum_in,int index); 68 69 void ResultInterpolation(int* pinterpolation,int*nodesperelement,int* parray_size, int output_enum); 69 70 void SetInput(int enum_in,int index,bool value); 70 71 void SetInput(int enum_in,int index,int value); 72 void SetDoubleInput(int enum_in,int index,IssmDouble value); 71 73 void SetTransientInput(int enum_in,IssmDouble* times,int numtimes); 72 74 TransientInput2* SetDatasetTransientInput(int enum_in,int id,IssmDouble* times,int numtimes); -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r24924 r24935 804 804 syn keyword cConstant SurfaceAbsMisfitEnum 805 805 syn keyword cConstant SurfaceAbsVelMisfitEnum 806 syn keyword cConstant AreaEnum 806 807 syn keyword cConstant SurfaceAreaEnum 807 808 syn keyword cConstant SurfaceAverageVelMisfitEnum … … 979 980 syn keyword cConstant BoolInput2Enum 980 981 syn keyword cConstant IntInput2Enum 982 syn keyword cConstant DoubleInput2Enum 981 983 syn keyword cConstant BoolParamEnum 982 984 syn keyword cConstant BoundaryEnum … … 1353 1355 syn keyword cType Definition 1354 1356 syn keyword cType DependentObject 1357 syn keyword cType DoubleInput2 1355 1358 syn keyword cType DoubleMatArrayParam 1356 1359 syn keyword cType DoubleMatParam -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r24924 r24935 802 802 SurfaceAbsMisfitEnum, 803 803 SurfaceAbsVelMisfitEnum, 804 AreaEnum, 804 805 SurfaceAreaEnum, 805 806 SurfaceAverageVelMisfitEnum, … … 979 980 BoolInput2Enum, 980 981 IntInput2Enum, 982 DoubleInput2Enum, 981 983 BoolParamEnum, 982 984 BoundaryEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r24924 r24935 806 806 case SurfaceAbsMisfitEnum : return "SurfaceAbsMisfit"; 807 807 case SurfaceAbsVelMisfitEnum : return "SurfaceAbsVelMisfit"; 808 case AreaEnum : return "Area"; 808 809 case SurfaceAreaEnum : return "SurfaceArea"; 809 810 case SurfaceAverageVelMisfitEnum : return "SurfaceAverageVelMisfit"; … … 981 982 case BoolInput2Enum : return "BoolInput2"; 982 983 case IntInput2Enum : return "IntInput2"; 984 case DoubleInput2Enum : return "DoubleInput2"; 983 985 case BoolParamEnum : return "BoolParam"; 984 986 case BoundaryEnum : return "Boundary"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r24924 r24935 824 824 else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum; 825 825 else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum; 826 else if (strcmp(name,"Area")==0) return AreaEnum; 826 827 else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum; 827 828 else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum; … … 874 875 else if (strcmp(name,"Outputdefinition12")==0) return Outputdefinition12Enum; 875 876 else if (strcmp(name,"Outputdefinition13")==0) return Outputdefinition13Enum; 876 else if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum; 880 if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum; 881 else if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum; 881 882 else if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum; 882 883 else if (strcmp(name,"Outputdefinition17")==0) return Outputdefinition17Enum; … … 997 998 else if (strcmp(name,"BasalforcingsPico")==0) return BasalforcingsPicoEnum; 998 999 else if (strcmp(name,"BeckmannGoosseFloatingMeltRate")==0) return BeckmannGoosseFloatingMeltRateEnum; 999 else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; 1003 if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum; 1004 else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; 1004 1005 else if (strcmp(name,"BoolInput")==0) return BoolInputEnum; 1005 1006 else if (strcmp(name,"BoolInput2")==0) return BoolInput2Enum; 1006 1007 else if (strcmp(name,"IntInput2")==0) return IntInput2Enum; 1008 else if (strcmp(name,"DoubleInput2")==0) return DoubleInput2Enum; 1007 1009 else if (strcmp(name,"BoolParam")==0) return BoolParamEnum; 1008 1010 else if (strcmp(name,"Boundary")==0) return BoundaryEnum; … … 1119 1121 else if (strcmp(name,"IceMass")==0) return IceMassEnum; 1120 1122 else if (strcmp(name,"IceMassScaled")==0) return IceMassScaledEnum; 1121 else if (strcmp(name,"IceVolumeAboveFloatation")==0) return IceVolumeAboveFloatationEnum;1122 else if (strcmp(name,"IceVolumeAboveFloatationScaled")==0) return IceVolumeAboveFloatationScaledEnum;1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"IceVolume")==0) return IceVolumeEnum; 1126 if (strcmp(name,"IceVolumeAboveFloatation")==0) return IceVolumeAboveFloatationEnum; 1127 else if (strcmp(name,"IceVolumeAboveFloatationScaled")==0) return IceVolumeAboveFloatationScaledEnum; 1128 else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum; 1127 1129 else if (strcmp(name,"IceVolumeScaled")==0) return IceVolumeScaledEnum; 1128 1130 else if (strcmp(name,"IcefrontMassFlux")==0) return IcefrontMassFluxEnum; … … 1242 1244 else if (strcmp(name,"Penpair")==0) return PenpairEnum; 1243 1245 else if (strcmp(name,"Penta")==0) return PentaEnum; 1244 else if (strcmp(name,"PentaInput")==0) return PentaInputEnum;1245 else if (strcmp(name,"Profiler")==0) return ProfilerEnum;1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"ProfilingCurrentFlops")==0) return ProfilingCurrentFlopsEnum; 1249 if (strcmp(name,"PentaInput")==0) return PentaInputEnum; 1250 else if (strcmp(name,"Profiler")==0) return ProfilerEnum; 1251 else if (strcmp(name,"ProfilingCurrentFlops")==0) return ProfilingCurrentFlopsEnum; 1250 1252 else if (strcmp(name,"ProfilingCurrentMem")==0) return ProfilingCurrentMemEnum; 1251 1253 else if (strcmp(name,"ProfilingSolutionTime")==0) return ProfilingSolutionTimeEnum;
Note:
See TracChangeset
for help on using the changeset viewer.