Changeset 11425
- Timestamp:
- 02/14/12 09:27:32 (13 years ago)
- Location:
- issm/trunk-jpl-damage
- Files:
-
- 28 deleted
- 83 edited
- 5 copied
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl-damage/INSTALL
r11414 r11425 1 For the installation process please go to the ISSM website: 2 1 For the installation process please go to the ISSM website 3 2 http://issm.jpl.nasa.gov/ -
issm/trunk-jpl-damage/cron/cronfiles/linux_cronfile
r11416 r11425 6 6 7 7 #cronjob 8 00 09 * * 1-5 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_daily 9 30 12 * * 1-5 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_daily 10 00 15 * * 1-5 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_daily 11 00 18 * * 1-5 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_daily 12 00 23 * * 1-5 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_nightly 13 00 20 * * 6 cd /u/astrid-r1b/schlegel/ExecutionNightlyRun && rm -r test* 14 00 21 * * 6 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/trunk-jpl/test/NightlyRun && make clean 15 00 22 * * 6 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/trunk-jpl/test/NightlyRun && rm -r qmu* 16 00 23 * * 6 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_validation 17 00 21 * * 7 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/trunk/test/NightlyRun && make clean 18 00 22 * * 7 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/trunk/test/NightlyRun && rm -r qmu* 19 00 23 * * 7 cd /u/astrid-r1b/schlegel/issmuci/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_schlegel_ucitrunk 8 00 09 * * 1-5 cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_daily 9 30 12 * * 1-5 cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_daily 10 00 15 * * 1-5 cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_daily 11 00 18 * * 1-5 cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_daily 12 00 23 * * 1-5 cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_nightly 13 00 23 * * 6 cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_validation 14 00 23 * * 7 cd /u/astrid-r1b/seroussi/issm/trunk-jpl/cron/ && ./nightlyrun.sh configs/linux64_seroussi_ucitrunk -
issm/trunk-jpl-damage/externalpackages/matlab/install.sh
r11413 r11425 5 5 6 6 #Select or create a new simlink 7 #ln -s /usr/local/pkgs/matlab-7.6/ install7 ln -s /usr/local/pkgs/matlab-7.6/ install 8 8 #ln -s /usr/local/matlab704/ install 9 9 #ln -s /usr/local/matlab711/ install 10 ln -s /usr/local/matlab712/ install10 #ln -s /usr/local/matlab712/ install 11 11 #ln -s /usr/local/pkgs/matlab-7.6/ install 12 12 #ln -s /Applications/MATLAB_R2008a/ install -
issm/trunk-jpl-damage/src/c/EnumDefinitions/EnumDefinitions.h
r11417 r11425 162 162 ThermalSpctemperatureEnum, 163 163 ThermalStabilizationEnum, 164 ThermalIsenthalpyEnum,165 164 ThicknessEnum, 166 165 TimesteppingCflCoefficientEnum, -
issm/trunk-jpl-damage/src/c/EnumDefinitions/Synchronize.sh
r11417 r11425 9 9 rm $ISSM_TIER/src/c/modules/EnumToStringx/EnumToStringx.cpp 10 10 rm $ISSM_TIER/src/c/modules/StringToEnumx/StringToEnumx.cpp 11 12 #Get number of enums13 NUMENUMS=$(wc -l temp | awk '{printf("%s",$1);}');14 11 15 12 #Take care of EnumToModelField.m first (easy) … … 98 95 int StringToEnumx(const char* name){ 99 96 100 int stage=1; 97 END 98 #core 99 cat temp | awk '{print "\t" ((NR==1)?"if":"else if") " (strcmp(name,\"" substr($2,1,length($2)-4) "\")==0) return " $2 ";"}' >> $ISSM_TIER//src/c/modules/StringToEnumx/StringToEnumx.cpp 100 #Footer 101 cat <<END >> $ISSM_TIER/src/c/modules/StringToEnumx/StringToEnumx.cpp 102 else _error_("Enum %s not found",name); 101 103 102 END103 104 #core105 i1=1;106 i2=120;107 for (( i=1 ; i<=100 ; i++ )); do108 echo " if(stage==$i){" >> $ISSM_TIER//src/c/modules/StringToEnumx/StringToEnumx.cpp109 awk -v i1=$i1 -v i2=$i2 '{if(NR>=i1 && NR<=i2) print $0 }' temp |110 awk '{print "\t" ((NR==1)?" if":" else if") " (strcmp(name,\"" substr($2,1,length($2)-4) "\")==0) return " $2 ";"}' >> $ISSM_TIER//src/c/modules/StringToEnumx/StringToEnumx.cpp111 echo " else stage=$(($i+1));" >> $ISSM_TIER//src/c/modules/StringToEnumx/StringToEnumx.cpp112 echo " }" >> $ISSM_TIER//src/c/modules/StringToEnumx/StringToEnumx.cpp113 114 if [ $i2 -ge $NUMENUMS ]; then break; fi115 let i1=$i1+120116 let i2=$i2+120117 done118 119 #footer120 cat <<END >> $ISSM_TIER/src/c/modules/StringToEnumx/StringToEnumx.cpp121 /*If we reach this point, the string provided has not been found*/122 _error_("Enum %s not found",name);123 104 } 124 105 END 125 106 #}}} 126 107 108 #get number of lines in temp 109 NUMBEROFLINES=$(wc -l temp | awk '{printf("%s",$1);}'); 110 127 111 # go through the lines of temp 128 for (( i=1 ; i<=$NUM ENUMS ; i++ )); do112 for (( i=1 ; i<=$NUMBEROFLINES ; i++ )); do 129 113 130 114 #Get name and enum of the line i … … 139 123 then 140 124 printf "\r " 141 printf "\r $i/$NUM ENUMS Adding "$NAME"..."125 printf "\r $i/$NUMBEROFLINES Adding "$NAME"..." 142 126 else 143 127 if [ $i -lt 100 ] 144 128 then 145 129 printf "\r " 146 printf "\r $i/$NUM ENUMS Adding "$NAME"..."130 printf "\r $i/$NUMBEROFLINES Adding "$NAME"..." 147 131 else 148 132 printf "\r " 149 printf "\r$i/$NUM ENUMS Adding "$NAME"..."133 printf "\r$i/$NUMBEROFLINES Adding "$NAME"..." 150 134 fi 151 135 fi … … 169 153 done 170 154 155 171 156 #clean up{{{ 172 157 rm temp -
issm/trunk-jpl-damage/src/c/modules/BamgTriangulatex/BamgTriangulatex.cpp
r11417 r11425 17 17 Th.WriteIndex(pindex,pnels); 18 18 //delete &Th; 19 return 0;20 19 21 20 } -
issm/trunk-jpl-damage/src/c/modules/Chacox/Chacox.cpp
r11417 r11425 191 191 192 192 193 #else //ifdef _HAVE_CHACO_ 194 return (0); 195 #endif 193 #endif //ifdef _HAVE_CHACO_ 196 194 } -
issm/trunk-jpl-damage/src/c/modules/Chacox/input_parse.cpp
r11417 r11425 262 262 return(0); 263 263 264 #else //#ifdef _HAVE_CHACO_ 265 return(0); 266 #endif 264 #endif //#ifdef _HAVE_CHACO_ 267 265 } -
issm/trunk-jpl-damage/src/c/modules/ContourToMeshx/ContourToMeshxt.cpp
r11417 r11425 69 69 } 70 70 71 return NULL;72 73 71 } -
issm/trunk-jpl-damage/src/c/modules/ContourToNodesx/ContourToNodesx.cpp
r11417 r11425 36 36 /*Assign output pointers: */ 37 37 *pflags=flags; 38 39 return 1; 38 40 39 } -
issm/trunk-jpl-damage/src/c/modules/EnumToStringx/EnumToStringx.cpp
r11417 r11425 166 166 case ThermalSpctemperatureEnum : return "ThermalSpctemperature"; 167 167 case ThermalStabilizationEnum : return "ThermalStabilization"; 168 case ThermalIsenthalpyEnum : return "ThermalIsenthalpy";169 168 case ThicknessEnum : return "Thickness"; 170 169 case TimesteppingCflCoefficientEnum : return "TimesteppingCflCoefficient"; -
issm/trunk-jpl-damage/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp
r11417 r11425 126 126 } 127 127 if (debug && my_thread==0) printf("\b\b\b\b\b\b\b%5.2lf %%\n",100.0); 128 129 return NULL;130 128 131 129 } -
issm/trunk-jpl-damage/src/c/modules/ModelProcessorx/CreateParameters.cpp
r11417 r11425 78 78 parameters->AddObject(iomodel->CopyConstantObject(TransientIsthermalEnum)); 79 79 parameters->AddObject(iomodel->CopyConstantObject(TransientIsgroundinglineEnum)); 80 parameters->AddObject(iomodel->CopyConstantObject(ThermalIsenthalpyEnum));81 80 parameters->AddObject(iomodel->CopyConstantObject(MaterialsRheologyLawEnum)); 82 81 parameters->AddObject(iomodel->CopyConstantObject(AutodiffIsautodiffEnum)); -
issm/trunk-jpl-damage/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
r11417 r11425 20 20 21 21 int i,analysis_type,dim,verbose; 22 bool isthermal,isprognostic,isdiagnostic,isgroundingline ,isenthalpy;22 bool isthermal,isprognostic,isdiagnostic,isgroundingline; 23 23 24 24 /*output: */ … … 39 39 iomodel->Constant(&verbose,VerboseEnum); 40 40 iomodel->Constant(&isthermal,TransientIsthermalEnum); 41 iomodel->Constant(&isenthalpy,ThermalIsenthalpyEnum);42 41 iomodel->Constant(&isprognostic,TransientIsprognosticEnum); 43 42 iomodel->Constant(&isdiagnostic,TransientIsdiagnosticEnum); … … 53 52 if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && dim==2) continue; 54 53 if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && dim==2) continue; 55 if(solution_type==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && dim==2) continue;56 54 if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && isthermal==false) continue; 57 55 if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && isthermal==false) continue; 58 if(solution_type==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isthermal==false) continue;59 if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && isenthalpy==true) continue;60 if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && isenthalpy==true) continue;61 if(solution_type==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && isenthalpy==false) continue;62 56 if(solution_type==TransientSolutionEnum && analysis_type==PrognosticAnalysisEnum && isprognostic==false && isgroundingline==false) continue; 63 57 if(solution_type==TransientSolutionEnum && analysis_type==DiagnosticHorizAnalysisEnum && isdiagnostic==false) continue; -
issm/trunk-jpl-damage/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp
r11417 r11425 36 36 /*Assign output pointers: */ 37 37 *pflags=flags; 38 39 return 1;40 38 } -
issm/trunk-jpl-damage/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp
r11417 r11425 74 74 /*Free ressources:*/ 75 75 xfree((void**)&already); 76 77 return NULL;78 76 } -
issm/trunk-jpl-damage/src/c/modules/Scotchx/Scotchx.cpp
r11417 r11425 339 339 return (0); 340 340 341 #else //#ifdef _HAVE_SCOTCH_ 342 return(0); 343 #endif 341 #endif //#ifdef _HAVE_SCOTCH_ 344 342 } -
issm/trunk-jpl-damage/src/c/modules/Shp2Kmlx/Shp2Kmlx.cpp
r11417 r11425 24 24 sgn,cm,sp)); 25 25 26 #else //ifdef _HAVE_SHAPELIB_ 27 return 0; 28 #endif 26 #endif //ifdef _HAVE_SHAPELIB_ 29 27 } 30 28 … … 609 607 return(iret); 610 608 611 #else //ifdef _HAVE_SHAPELIB_ 612 return 0; 613 #endif 609 #endif //ifdef _HAVE_SHAPELIB_ 614 610 } 615 611 -
issm/trunk-jpl-damage/src/c/modules/StringToEnumx/StringToEnumx.cpp
r11418 r11425 14 14 int StringToEnumx(const char* name){ 15 15 16 int stage=1; 16 if (strcmp(name,"AutodiffForward")==0) return AutodiffForwardEnum; 17 else if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum; 18 else if (strcmp(name,"AutodiffReverse")==0) return AutodiffReverseEnum; 19 else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum; 20 else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum; 21 else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum; 22 else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum; 23 else if (strcmp(name,"BasalforcingsMeltingRateCorrection")==0) return BasalforcingsMeltingRateCorrectionEnum; 24 else if (strcmp(name,"BasalforcingsMeltingRate")==0) return BasalforcingsMeltingRateEnum; 25 else if (strcmp(name,"Bathymetry")==0) return BathymetryEnum; 26 else if (strcmp(name,"Bed")==0) return BedEnum; 27 else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum; 28 else if (strcmp(name,"ConstantsReferencetemperature")==0) return ConstantsReferencetemperatureEnum; 29 else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum; 30 else if (strcmp(name,"DiagnosticAbstol")==0) return DiagnosticAbstolEnum; 31 else if (strcmp(name,"DiagnosticIcefront")==0) return DiagnosticIcefrontEnum; 32 else if (strcmp(name,"DiagnosticMaxiter")==0) return DiagnosticMaxiterEnum; 33 else if (strcmp(name,"DiagnosticNumRequestedOutputs")==0) return DiagnosticNumRequestedOutputsEnum; 34 else if (strcmp(name,"DiagnosticPenaltyFactor")==0) return DiagnosticPenaltyFactorEnum; 35 else if (strcmp(name,"DiagnosticReferential")==0) return DiagnosticReferentialEnum; 36 else if (strcmp(name,"DiagnosticReltol")==0) return DiagnosticReltolEnum; 37 else if (strcmp(name,"DiagnosticRequestedOutputs")==0) return DiagnosticRequestedOutputsEnum; 38 else if (strcmp(name,"DiagnosticRestol")==0) return DiagnosticRestolEnum; 39 else if (strcmp(name,"DiagnosticRiftPenaltyLock")==0) return DiagnosticRiftPenaltyLockEnum; 40 else if (strcmp(name,"DiagnosticRiftPenaltyThreshold")==0) return DiagnosticRiftPenaltyThresholdEnum; 41 else if (strcmp(name,"DiagnosticShelfDampening")==0) return DiagnosticShelfDampeningEnum; 42 else if (strcmp(name,"DiagnosticSpcvx")==0) return DiagnosticSpcvxEnum; 43 else if (strcmp(name,"DiagnosticSpcvy")==0) return DiagnosticSpcvyEnum; 44 else if (strcmp(name,"DiagnosticSpcvz")==0) return DiagnosticSpcvzEnum; 45 else if (strcmp(name,"DiagnosticStokesreconditioning")==0) return DiagnosticStokesreconditioningEnum; 46 else if (strcmp(name,"DiagnosticVertexPairing")==0) return DiagnosticVertexPairingEnum; 47 else if (strcmp(name,"DiagnosticViscosityOvershoot")==0) return DiagnosticViscosityOvershootEnum; 48 else if (strcmp(name,"FlowequationBordermacayeal")==0) return FlowequationBordermacayealEnum; 49 else if (strcmp(name,"FlowequationBorderpattyn")==0) return FlowequationBorderpattynEnum; 50 else if (strcmp(name,"FlowequationBorderstokes")==0) return FlowequationBorderstokesEnum; 51 else if (strcmp(name,"FlowequationElementEquation")==0) return FlowequationElementEquationEnum; 52 else if (strcmp(name,"FlowequationIshutter")==0) return FlowequationIshutterEnum; 53 else if (strcmp(name,"FlowequationIsmacayealpattyn")==0) return FlowequationIsmacayealpattynEnum; 54 else if (strcmp(name,"FlowequationIsstokes")==0) return FlowequationIsstokesEnum; 55 else if (strcmp(name,"FlowequationVertexEquation")==0) return FlowequationVertexEquationEnum; 56 else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum; 57 else if (strcmp(name,"FrictionP")==0) return FrictionPEnum; 58 else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum; 59 else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum; 60 else if (strcmp(name,"HydrologyCR")==0) return HydrologyCREnum; 61 else if (strcmp(name,"HydrologyKn")==0) return HydrologyKnEnum; 62 else if (strcmp(name,"HydrologyN")==0) return HydrologyNEnum; 63 else if (strcmp(name,"HydrologyP")==0) return HydrologyPEnum; 64 else if (strcmp(name,"HydrologyQ")==0) return HydrologyQEnum; 65 else if (strcmp(name,"HydrologySpcwatercolumn")==0) return HydrologySpcwatercolumnEnum; 66 else if (strcmp(name,"HydrologyStabilization")==0) return HydrologyStabilizationEnum; 67 else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum; 68 else if (strcmp(name,"InversionCostFunction")==0) return InversionCostFunctionEnum; 69 else if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum; 70 else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum; 71 else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum; 72 else if (strcmp(name,"InversionGradientOnly")==0) return InversionGradientOnlyEnum; 73 else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum; 74 else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum; 75 else if (strcmp(name,"InversionTao")==0) return InversionTaoEnum; 76 else if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum; 77 else if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum; 78 else if (strcmp(name,"InversionMinParameters")==0) return InversionMinParametersEnum; 79 else if (strcmp(name,"InversionNsteps")==0) return InversionNstepsEnum; 80 else if (strcmp(name,"InversionNumControlParameters")==0) return InversionNumControlParametersEnum; 81 else if (strcmp(name,"InversionNumCostFunctions")==0) return InversionNumCostFunctionsEnum; 82 else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum; 83 else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum; 84 else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum; 85 else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum; 86 else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum; 87 else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum; 88 else if (strcmp(name,"MaskElementonfloatingice")==0) return MaskElementonfloatingiceEnum; 89 else if (strcmp(name,"MaskElementongroundedice")==0) return MaskElementongroundediceEnum; 90 else if (strcmp(name,"MaskElementonwater")==0) return MaskElementonwaterEnum; 91 else if (strcmp(name,"MaskVertexonfloatingice")==0) return MaskVertexonfloatingiceEnum; 92 else if (strcmp(name,"MaskVertexongroundedice")==0) return MaskVertexongroundediceEnum; 93 else if (strcmp(name,"MaskVertexonwater")==0) return MaskVertexonwaterEnum; 94 else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum; 95 else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum; 96 else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum; 97 else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum; 98 else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum; 99 else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum; 100 else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum; 101 else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum; 102 else if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum; 103 else if (strcmp(name,"MaterialsRheologyZ")==0) return MaterialsRheologyZEnum; 104 else if (strcmp(name,"MaterialsRheologyZbar")==0) return MaterialsRheologyZbarEnum; 105 else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum; 106 else if (strcmp(name,"MaterialsRhoWater")==0) return MaterialsRhoWaterEnum; 107 else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum; 108 else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum; 109 else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum; 110 else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum; 111 else if (strcmp(name,"MeshDimension")==0) return MeshDimensionEnum; 112 else if (strcmp(name,"MeshEdges")==0) return MeshEdgesEnum; 113 else if (strcmp(name,"MeshElementconnectivity")==0) return MeshElementconnectivityEnum; 114 else if (strcmp(name,"MeshElementonbed")==0) return MeshElementonbedEnum; 115 else if (strcmp(name,"MeshElementonsurface")==0) return MeshElementonsurfaceEnum; 116 else if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum; 117 else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum; 118 else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum; 119 else if (strcmp(name,"MeshNumberofedges")==0) return MeshNumberofedgesEnum; 120 else if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum; 121 else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum; 122 else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum; 123 else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum; 124 else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum; 125 else if (strcmp(name,"MeshUpperelements")==0) return MeshUpperelementsEnum; 126 else if (strcmp(name,"MeshVertexonbed")==0) return MeshVertexonbedEnum; 127 else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum; 128 else if (strcmp(name,"MeshX")==0) return MeshXEnum; 129 else if (strcmp(name,"MeshY")==0) return MeshYEnum; 130 else if (strcmp(name,"MeshZ")==0) return MeshZEnum; 131 else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum; 132 else if (strcmp(name,"PrognosticHydrostaticAdjustment")==0) return PrognosticHydrostaticAdjustmentEnum; 133 else if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum; 134 else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum; 135 else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum; 136 else if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum; 137 else if (strcmp(name,"PrognosticVertexPairing")==0) return PrognosticVertexPairingEnum; 138 else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum; 139 else if (strcmp(name,"QmuMassFluxSegments")==0) return QmuMassFluxSegmentsEnum; 140 else if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum; 141 else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum; 142 else if (strcmp(name,"QmuPartition")==0) return QmuPartitionEnum; 143 else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum; 144 else if (strcmp(name,"QmuVariabledescriptors")==0) return QmuVariabledescriptorsEnum; 145 else if (strcmp(name,"RiftsNumrifts")==0) return RiftsNumriftsEnum; 146 else if (strcmp(name,"RiftsRiftstruct")==0) return RiftsRiftstructEnum; 147 else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum; 148 else if (strcmp(name,"SettingsLowmem")==0) return SettingsLowmemEnum; 149 else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum; 150 else if (strcmp(name,"SettingsResultsAsPatches")==0) return SettingsResultsAsPatchesEnum; 151 else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum; 152 else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum; 153 else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum; 154 else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum; 155 else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum; 156 else if (strcmp(name,"Surface")==0) return SurfaceEnum; 157 else if (strcmp(name,"SurfaceforcingsAblationRate")==0) return SurfaceforcingsAblationRateEnum; 158 else if (strcmp(name,"SurfaceforcingsAccumulationRate")==0) return SurfaceforcingsAccumulationRateEnum; 159 else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum; 160 else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum; 161 else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum; 162 else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum; 163 else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum; 164 else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum; 165 else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum; 166 else if (strcmp(name,"Thickness")==0) return ThicknessEnum; 167 else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum; 168 else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum; 169 else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum; 170 else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum; 171 else if (strcmp(name,"TransientIsdiagnostic")==0) return TransientIsdiagnosticEnum; 172 else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum; 173 else if (strcmp(name,"TransientIsprognostic")==0) return TransientIsprognosticEnum; 174 else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum; 175 else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum; 176 else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum; 177 else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum; 178 else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum; 179 else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum; 180 else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum; 181 else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum; 182 else if (strcmp(name,"AdjointSolution")==0) return AdjointSolutionEnum; 183 else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum; 184 else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum; 185 else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum; 186 else if (strcmp(name,"BedSlopeAnalysis")==0) return BedSlopeAnalysisEnum; 187 else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum; 188 else if (strcmp(name,"BedSlopeXAnalysis")==0) return BedSlopeXAnalysisEnum; 189 else if (strcmp(name,"BedSlopeYAnalysis")==0) return BedSlopeYAnalysisEnum; 190 else if (strcmp(name,"DiagnosticHorizAnalysis")==0) return DiagnosticHorizAnalysisEnum; 191 else if (strcmp(name,"DiagnosticHutterAnalysis")==0) return DiagnosticHutterAnalysisEnum; 192 else if (strcmp(name,"DiagnosticSolution")==0) return DiagnosticSolutionEnum; 193 else if (strcmp(name,"DiagnosticVertAnalysis")==0) return DiagnosticVertAnalysisEnum; 194 else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum; 195 else if (strcmp(name,"EnthalpySolution")==0) return EnthalpySolutionEnum; 196 else if (strcmp(name,"FlaimAnalysis")==0) return FlaimAnalysisEnum; 197 else if (strcmp(name,"FlaimSolution")==0) return FlaimSolutionEnum; 198 else if (strcmp(name,"HydrologyAnalysis")==0) return HydrologyAnalysisEnum; 199 else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum; 200 else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum; 201 else if (strcmp(name,"NoneAnalysis")==0) return NoneAnalysisEnum; 202 else if (strcmp(name,"PrognosticAnalysis")==0) return PrognosticAnalysisEnum; 203 else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum; 204 else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum; 205 else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum; 206 else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum; 207 else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum; 208 else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum; 209 else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum; 210 else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum; 211 else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum; 212 else if (strcmp(name,"Approximation")==0) return ApproximationEnum; 213 else if (strcmp(name,"HutterApproximation")==0) return HutterApproximationEnum; 214 else if (strcmp(name,"MacAyealApproximation")==0) return MacAyealApproximationEnum; 215 else if (strcmp(name,"MacAyealPattynApproximation")==0) return MacAyealPattynApproximationEnum; 216 else if (strcmp(name,"MacAyealStokesApproximation")==0) return MacAyealStokesApproximationEnum; 217 else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum; 218 else if (strcmp(name,"PattynApproximation")==0) return PattynApproximationEnum; 219 else if (strcmp(name,"PattynStokesApproximation")==0) return PattynStokesApproximationEnum; 220 else if (strcmp(name,"StokesApproximation")==0) return StokesApproximationEnum; 221 else if (strcmp(name,"Constraints")==0) return ConstraintsEnum; 222 else if (strcmp(name,"Loads")==0) return LoadsEnum; 223 else if (strcmp(name,"Materials")==0) return MaterialsEnum; 224 else if (strcmp(name,"Nodes")==0) return NodesEnum; 225 else if (strcmp(name,"Parameters")==0) return ParametersEnum; 226 else if (strcmp(name,"Vertices")==0) return VerticesEnum; 227 else if (strcmp(name,"Results")==0) return ResultsEnum; 228 else if (strcmp(name,"BoolInput")==0) return BoolInputEnum; 229 else if (strcmp(name,"BoolParam")==0) return BoolParamEnum; 230 else if (strcmp(name,"ControlInput")==0) return ControlInputEnum; 231 else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum; 232 else if (strcmp(name,"DofIndexing")==0) return DofIndexingEnum; 233 else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum; 234 else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum; 235 else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum; 236 else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum; 237 else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum; 238 else if (strcmp(name,"Element")==0) return ElementEnum; 239 else if (strcmp(name,"ElementResult")==0) return ElementResultEnum; 240 else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum; 241 else if (strcmp(name,"FileParam")==0) return FileParamEnum; 242 else if (strcmp(name,"Hook")==0) return HookEnum; 243 else if (strcmp(name,"Icefront")==0) return IcefrontEnum; 244 else if (strcmp(name,"Input")==0) return InputEnum; 245 else if (strcmp(name,"IntInput")==0) return IntInputEnum; 246 else if (strcmp(name,"IntParam")==0) return IntParamEnum; 247 else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum; 248 else if (strcmp(name,"MacAyeal2dIceFront")==0) return MacAyeal2dIceFrontEnum; 249 else if (strcmp(name,"MacAyeal3dIceFront")==0) return MacAyeal3dIceFrontEnum; 250 else if (strcmp(name,"Matice")==0) return MaticeEnum; 251 else if (strcmp(name,"Matpar")==0) return MatparEnum; 252 else if (strcmp(name,"Node")==0) return NodeEnum; 253 else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum; 254 else if (strcmp(name,"Param")==0) return ParamEnum; 255 else if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum; 256 else if (strcmp(name,"Pengrid")==0) return PengridEnum; 257 else if (strcmp(name,"Penpair")==0) return PenpairEnum; 258 else if (strcmp(name,"Penta")==0) return PentaEnum; 259 else if (strcmp(name,"PentaP1Input")==0) return PentaP1InputEnum; 260 else if (strcmp(name,"PetscMatParam")==0) return PetscMatParamEnum; 261 else if (strcmp(name,"PetscVecParam")==0) return PetscVecParamEnum; 262 else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum; 263 else if (strcmp(name,"Segment")==0) return SegmentEnum; 264 else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum; 265 else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum; 266 else if (strcmp(name,"SpcStatic")==0) return SpcStaticEnum; 267 else if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum; 268 else if (strcmp(name,"StokesIceFront")==0) return StokesIceFrontEnum; 269 else if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum; 270 else if (strcmp(name,"StringParam")==0) return StringParamEnum; 271 else if (strcmp(name,"Tria")==0) return TriaEnum; 272 else if (strcmp(name,"TriaP1Input")==0) return TriaP1InputEnum; 273 else if (strcmp(name,"Vertex")==0) return VertexEnum; 274 else if (strcmp(name,"Air")==0) return AirEnum; 275 else if (strcmp(name,"Ice")==0) return IceEnum; 276 else if (strcmp(name,"Melange")==0) return MelangeEnum; 277 else if (strcmp(name,"Water")==0) return WaterEnum; 278 else if (strcmp(name,"Closed")==0) return ClosedEnum; 279 else if (strcmp(name,"Free")==0) return FreeEnum; 280 else if (strcmp(name,"Open")==0) return OpenEnum; 281 else if (strcmp(name,"Adjointp")==0) return AdjointpEnum; 282 else if (strcmp(name,"Adjointx")==0) return AdjointxEnum; 283 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum; 284 else if (strcmp(name,"Adjointz")==0) return AdjointzEnum; 285 else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum; 286 else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum; 287 else if (strcmp(name,"Boundary")==0) return BoundaryEnum; 288 else if (strcmp(name,"Constant")==0) return ConstantEnum; 289 else if (strcmp(name,"Converged")==0) return ConvergedEnum; 290 else if (strcmp(name,"ExtToIu")==0) return ExtToIuEnum; 291 else if (strcmp(name,"Fill")==0) return FillEnum; 292 else if (strcmp(name,"FractionIncrement")==0) return FractionIncrementEnum; 293 else if (strcmp(name,"Friction")==0) return FrictionEnum; 294 else if (strcmp(name,"GroundinglineMeltingRate")==0) return GroundinglineMeltingRateEnum; 295 else if (strcmp(name,"Internal")==0) return InternalEnum; 296 else if (strcmp(name,"IuToExt")==0) return IuToExtEnum; 297 else if (strcmp(name,"MassFlux")==0) return MassFluxEnum; 298 else if (strcmp(name,"MaxPenetration")==0) return MaxPenetrationEnum; 299 else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum; 300 else if (strcmp(name,"Misfit")==0) return MisfitEnum; 301 else if (strcmp(name,"NumberNodeToElementConnectivity")==0) return NumberNodeToElementConnectivityEnum; 302 else if (strcmp(name,"Pressure")==0) return PressureEnum; 303 else if (strcmp(name,"PressurePicard")==0) return PressurePicardEnum; 304 else if (strcmp(name,"QmuPressure")==0) return QmuPressureEnum; 305 else if (strcmp(name,"QmuVx")==0) return QmuVxEnum; 306 else if (strcmp(name,"QmuVy")==0) return QmuVyEnum; 307 else if (strcmp(name,"QmuVz")==0) return QmuVzEnum; 308 else if (strcmp(name,"QmuThickness")==0) return QmuThicknessEnum; 309 else if (strcmp(name,"QmuBed")==0) return QmuBedEnum; 310 else if (strcmp(name,"QmuSurface")==0) return QmuSurfaceEnum; 311 else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum; 312 else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum; 313 else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum; 314 else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum; 315 else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum; 316 else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum; 317 else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum; 318 else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum; 319 else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum; 320 else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum; 321 else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum; 322 else if (strcmp(name,"Temperature")==0) return TemperatureEnum; 323 else if (strcmp(name,"TemperatureOld")==0) return TemperatureOldEnum; 324 else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum; 325 else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum; 326 else if (strcmp(name,"Type")==0) return TypeEnum; 327 else if (strcmp(name,"Vel")==0) return VelEnum; 328 else if (strcmp(name,"Velocity")==0) return VelocityEnum; 329 else if (strcmp(name,"VxAverage")==0) return VxAverageEnum; 330 else if (strcmp(name,"Vx")==0) return VxEnum; 331 else if (strcmp(name,"VxPicard")==0) return VxPicardEnum; 332 else if (strcmp(name,"VyAverage")==0) return VyAverageEnum; 333 else if (strcmp(name,"Vy")==0) return VyEnum; 334 else if (strcmp(name,"VyPicard")==0) return VyPicardEnum; 335 else if (strcmp(name,"Vz")==0) return VzEnum; 336 else if (strcmp(name,"VzMacAyeal")==0) return VzMacAyealEnum; 337 else if (strcmp(name,"VzPattyn")==0) return VzPattynEnum; 338 else if (strcmp(name,"VzPicard")==0) return VzPicardEnum; 339 else if (strcmp(name,"VzStokes")==0) return VzStokesEnum; 340 else if (strcmp(name,"VxMesh")==0) return VxMeshEnum; 341 else if (strcmp(name,"VyMesh")==0) return VyMeshEnum; 342 else if (strcmp(name,"VzMesh")==0) return VzMeshEnum; 343 else if (strcmp(name,"Enthalpy")==0) return EnthalpyEnum; 344 else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum; 345 else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum; 346 else if (strcmp(name,"StepResponses")==0) return StepResponsesEnum; 347 else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum; 348 else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum; 349 else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum; 350 else if (strcmp(name,"TransientInput")==0) return TransientInputEnum; 351 else if (strcmp(name,"Outputfilename")==0) return OutputfilenameEnum; 352 else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum; 353 else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum; 354 else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum; 355 else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum; 356 else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum; 357 else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum; 358 else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 359 else if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 360 else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum; 361 else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum; 362 else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum; 363 else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum; 364 else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum; 365 else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum; 366 else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum; 367 else if (strcmp(name,"P0")==0) return P0Enum; 368 else if (strcmp(name,"P1")==0) return P1Enum; 369 else if (strcmp(name,"P1DG")==0) return P1DGEnum; 370 else if (strcmp(name,"BoolElementResult")==0) return BoolElementResultEnum; 371 else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; 372 else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum; 373 else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum; 374 else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum; 375 else if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum; 376 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 377 else if (strcmp(name,"J")==0) return JEnum; 378 else if (strcmp(name,"Patch")==0) return PatchEnum; 379 else if (strcmp(name,"PatchNodes")==0) return PatchNodesEnum; 380 else if (strcmp(name,"PatchVertices")==0) return PatchVerticesEnum; 381 else if (strcmp(name,"PentaP1ElementResult")==0) return PentaP1ElementResultEnum; 382 else if (strcmp(name,"PetscVecExternalResult")==0) return PetscVecExternalResultEnum; 383 else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum; 384 else if (strcmp(name,"Time")==0) return TimeEnum; 385 else if (strcmp(name,"TriaP1ElementResult")==0) return TriaP1ElementResultEnum; 386 else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum; 387 else if (strcmp(name,"MinVel")==0) return MinVelEnum; 388 else if (strcmp(name,"MaxVel")==0) return MaxVelEnum; 389 else if (strcmp(name,"MinVx")==0) return MinVxEnum; 390 else if (strcmp(name,"MaxVx")==0) return MaxVxEnum; 391 else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum; 392 else if (strcmp(name,"MinVy")==0) return MinVyEnum; 393 else if (strcmp(name,"MaxVy")==0) return MaxVyEnum; 394 else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum; 395 else if (strcmp(name,"MinVz")==0) return MinVzEnum; 396 else if (strcmp(name,"MaxVz")==0) return MaxVzEnum; 397 else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum; 398 else if (strcmp(name,"Relative")==0) return RelativeEnum; 399 else if (strcmp(name,"Absolute")==0) return AbsoluteEnum; 400 else if (strcmp(name,"Incremental")==0) return IncrementalEnum; 401 else if (strcmp(name,"AgressiveMigration")==0) return AgressiveMigrationEnum; 402 else if (strcmp(name,"None")==0) return NoneEnum; 403 else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum; 404 else if (strcmp(name,"StokesSolver")==0) return StokesSolverEnum; 405 else if (strcmp(name,"Adjoint")==0) return AdjointEnum; 406 else if (strcmp(name,"Colinear")==0) return ColinearEnum; 407 else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum; 408 else if (strcmp(name,"Fset")==0) return FsetEnum; 409 else if (strcmp(name,"Gradient1")==0) return Gradient1Enum; 410 else if (strcmp(name,"Gradient2")==0) return Gradient2Enum; 411 else if (strcmp(name,"Gradient3")==0) return Gradient3Enum; 412 else if (strcmp(name,"Gradient")==0) return GradientEnum; 413 else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum; 414 else if (strcmp(name,"Gset")==0) return GsetEnum; 415 else if (strcmp(name,"Index")==0) return IndexEnum; 416 else if (strcmp(name,"Indexed")==0) return IndexedEnum; 417 else if (strcmp(name,"Intersect")==0) return IntersectEnum; 418 else if (strcmp(name,"Nodal")==0) return NodalEnum; 419 else if (strcmp(name,"OldGradient")==0) return OldGradientEnum; 420 else if (strcmp(name,"OutputFilePointer")==0) return OutputFilePointerEnum; 421 else if (strcmp(name,"PetscOptionsAnalyses")==0) return PetscOptionsAnalysesEnum; 422 else if (strcmp(name,"PetscOptionsStrings")==0) return PetscOptionsStringsEnum; 423 else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum; 424 else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum; 425 else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum; 426 else if (strcmp(name,"Regular")==0) return RegularEnum; 427 else if (strcmp(name,"Scaled")==0) return ScaledEnum; 428 else if (strcmp(name,"Separate")==0) return SeparateEnum; 429 else if (strcmp(name,"Sset")==0) return SsetEnum; 430 else if (strcmp(name,"Verbose")==0) return VerboseEnum; 431 else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum; 432 else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum; 433 else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum; 434 else if (strcmp(name,"XY")==0) return XYEnum; 435 else if (strcmp(name,"XYZP")==0) return XYZPEnum; 436 else if (strcmp(name,"Option")==0) return OptionEnum; 437 else if (strcmp(name,"OptionCell")==0) return OptionCellEnum; 438 else if (strcmp(name,"OptionChar")==0) return OptionCharEnum; 439 else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum; 440 else if (strcmp(name,"OptionDouble")==0) return OptionDoubleEnum; 441 else if (strcmp(name,"OptionLogical")==0) return OptionLogicalEnum; 442 else if (strcmp(name,"Paterson")==0) return PatersonEnum; 443 else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum; 444 else _error_("Enum %s not found",name); 17 445 18 if(stage==1){19 if (strcmp(name,"AutodiffForward")==0) return AutodiffForwardEnum;20 else if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum;21 else if (strcmp(name,"AutodiffReverse")==0) return AutodiffReverseEnum;22 else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum;23 else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;24 else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum;25 else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;26 else if (strcmp(name,"BasalforcingsMeltingRateCorrection")==0) return BasalforcingsMeltingRateCorrectionEnum;27 else if (strcmp(name,"BasalforcingsMeltingRate")==0) return BasalforcingsMeltingRateEnum;28 else if (strcmp(name,"Bathymetry")==0) return BathymetryEnum;29 else if (strcmp(name,"Bed")==0) return BedEnum;30 else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum;31 else if (strcmp(name,"ConstantsReferencetemperature")==0) return ConstantsReferencetemperatureEnum;32 else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum;33 else if (strcmp(name,"DiagnosticAbstol")==0) return DiagnosticAbstolEnum;34 else if (strcmp(name,"DiagnosticIcefront")==0) return DiagnosticIcefrontEnum;35 else if (strcmp(name,"DiagnosticMaxiter")==0) return DiagnosticMaxiterEnum;36 else if (strcmp(name,"DiagnosticNumRequestedOutputs")==0) return DiagnosticNumRequestedOutputsEnum;37 else if (strcmp(name,"DiagnosticPenaltyFactor")==0) return DiagnosticPenaltyFactorEnum;38 else if (strcmp(name,"DiagnosticReferential")==0) return DiagnosticReferentialEnum;39 else if (strcmp(name,"DiagnosticReltol")==0) return DiagnosticReltolEnum;40 else if (strcmp(name,"DiagnosticRequestedOutputs")==0) return DiagnosticRequestedOutputsEnum;41 else if (strcmp(name,"DiagnosticRestol")==0) return DiagnosticRestolEnum;42 else if (strcmp(name,"DiagnosticRiftPenaltyLock")==0) return DiagnosticRiftPenaltyLockEnum;43 else if (strcmp(name,"DiagnosticRiftPenaltyThreshold")==0) return DiagnosticRiftPenaltyThresholdEnum;44 else if (strcmp(name,"DiagnosticShelfDampening")==0) return DiagnosticShelfDampeningEnum;45 else if (strcmp(name,"DiagnosticSpcvx")==0) return DiagnosticSpcvxEnum;46 else if (strcmp(name,"DiagnosticSpcvy")==0) return DiagnosticSpcvyEnum;47 else if (strcmp(name,"DiagnosticSpcvz")==0) return DiagnosticSpcvzEnum;48 else if (strcmp(name,"DiagnosticStokesreconditioning")==0) return DiagnosticStokesreconditioningEnum;49 else if (strcmp(name,"DiagnosticVertexPairing")==0) return DiagnosticVertexPairingEnum;50 else if (strcmp(name,"DiagnosticViscosityOvershoot")==0) return DiagnosticViscosityOvershootEnum;51 else if (strcmp(name,"FlowequationBordermacayeal")==0) return FlowequationBordermacayealEnum;52 else if (strcmp(name,"FlowequationBorderpattyn")==0) return FlowequationBorderpattynEnum;53 else if (strcmp(name,"FlowequationBorderstokes")==0) return FlowequationBorderstokesEnum;54 else if (strcmp(name,"FlowequationElementEquation")==0) return FlowequationElementEquationEnum;55 else if (strcmp(name,"FlowequationIshutter")==0) return FlowequationIshutterEnum;56 else if (strcmp(name,"FlowequationIsmacayealpattyn")==0) return FlowequationIsmacayealpattynEnum;57 else if (strcmp(name,"FlowequationIsstokes")==0) return FlowequationIsstokesEnum;58 else if (strcmp(name,"FlowequationVertexEquation")==0) return FlowequationVertexEquationEnum;59 else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum;60 else if (strcmp(name,"FrictionP")==0) return FrictionPEnum;61 else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;62 else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;63 else if (strcmp(name,"HydrologyCR")==0) return HydrologyCREnum;64 else if (strcmp(name,"HydrologyKn")==0) return HydrologyKnEnum;65 else if (strcmp(name,"HydrologyN")==0) return HydrologyNEnum;66 else if (strcmp(name,"HydrologyP")==0) return HydrologyPEnum;67 else if (strcmp(name,"HydrologyQ")==0) return HydrologyQEnum;68 else if (strcmp(name,"HydrologySpcwatercolumn")==0) return HydrologySpcwatercolumnEnum;69 else if (strcmp(name,"HydrologyStabilization")==0) return HydrologyStabilizationEnum;70 else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;71 else if (strcmp(name,"InversionCostFunction")==0) return InversionCostFunctionEnum;72 else if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum;73 else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum;74 else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum;75 else if (strcmp(name,"InversionGradientOnly")==0) return InversionGradientOnlyEnum;76 else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;77 else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum;78 else if (strcmp(name,"InversionTao")==0) return InversionTaoEnum;79 else if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum;80 else if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum;81 else if (strcmp(name,"InversionMinParameters")==0) return InversionMinParametersEnum;82 else if (strcmp(name,"InversionNsteps")==0) return InversionNstepsEnum;83 else if (strcmp(name,"InversionNumControlParameters")==0) return InversionNumControlParametersEnum;84 else if (strcmp(name,"InversionNumCostFunctions")==0) return InversionNumCostFunctionsEnum;85 else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum;86 else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum;87 else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum;88 else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum;89 else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum;90 else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum;91 else if (strcmp(name,"MaskElementonfloatingice")==0) return MaskElementonfloatingiceEnum;92 else if (strcmp(name,"MaskElementongroundedice")==0) return MaskElementongroundediceEnum;93 else if (strcmp(name,"MaskElementonwater")==0) return MaskElementonwaterEnum;94 else if (strcmp(name,"MaskVertexonfloatingice")==0) return MaskVertexonfloatingiceEnum;95 else if (strcmp(name,"MaskVertexongroundedice")==0) return MaskVertexongroundediceEnum;96 else if (strcmp(name,"MaskVertexonwater")==0) return MaskVertexonwaterEnum;97 else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum;98 else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum;99 else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum;100 else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;101 else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;102 else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum;103 else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum;104 else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum;105 else if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum;106 else if (strcmp(name,"MaterialsRheologyZ")==0) return MaterialsRheologyZEnum;107 else if (strcmp(name,"MaterialsRheologyZbar")==0) return MaterialsRheologyZbarEnum;108 else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;109 else if (strcmp(name,"MaterialsRhoWater")==0) return MaterialsRhoWaterEnum;110 else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;111 else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;112 else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum;113 else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;114 else if (strcmp(name,"MeshDimension")==0) return MeshDimensionEnum;115 else if (strcmp(name,"MeshEdges")==0) return MeshEdgesEnum;116 else if (strcmp(name,"MeshElementconnectivity")==0) return MeshElementconnectivityEnum;117 else if (strcmp(name,"MeshElementonbed")==0) return MeshElementonbedEnum;118 else if (strcmp(name,"MeshElementonsurface")==0) return MeshElementonsurfaceEnum;119 else if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum;120 else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;121 else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum;122 else if (strcmp(name,"MeshNumberofedges")==0) return MeshNumberofedgesEnum;123 else if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum;124 else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum;125 else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum;126 else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum;127 else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum;128 else if (strcmp(name,"MeshUpperelements")==0) return MeshUpperelementsEnum;129 else if (strcmp(name,"MeshVertexonbed")==0) return MeshVertexonbedEnum;130 else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum;131 else if (strcmp(name,"MeshX")==0) return MeshXEnum;132 else if (strcmp(name,"MeshY")==0) return MeshYEnum;133 else if (strcmp(name,"MeshZ")==0) return MeshZEnum;134 else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum;135 else if (strcmp(name,"PrognosticHydrostaticAdjustment")==0) return PrognosticHydrostaticAdjustmentEnum;136 else if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum;137 else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum;138 else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum;139 else stage=2;140 }141 if(stage==2){142 if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum;143 else if (strcmp(name,"PrognosticVertexPairing")==0) return PrognosticVertexPairingEnum;144 else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;145 else if (strcmp(name,"QmuMassFluxSegments")==0) return QmuMassFluxSegmentsEnum;146 else if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum;147 else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum;148 else if (strcmp(name,"QmuPartition")==0) return QmuPartitionEnum;149 else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum;150 else if (strcmp(name,"QmuVariabledescriptors")==0) return QmuVariabledescriptorsEnum;151 else if (strcmp(name,"RiftsNumrifts")==0) return RiftsNumriftsEnum;152 else if (strcmp(name,"RiftsRiftstruct")==0) return RiftsRiftstructEnum;153 else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum;154 else if (strcmp(name,"SettingsLowmem")==0) return SettingsLowmemEnum;155 else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum;156 else if (strcmp(name,"SettingsResultsAsPatches")==0) return SettingsResultsAsPatchesEnum;157 else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;158 else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;159 else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum;160 else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum;161 else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum;162 else if (strcmp(name,"Surface")==0) return SurfaceEnum;163 else if (strcmp(name,"SurfaceforcingsAblationRate")==0) return SurfaceforcingsAblationRateEnum;164 else if (strcmp(name,"SurfaceforcingsAccumulationRate")==0) return SurfaceforcingsAccumulationRateEnum;165 else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum;166 else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum;167 else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum;168 else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum;169 else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum;170 else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum;171 else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum;172 else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum;173 else if (strcmp(name,"Thickness")==0) return ThicknessEnum;174 else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum;175 else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum;176 else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum;177 else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;178 else if (strcmp(name,"TransientIsdiagnostic")==0) return TransientIsdiagnosticEnum;179 else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;180 else if (strcmp(name,"TransientIsprognostic")==0) return TransientIsprognosticEnum;181 else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum;182 else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum;183 else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum;184 else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;185 else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum;186 else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum;187 else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;188 else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum;189 else if (strcmp(name,"AdjointSolution")==0) return AdjointSolutionEnum;190 else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum;191 else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum;192 else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum;193 else if (strcmp(name,"BedSlopeAnalysis")==0) return BedSlopeAnalysisEnum;194 else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;195 else if (strcmp(name,"BedSlopeXAnalysis")==0) return BedSlopeXAnalysisEnum;196 else if (strcmp(name,"BedSlopeYAnalysis")==0) return BedSlopeYAnalysisEnum;197 else if (strcmp(name,"DiagnosticHorizAnalysis")==0) return DiagnosticHorizAnalysisEnum;198 else if (strcmp(name,"DiagnosticHutterAnalysis")==0) return DiagnosticHutterAnalysisEnum;199 else if (strcmp(name,"DiagnosticSolution")==0) return DiagnosticSolutionEnum;200 else if (strcmp(name,"DiagnosticVertAnalysis")==0) return DiagnosticVertAnalysisEnum;201 else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;202 else if (strcmp(name,"EnthalpySolution")==0) return EnthalpySolutionEnum;203 else if (strcmp(name,"FlaimAnalysis")==0) return FlaimAnalysisEnum;204 else if (strcmp(name,"FlaimSolution")==0) return FlaimSolutionEnum;205 else if (strcmp(name,"HydrologyAnalysis")==0) return HydrologyAnalysisEnum;206 else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;207 else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;208 else if (strcmp(name,"NoneAnalysis")==0) return NoneAnalysisEnum;209 else if (strcmp(name,"PrognosticAnalysis")==0) return PrognosticAnalysisEnum;210 else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;211 else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;212 else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum;213 else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;214 else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum;215 else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum;216 else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;217 else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;218 else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum;219 else if (strcmp(name,"Approximation")==0) return ApproximationEnum;220 else if (strcmp(name,"HutterApproximation")==0) return HutterApproximationEnum;221 else if (strcmp(name,"MacAyealApproximation")==0) return MacAyealApproximationEnum;222 else if (strcmp(name,"MacAyealPattynApproximation")==0) return MacAyealPattynApproximationEnum;223 else if (strcmp(name,"MacAyealStokesApproximation")==0) return MacAyealStokesApproximationEnum;224 else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum;225 else if (strcmp(name,"PattynApproximation")==0) return PattynApproximationEnum;226 else if (strcmp(name,"PattynStokesApproximation")==0) return PattynStokesApproximationEnum;227 else if (strcmp(name,"StokesApproximation")==0) return StokesApproximationEnum;228 else if (strcmp(name,"Constraints")==0) return ConstraintsEnum;229 else if (strcmp(name,"Loads")==0) return LoadsEnum;230 else if (strcmp(name,"Materials")==0) return MaterialsEnum;231 else if (strcmp(name,"Nodes")==0) return NodesEnum;232 else if (strcmp(name,"Parameters")==0) return ParametersEnum;233 else if (strcmp(name,"Vertices")==0) return VerticesEnum;234 else if (strcmp(name,"Results")==0) return ResultsEnum;235 else if (strcmp(name,"BoolInput")==0) return BoolInputEnum;236 else if (strcmp(name,"BoolParam")==0) return BoolParamEnum;237 else if (strcmp(name,"ControlInput")==0) return ControlInputEnum;238 else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum;239 else if (strcmp(name,"DofIndexing")==0) return DofIndexingEnum;240 else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum;241 else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum;242 else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum;243 else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum;244 else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum;245 else if (strcmp(name,"Element")==0) return ElementEnum;246 else if (strcmp(name,"ElementResult")==0) return ElementResultEnum;247 else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum;248 else if (strcmp(name,"FileParam")==0) return FileParamEnum;249 else if (strcmp(name,"Hook")==0) return HookEnum;250 else if (strcmp(name,"Icefront")==0) return IcefrontEnum;251 else if (strcmp(name,"Input")==0) return InputEnum;252 else if (strcmp(name,"IntInput")==0) return IntInputEnum;253 else if (strcmp(name,"IntParam")==0) return IntParamEnum;254 else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;255 else if (strcmp(name,"MacAyeal2dIceFront")==0) return MacAyeal2dIceFrontEnum;256 else if (strcmp(name,"MacAyeal3dIceFront")==0) return MacAyeal3dIceFrontEnum;257 else if (strcmp(name,"Matice")==0) return MaticeEnum;258 else if (strcmp(name,"Matpar")==0) return MatparEnum;259 else if (strcmp(name,"Node")==0) return NodeEnum;260 else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum;261 else if (strcmp(name,"Param")==0) return ParamEnum;262 else stage=3;263 }264 if(stage==3){265 if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum;266 else if (strcmp(name,"Pengrid")==0) return PengridEnum;267 else if (strcmp(name,"Penpair")==0) return PenpairEnum;268 else if (strcmp(name,"Penta")==0) return PentaEnum;269 else if (strcmp(name,"PentaP1Input")==0) return PentaP1InputEnum;270 else if (strcmp(name,"PetscMatParam")==0) return PetscMatParamEnum;271 else if (strcmp(name,"PetscVecParam")==0) return PetscVecParamEnum;272 else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;273 else if (strcmp(name,"Segment")==0) return SegmentEnum;274 else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum;275 else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum;276 else if (strcmp(name,"SpcStatic")==0) return SpcStaticEnum;277 else if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum;278 else if (strcmp(name,"StokesIceFront")==0) return StokesIceFrontEnum;279 else if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum;280 else if (strcmp(name,"StringParam")==0) return StringParamEnum;281 else if (strcmp(name,"Tria")==0) return TriaEnum;282 else if (strcmp(name,"TriaP1Input")==0) return TriaP1InputEnum;283 else if (strcmp(name,"Vertex")==0) return VertexEnum;284 else if (strcmp(name,"Air")==0) return AirEnum;285 else if (strcmp(name,"Ice")==0) return IceEnum;286 else if (strcmp(name,"Melange")==0) return MelangeEnum;287 else if (strcmp(name,"Water")==0) return WaterEnum;288 else if (strcmp(name,"Closed")==0) return ClosedEnum;289 else if (strcmp(name,"Free")==0) return FreeEnum;290 else if (strcmp(name,"Open")==0) return OpenEnum;291 else if (strcmp(name,"Adjointp")==0) return AdjointpEnum;292 else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;293 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;294 else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;295 else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;296 else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum;297 else if (strcmp(name,"Boundary")==0) return BoundaryEnum;298 else if (strcmp(name,"Constant")==0) return ConstantEnum;299 else if (strcmp(name,"Converged")==0) return ConvergedEnum;300 else if (strcmp(name,"ExtToIu")==0) return ExtToIuEnum;301 else if (strcmp(name,"Fill")==0) return FillEnum;302 else if (strcmp(name,"FractionIncrement")==0) return FractionIncrementEnum;303 else if (strcmp(name,"Friction")==0) return FrictionEnum;304 else if (strcmp(name,"GroundinglineMeltingRate")==0) return GroundinglineMeltingRateEnum;305 else if (strcmp(name,"Internal")==0) return InternalEnum;306 else if (strcmp(name,"IuToExt")==0) return IuToExtEnum;307 else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;308 else if (strcmp(name,"MaxPenetration")==0) return MaxPenetrationEnum;309 else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;310 else if (strcmp(name,"Misfit")==0) return MisfitEnum;311 else if (strcmp(name,"NumberNodeToElementConnectivity")==0) return NumberNodeToElementConnectivityEnum;312 else if (strcmp(name,"Pressure")==0) return PressureEnum;313 else if (strcmp(name,"PressurePicard")==0) return PressurePicardEnum;314 else if (strcmp(name,"QmuPressure")==0) return QmuPressureEnum;315 else if (strcmp(name,"QmuVx")==0) return QmuVxEnum;316 else if (strcmp(name,"QmuVy")==0) return QmuVyEnum;317 else if (strcmp(name,"QmuVz")==0) return QmuVzEnum;318 else if (strcmp(name,"QmuThickness")==0) return QmuThicknessEnum;319 else if (strcmp(name,"QmuBed")==0) return QmuBedEnum;320 else if (strcmp(name,"QmuSurface")==0) return QmuSurfaceEnum;321 else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum;322 else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;323 else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;324 else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;325 else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;326 else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum;327 else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum;328 else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum;329 else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum;330 else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum;331 else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum;332 else if (strcmp(name,"Temperature")==0) return TemperatureEnum;333 else if (strcmp(name,"TemperatureOld")==0) return TemperatureOldEnum;334 else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum;335 else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum;336 else if (strcmp(name,"Type")==0) return TypeEnum;337 else if (strcmp(name,"Vel")==0) return VelEnum;338 else if (strcmp(name,"Velocity")==0) return VelocityEnum;339 else if (strcmp(name,"VxAverage")==0) return VxAverageEnum;340 else if (strcmp(name,"Vx")==0) return VxEnum;341 else if (strcmp(name,"VxPicard")==0) return VxPicardEnum;342 else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;343 else if (strcmp(name,"Vy")==0) return VyEnum;344 else if (strcmp(name,"VyPicard")==0) return VyPicardEnum;345 else if (strcmp(name,"Vz")==0) return VzEnum;346 else if (strcmp(name,"VzMacAyeal")==0) return VzMacAyealEnum;347 else if (strcmp(name,"VzPattyn")==0) return VzPattynEnum;348 else if (strcmp(name,"VzPicard")==0) return VzPicardEnum;349 else if (strcmp(name,"VzStokes")==0) return VzStokesEnum;350 else if (strcmp(name,"VxMesh")==0) return VxMeshEnum;351 else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;352 else if (strcmp(name,"VzMesh")==0) return VzMeshEnum;353 else if (strcmp(name,"Enthalpy")==0) return EnthalpyEnum;354 else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum;355 else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum;356 else if (strcmp(name,"StepResponses")==0) return StepResponsesEnum;357 else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum;358 else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum;359 else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum;360 else if (strcmp(name,"TransientInput")==0) return TransientInputEnum;361 else if (strcmp(name,"Outputfilename")==0) return OutputfilenameEnum;362 else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum;363 else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum;364 else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;365 else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;366 else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum;367 else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;368 else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;369 else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;370 else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum;371 else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;372 else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;373 else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;374 else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;375 else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;376 else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;377 else if (strcmp(name,"P0")==0) return P0Enum;378 else if (strcmp(name,"P1")==0) return P1Enum;379 else if (strcmp(name,"P1DG")==0) return P1DGEnum;380 else if (strcmp(name,"BoolElementResult")==0) return BoolElementResultEnum;381 else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum;382 else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum;383 else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;384 else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;385 else stage=4;386 }387 if(stage==4){388 if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum;389 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;390 else if (strcmp(name,"J")==0) return JEnum;391 else if (strcmp(name,"Patch")==0) return PatchEnum;392 else if (strcmp(name,"PatchNodes")==0) return PatchNodesEnum;393 else if (strcmp(name,"PatchVertices")==0) return PatchVerticesEnum;394 else if (strcmp(name,"PentaP1ElementResult")==0) return PentaP1ElementResultEnum;395 else if (strcmp(name,"PetscVecExternalResult")==0) return PetscVecExternalResultEnum;396 else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum;397 else if (strcmp(name,"Time")==0) return TimeEnum;398 else if (strcmp(name,"TriaP1ElementResult")==0) return TriaP1ElementResultEnum;399 else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;400 else if (strcmp(name,"MinVel")==0) return MinVelEnum;401 else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;402 else if (strcmp(name,"MinVx")==0) return MinVxEnum;403 else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;404 else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;405 else if (strcmp(name,"MinVy")==0) return MinVyEnum;406 else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;407 else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum;408 else if (strcmp(name,"MinVz")==0) return MinVzEnum;409 else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;410 else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum;411 else if (strcmp(name,"Relative")==0) return RelativeEnum;412 else if (strcmp(name,"Absolute")==0) return AbsoluteEnum;413 else if (strcmp(name,"Incremental")==0) return IncrementalEnum;414 else if (strcmp(name,"AgressiveMigration")==0) return AgressiveMigrationEnum;415 else if (strcmp(name,"None")==0) return NoneEnum;416 else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum;417 else if (strcmp(name,"StokesSolver")==0) return StokesSolverEnum;418 else if (strcmp(name,"Adjoint")==0) return AdjointEnum;419 else if (strcmp(name,"Colinear")==0) return ColinearEnum;420 else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum;421 else if (strcmp(name,"Fset")==0) return FsetEnum;422 else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;423 else if (strcmp(name,"Gradient2")==0) return Gradient2Enum;424 else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;425 else if (strcmp(name,"Gradient")==0) return GradientEnum;426 else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;427 else if (strcmp(name,"Gset")==0) return GsetEnum;428 else if (strcmp(name,"Index")==0) return IndexEnum;429 else if (strcmp(name,"Indexed")==0) return IndexedEnum;430 else if (strcmp(name,"Intersect")==0) return IntersectEnum;431 else if (strcmp(name,"Nodal")==0) return NodalEnum;432 else if (strcmp(name,"OldGradient")==0) return OldGradientEnum;433 else if (strcmp(name,"OutputFilePointer")==0) return OutputFilePointerEnum;434 else if (strcmp(name,"PetscOptionsAnalyses")==0) return PetscOptionsAnalysesEnum;435 else if (strcmp(name,"PetscOptionsStrings")==0) return PetscOptionsStringsEnum;436 else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;437 else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;438 else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum;439 else if (strcmp(name,"Regular")==0) return RegularEnum;440 else if (strcmp(name,"Scaled")==0) return ScaledEnum;441 else if (strcmp(name,"Separate")==0) return SeparateEnum;442 else if (strcmp(name,"Sset")==0) return SsetEnum;443 else if (strcmp(name,"Verbose")==0) return VerboseEnum;444 else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;445 else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;446 else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;447 else if (strcmp(name,"XY")==0) return XYEnum;448 else if (strcmp(name,"XYZP")==0) return XYZPEnum;449 else if (strcmp(name,"Option")==0) return OptionEnum;450 else if (strcmp(name,"OptionCell")==0) return OptionCellEnum;451 else if (strcmp(name,"OptionChar")==0) return OptionCharEnum;452 else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum;453 else if (strcmp(name,"OptionDouble")==0) return OptionDoubleEnum;454 else if (strcmp(name,"OptionLogical")==0) return OptionLogicalEnum;455 else if (strcmp(name,"Paterson")==0) return PatersonEnum;456 else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum;457 else stage=5;458 }459 /*If we reach this point, the string provided has not been found*/460 _error_("Enum %s not found",name);461 446 } -
issm/trunk-jpl-damage/src/c/objects/Elements/Penta.cpp
r11419 r11425 769 769 } 770 770 /*}}}*/ 771 /*FUNCTION Penta::CreateJacobianMatrix{{{1*/772 void Penta::CreateJacobianMatrix(Mat Jff){773 774 /*retrieve parameters: */775 ElementMatrix* Ke=NULL;776 int analysis_type;777 parameters->FindParam(&analysis_type,AnalysisTypeEnum);778 779 /*Checks in debugging {{{2*/780 _assert_(this->nodes && this->matice && this->matpar && this->verticalneighbors && this->parameters && this->inputs);781 /*}}}*/782 783 /*Skip if water element*/784 if(IsOnWater()) return;785 786 /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */787 switch(analysis_type){788 #ifdef _HAVE_DIAGNOSTIC_789 case DiagnosticHorizAnalysisEnum:790 Ke=CreateJacobianDiagnosticHoriz();791 break;792 #endif793 default:794 _error_("analysis %i (%s) not supported yet",analysis_type,EnumToStringx(analysis_type));795 }796 797 /*Add to global matrix*/798 if(Ke){799 Ke->AddToGlobal(Jff);800 delete Ke;801 }802 }803 /*}}}*/804 771 /*FUNCTION Penta::DeepEcho{{{1*/ 805 772 void Penta::DeepEcho(void){ … … 1132 1099 /*}}}*/ 1133 1100 /*FUNCTION Penta::GetStabilizationParameter {{{1*/ 1134 double Penta::GetStabilizationParameter(double u, double v, double w, double diameter, double kappa){1101 double Penta::GetStabilizationParameter(double u, double v, double w, double diameter, double rho_ice, double heatcapacity, double thermalconductivity){ 1135 1102 /*Compute stabilization parameter*/ 1136 /*kappa=thermalconductivity/(rho_ice*hearcapacity) for thermal model*/1137 /*kappa=enthalpydiffusionparameter for enthalpy model*/1138 1103 1139 1104 double normu; … … 1141 1106 1142 1107 normu=pow(pow(u,2)+pow(v,2)+pow(w,2),0.5); 1143 if(normu*diameter/(3*2* kappa)<1){1144 tau_parameter=pow(diameter,2)/(3*2*2* kappa);1108 if(normu*diameter/(3*2*thermalconductivity/(rho_ice*heatcapacity))<1){ 1109 tau_parameter=pow(diameter,2)/(3*2*2*thermalconductivity/(rho_ice*heatcapacity)); 1145 1110 } 1146 1111 else tau_parameter=diameter/(2*normu); … … 3318 3283 GetBprimeAdvec(&Bprime_advec[0][0],&xyz_list[0][0],gauss); 3319 3284 3320 vx_input->GetInputValue(&u, gauss); vxm_input->GetInputValue(&um,gauss); vx=u-um; 3321 vy_input->GetInputValue(&v, gauss); vym_input->GetInputValue(&vm,gauss); vy=v-vm; 3322 vz_input->GetInputValue(&w, gauss); vzm_input->GetInputValue(&wm,gauss); vz=w-wm; 3285 vx_input->GetInputValue(&u, gauss); 3286 vy_input->GetInputValue(&v, gauss); 3287 vz_input->GetInputValue(&w, gauss); 3288 vxm_input->GetInputValue(&um,gauss); 3289 vym_input->GetInputValue(&vm,gauss); 3290 vzm_input->GetInputValue(&wm,gauss); 3291 vx=u-um; vy=v-vm; vz=w-wm; 3323 3292 3324 3293 D_scalar_advec=gauss->weight*Jdet; … … 3352 3321 vel=sqrt(pow(vx,2.)+pow(vy,2.)+pow(vz,2.))+1.e-14; 3353 3322 h=sqrt( pow(hx*vx/vel,2.) + pow(hy*vy/vel,2.) + pow(hz*vz/vel,2.)); 3354 K[0][0]=h/(2*vel)* vx*vx; K[0][1]=h/(2*vel)*vx*vy; K[0][2]=h/(2*vel)*vx*vz;3355 K[1][0]=h/(2*vel)* vy*vx; K[1][1]=h/(2*vel)*vy*vy; K[1][2]=h/(2*vel)*vy*vz;3356 K[2][0]=h/(2*vel)* vz*vx; K[2][1]=h/(2*vel)*vz*vy; K[2][2]=h/(2*vel)*vz*vz;3323 K[0][0]=h/(2*vel)*fabs(vx*vx); K[0][1]=h/(2*vel)*fabs(vx*vy); K[0][2]=h/(2*vel)*fabs(vx*vz); 3324 K[1][0]=h/(2*vel)*fabs(vy*vx); K[1][1]=h/(2*vel)*fabs(vy*vy); K[1][2]=h/(2*vel)*fabs(vy*vz); 3325 K[2][0]=h/(2*vel)*fabs(vz*vx); K[2][1]=h/(2*vel)*fabs(vz*vy); K[2][2]=h/(2*vel)*fabs(vz*vz); 3357 3326 D_scalar_stab=gauss->weight*Jdet; 3358 3327 if(dt) D_scalar_stab=D_scalar_stab*dt; … … 3368 3337 else if(stabilization==2){ 3369 3338 GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss); 3370 tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter, kappa);3339 tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter,rho_ice,heatcapacity,thermalconductivity); 3371 3340 3372 3341 for(i=0;i<numdof;i++){ … … 3482 3451 double Jdet,u,v,w,um,vm,wm,vel; 3483 3452 double h,hx,hy,hz,vx,vy,vz; 3484 double gravity,rho_ice,rho_water ,kappa;3453 double gravity,rho_ice,rho_water; 3485 3454 double heatcapacity,thermalconductivity,dt; 3486 3455 double tau_parameter,diameter; … … 3508 3477 heatcapacity=matpar->GetHeatCapacity(); 3509 3478 thermalconductivity=matpar->GetThermalConductivity(); 3510 kappa=thermalconductivity/(rho_ice*heatcapacity);3511 3479 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 3512 3480 this->parameters->FindParam(&stabilization,ThermalStabilizationEnum); … … 3531 3499 GetBConduct(&B_conduct[0][0],&xyz_list[0][0],gauss); 3532 3500 3533 D_scalar_conduct=gauss->weight*Jdet* kappa;3501 D_scalar_conduct=gauss->weight*Jdet*(thermalconductivity/(rho_ice*heatcapacity)); 3534 3502 if(dt) D_scalar_conduct=D_scalar_conduct*dt; 3535 3503 … … 3600 3568 else if(stabilization==2){ 3601 3569 GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss); 3602 tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter, kappa);3570 tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter,rho_ice,heatcapacity,thermalconductivity); 3603 3571 3604 3572 for(i=0;i<numdof;i++){ … … 3705 3673 double Jdet,phi,dt; 3706 3674 double rho_ice,heatcapacity; 3707 double thermalconductivity,kappa; 3708 double viscosity,pressure; 3709 double enthalpy,enthalpypicard; 3675 double thermalconductivity; 3676 double viscosity,enthalpy; 3710 3677 double tau_parameter,diameter; 3711 3678 double u,v,w; … … 3728 3695 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 3729 3696 this->parameters->FindParam(&stabilization,ThermalStabilizationEnum); 3730 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 3731 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 3732 Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input); 3733 Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input); 3734 Input* enthalpy_input=NULL; 3735 Input* enthalpypicard_input=NULL; 3736 if(dt){ 3737 enthalpy_input=inputs->GetInput(EnthalpyEnum); _assert_(enthalpy_input); 3738 } 3739 if (stabilization==2){ 3740 diameter=MinEdgeLength(xyz_list); 3741 enthalpypicard_input=inputs->GetInput(EnthalpyPicardEnum); _assert_(enthalpypicard_input); 3742 } 3697 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 3698 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 3699 Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input); 3700 Input* enthalpy_input=NULL; 3701 if (dt) enthalpy_input=inputs->GetInput(EnthalpyEnum); _assert_(inputs); 3702 if (stabilization==2) diameter=MinEdgeLength(xyz_list); 3743 3703 3744 3704 /* Start looping on the number of gaussian points: */ … … 3755 3715 GetPhi(&phi, &epsilon[0], viscosity); 3756 3716 3757 scalar_def=phi/ rho_ice*Jdet*gauss->weight;3717 scalar_def=phi/(rho_ice)*Jdet*gauss->weight; 3758 3718 if(dt) scalar_def=scalar_def*dt; 3759 3719 … … 3773 3733 vy_input->GetInputValue(&v, gauss); 3774 3734 vz_input->GetInputValue(&w, gauss); 3775 pressure_input->GetInputValue(&pressure, gauss); 3776 enthalpypicard_input->GetInputValue(&enthalpypicard, gauss); 3777 kappa=matpar->GetEnthalpyDiffusionParameter(enthalpy,pressure); 3778 tau_parameter=GetStabilizationParameter(u,v,w,diameter,kappa); 3735 3736 tau_parameter=GetStabilizationParameter(u,v,w,diameter,rho_ice,heatcapacity,thermalconductivity); 3779 3737 3780 3738 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]); … … 3861 3819 double rho_ice,heatcapacity,geothermalflux_value; 3862 3820 double basalfriction,alpha2,vx,vy; 3863 double scalar,enthalpy,enthalpyup; 3864 double pressure,pressureup; 3821 double scalar; 3865 3822 double basis[NUMVERTICES]; 3866 Friction* friction=NULL;3867 GaussPenta* gauss=NULL;3868 GaussPenta* gaussup=NULL;3869 3870 /* Geothermal flux on ice sheet base and basal friction */3871 if (!IsOnBed() || IsFloating()) return NULL;3872 3873 /*Initialize Element vector*/3874 ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters);3875 3876 /*Retrieve all inputs and parameters*/3877 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);3878 for(i=0;i<NUMVERTICES2D;i++) for(j=0;j<2;j++) xyz_list_tria[i][j]=xyz_list[i][j];3879 parameters->FindParam(&analysis_type,AnalysisTypeEnum);3880 rho_ice=matpar->GetRhoIce();3881 heatcapacity=matpar->GetHeatCapacity();3882 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);3883 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);3884 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);3885 Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input);3886 Input* enthalpy_input=inputs->GetInput(EnthalpyEnum); _assert_(enthalpy_input);3887 Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input);3888 Input* geothermalflux_input=inputs->GetInput(BasalforcingsGeothermalfluxEnum); _assert_(geothermalflux_input);3889 3890 /*Build frictoin element, needed later: */3891 friction=new Friction("3d",inputs,matpar,analysis_type);3892 3893 /* Start looping on the number of gauss 2d (nodes on the bedrock) */3894 gauss=new GaussPenta(0,1,2,2);3895 gaussup=new GaussPenta(3,4,5,2);3896 for(ig=gauss->begin();ig<gauss->end();ig++){3897 3898 gauss->GaussPoint(ig);3899 gaussup->GaussPoint(ig);3900 3901 GetTriaJacobianDeterminant(&Jdet2d, &xyz_list_tria[0][0], gauss);3902 GetNodalFunctionsP1(&basis[0], gauss);3903 3904 enthalpy_input->GetInputValue(&enthalpy,gauss);3905 pressure_input->GetInputValue(&pressure,gauss);3906 // if(enthalpy>matpar->PureIceEnthalpy(pressure)){3907 // enthalpy_input->GetInputValue(&enthalpyup,gaussup);3908 // pressure_input->GetInputValue(&pressureup,gaussup);3909 // if(enthalpyup>matpar->PureIceEnthalpy(pressureup)){3910 // //do nothing, don't add heatflux3911 // }3912 // else{3913 // //need to change spcenthalpy according to Aschwanden3914 // //NEED TO UPDATE3915 // }3916 // }3917 // else{3918 geothermalflux_input->GetInputValue(&geothermalflux_value,gauss);3919 friction->GetAlpha2(&alpha2,gauss,VxEnum,VyEnum,VzEnum);3920 vx_input->GetInputValue(&vx,gauss);3921 vy_input->GetInputValue(&vy,gauss);3922 basalfriction=alpha2*(pow(vx,2.0)+pow(vy,2.0));3923 3924 scalar=gauss->weight*Jdet2d*(basalfriction+geothermalflux_value)/(rho_ice);3925 if(dt) scalar=dt*scalar;3926 3927 for(i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i];3928 // }3929 }3930 3931 /*Clean up and return*/3932 delete gauss;3933 delete gaussup;3934 delete friction;3935 return pe;3936 }3937 /*}}}*/3938 /*FUNCTION Penta::CreatePVectorMelting {{{1*/3939 ElementVector* Penta::CreatePVectorMelting(void){3940 return NULL;3941 }3942 /*}}}*/3943 /*FUNCTION Penta::CreatePVectorThermal {{{1*/3944 ElementVector* Penta::CreatePVectorThermal(void){3945 3946 /*compute all load vectors for this element*/3947 ElementVector* pe1=CreatePVectorThermalVolume();3948 ElementVector* pe2=CreatePVectorThermalSheet();3949 ElementVector* pe3=CreatePVectorThermalShelf();3950 ElementVector* pe =new ElementVector(pe1,pe2,pe3);3951 3952 /*clean-up and return*/3953 delete pe1;3954 delete pe2;3955 delete pe3;3956 return pe;3957 }3958 /*}}}*/3959 /*FUNCTION Penta::CreatePVectorThermalVolume {{{1*/3960 ElementVector* Penta::CreatePVectorThermalVolume(void){3961 3962 /*Constants*/3963 const int numdof=NUMVERTICES*NDOF1;3964 3965 /*Intermediaries*/3966 int i,j,ig,found=0;3967 int friction_type,stabilization;3968 double Jdet,phi,dt;3969 double rho_ice,heatcapacity;3970 double thermalconductivity,kappa;3971 double viscosity,temperature;3972 double tau_parameter,diameter;3973 double u,v,w;3974 double scalar_def,scalar_transient;3975 double temperature_list[NUMVERTICES];3976 double xyz_list[NUMVERTICES][3];3977 double L[numdof];3978 double dbasis[3][6];3979 double epsilon[6];3980 GaussPenta *gauss=NULL;3981 3982 /*Initialize Element vector*/3983 ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters);3984 3985 /*Retrieve all inputs and parameters*/3986 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);3987 rho_ice=matpar->GetRhoIce();3988 heatcapacity=matpar->GetHeatCapacity();3989 thermalconductivity=matpar->GetThermalConductivity();3990 kappa=thermalconductivity/(rho_ice*heatcapacity);3991 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);3992 this->parameters->FindParam(&stabilization,ThermalStabilizationEnum);3993 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);3994 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);3995 Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input);3996 Input* temperature_input=NULL;3997 if (dt) temperature_input=inputs->GetInput(TemperatureEnum); _assert_(inputs);3998 if (stabilization==2) diameter=MinEdgeLength(xyz_list);3999 4000 /* Start looping on the number of gaussian points: */4001 gauss=new GaussPenta(2,3);4002 for (ig=gauss->begin();ig<gauss->end();ig++){4003 4004 gauss->GaussPoint(ig);4005 4006 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);4007 GetNodalFunctionsP1(&L[0], gauss);4008 4009 this->GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input);4010 matice->GetViscosity3dStokes(&viscosity,&epsilon[0]);4011 GetPhi(&phi, &epsilon[0], viscosity);4012 4013 scalar_def=phi/(rho_ice*heatcapacity)*Jdet*gauss->weight;4014 if(dt) scalar_def=scalar_def*dt;4015 4016 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=scalar_def*L[i];4017 4018 /* Build transient now */4019 if(dt){4020 temperature_input->GetInputValue(&temperature, gauss);4021 scalar_transient=temperature*Jdet*gauss->weight;4022 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=scalar_transient*L[i];4023 }4024 4025 if(stabilization==2){4026 GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss);4027 4028 vx_input->GetInputValue(&u, gauss);4029 vy_input->GetInputValue(&v, gauss);4030 vz_input->GetInputValue(&w, gauss);4031 4032 tau_parameter=GetStabilizationParameter(u,v,w,diameter,kappa);4033 4034 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]);4035 if(dt){4036 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=tau_parameter*scalar_transient*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]);4037 }4038 }4039 }4040 4041 /*Clean up and return*/4042 delete gauss;4043 return pe;4044 }4045 /*}}}*/4046 /*FUNCTION Penta::CreatePVectorThermalShelf {{{1*/4047 ElementVector* Penta::CreatePVectorThermalShelf(void){4048 4049 /*Constants*/4050 const int numdof=NUMVERTICES*NDOF1;4051 4052 /*Intermediaries */4053 int i,j,ig;4054 double Jdet2d;4055 double mixed_layer_capacity,thermal_exchange_velocity;4056 double rho_ice,rho_water,pressure,dt,scalar_ocean;4057 double heatcapacity,t_pmp;4058 double xyz_list[NUMVERTICES][3];4059 double xyz_list_tria[NUMVERTICES2D][3];4060 double basis[NUMVERTICES];4061 GaussPenta* gauss=NULL;4062 4063 /* Ice/ocean heat exchange flux on ice shelf base */4064 if (!IsOnBed() || !IsFloating()) return NULL;4065 4066 /*Initialize Element vector*/4067 ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters);4068 4069 /*Retrieve all inputs and parameters*/4070 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);4071 for(i=0;i<NUMVERTICES2D;i++) for(j=0;j<3;j++) xyz_list_tria[i][j]=xyz_list[i][j];4072 mixed_layer_capacity=matpar->GetMixedLayerCapacity();4073 thermal_exchange_velocity=matpar->GetThermalExchangeVelocity();4074 rho_water=matpar->GetRhoWater();4075 rho_ice=matpar->GetRhoIce();4076 heatcapacity=matpar->GetHeatCapacity();4077 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum);4078 Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input);4079 4080 /* Start looping on the number of gauss 2d (nodes on the bedrock) */4081 gauss=new GaussPenta(0,1,2,2);4082 for(ig=gauss->begin();ig<gauss->end();ig++){4083 4084 gauss->GaussPoint(ig);4085 4086 GetTriaJacobianDeterminant(&Jdet2d, &xyz_list_tria[0][0], gauss);4087 GetNodalFunctionsP1(&basis[0], gauss);4088 4089 pressure_input->GetInputValue(&pressure,gauss);4090 t_pmp=matpar->TMeltingPoint(pressure);4091 4092 scalar_ocean=gauss->weight*Jdet2d*rho_water*mixed_layer_capacity*thermal_exchange_velocity*(t_pmp)/(heatcapacity*rho_ice);4093 if(dt) scalar_ocean=dt*scalar_ocean;4094 4095 for(i=0;i<numdof;i++) pe->values[i]+=scalar_ocean*basis[i];4096 }4097 4098 /*Clean up and return*/4099 delete gauss;4100 return pe;4101 }4102 /*}}}*/4103 /*FUNCTION Penta::CreatePVectorThermalSheet {{{1*/4104 ElementVector* Penta::CreatePVectorThermalSheet(void){4105 4106 /*Constants*/4107 const int numdof=NUMVERTICES*NDOF1;4108 4109 /*Intermediaries */4110 int i,j,ig;4111 int analysis_type;4112 double xyz_list[NUMVERTICES][3];4113 double xyz_list_tria[NUMVERTICES2D][3]={0.0};4114 double Jdet2d,dt;4115 double rho_ice,heatcapacity,geothermalflux_value;4116 double basalfriction,alpha2,vx,vy;4117 double basis[NUMVERTICES];4118 double scalar;4119 3823 Friction* friction=NULL; 4120 3824 GaussPenta* gauss=NULL; … … 4150 3854 GetNodalFunctionsP1(&basis[0], gauss); 4151 3855 4152 geothermalflux_input->GetInputValue(&geothermalflux_value,gauss); 4153 friction->GetAlpha2(&alpha2,gauss,VxEnum,VyEnum,VzEnum); 4154 vx_input->GetInputValue(&vx,gauss); 4155 vy_input->GetInputValue(&vy,gauss); 4156 basalfriction=alpha2*(pow(vx,2.0)+pow(vy,2.0)); 4157 4158 scalar=gauss->weight*Jdet2d*(basalfriction+geothermalflux_value)/(heatcapacity*rho_ice); 4159 if(dt) scalar=dt*scalar; 4160 4161 for(i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i]; 3856 geothermalflux_input->GetInputValue(&geothermalflux_value,gauss); 3857 friction->GetAlpha2(&alpha2,gauss,VxEnum,VyEnum,VzEnum); 3858 vx_input->GetInputValue(&vx,gauss); 3859 vy_input->GetInputValue(&vy,gauss); 3860 basalfriction=alpha2*(pow(vx,2.0)+pow(vy,2.0)); 3861 3862 scalar=gauss->weight*Jdet2d*(basalfriction+geothermalflux_value)/(rho_ice); 3863 if(dt) scalar=dt*scalar; 3864 3865 for(i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i]; 3866 } 3867 3868 /*Clean up and return*/ 3869 delete gauss; 3870 delete friction; 3871 return pe; 3872 } 3873 /*}}}*/ 3874 /*FUNCTION Penta::CreatePVectorMelting {{{1*/ 3875 ElementVector* Penta::CreatePVectorMelting(void){ 3876 return NULL; 3877 } 3878 /*}}}*/ 3879 /*FUNCTION Penta::CreatePVectorThermal {{{1*/ 3880 ElementVector* Penta::CreatePVectorThermal(void){ 3881 3882 /*compute all load vectors for this element*/ 3883 ElementVector* pe1=CreatePVectorThermalVolume(); 3884 ElementVector* pe2=CreatePVectorThermalSheet(); 3885 ElementVector* pe3=CreatePVectorThermalShelf(); 3886 ElementVector* pe =new ElementVector(pe1,pe2,pe3); 3887 3888 /*clean-up and return*/ 3889 delete pe1; 3890 delete pe2; 3891 delete pe3; 3892 return pe; 3893 } 3894 /*}}}*/ 3895 /*FUNCTION Penta::CreatePVectorThermalVolume {{{1*/ 3896 ElementVector* Penta::CreatePVectorThermalVolume(void){ 3897 3898 /*Constants*/ 3899 const int numdof=NUMVERTICES*NDOF1; 3900 3901 /*Intermediaries*/ 3902 int i,j,ig,found=0; 3903 int friction_type,stabilization; 3904 double Jdet,phi,dt; 3905 double rho_ice,heatcapacity; 3906 double thermalconductivity; 3907 double viscosity,temperature; 3908 double tau_parameter,diameter; 3909 double u,v,w; 3910 double scalar_def,scalar_transient; 3911 double temperature_list[NUMVERTICES]; 3912 double xyz_list[NUMVERTICES][3]; 3913 double L[numdof]; 3914 double dbasis[3][6]; 3915 double epsilon[6]; 3916 GaussPenta *gauss=NULL; 3917 3918 /*Initialize Element vector*/ 3919 ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters); 3920 3921 /*Retrieve all inputs and parameters*/ 3922 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 3923 rho_ice=matpar->GetRhoIce(); 3924 heatcapacity=matpar->GetHeatCapacity(); 3925 thermalconductivity=matpar->GetThermalConductivity(); 3926 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 3927 this->parameters->FindParam(&stabilization,ThermalStabilizationEnum); 3928 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 3929 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 3930 Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input); 3931 Input* temperature_input=NULL; 3932 if (dt) temperature_input=inputs->GetInput(TemperatureEnum); _assert_(inputs); 3933 if (stabilization==2) diameter=MinEdgeLength(xyz_list); 3934 3935 /* Start looping on the number of gaussian points: */ 3936 gauss=new GaussPenta(2,3); 3937 for (ig=gauss->begin();ig<gauss->end();ig++){ 3938 3939 gauss->GaussPoint(ig); 3940 3941 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss); 3942 GetNodalFunctionsP1(&L[0], gauss); 3943 3944 this->GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 3945 matice->GetViscosity3dStokes(&viscosity,&epsilon[0]); 3946 GetPhi(&phi, &epsilon[0], viscosity); 3947 3948 scalar_def=phi/(rho_ice*heatcapacity)*Jdet*gauss->weight; 3949 if(dt) scalar_def=scalar_def*dt; 3950 3951 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=scalar_def*L[i]; 3952 3953 /* Build transient now */ 3954 if(dt){ 3955 temperature_input->GetInputValue(&temperature, gauss); 3956 scalar_transient=temperature*Jdet*gauss->weight; 3957 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=scalar_transient*L[i]; 3958 } 3959 3960 if(stabilization==2){ 3961 GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss); 3962 3963 vx_input->GetInputValue(&u, gauss); 3964 vy_input->GetInputValue(&v, gauss); 3965 vz_input->GetInputValue(&w, gauss); 3966 3967 tau_parameter=GetStabilizationParameter(u,v,w,diameter,rho_ice,heatcapacity,thermalconductivity); 3968 3969 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=tau_parameter*scalar_def*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]); 3970 if(dt){ 3971 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=tau_parameter*scalar_transient*(u*dbasis[0][i]+v*dbasis[1][i]+w*dbasis[2][i]); 3972 } 3973 } 3974 } 3975 3976 /*Clean up and return*/ 3977 delete gauss; 3978 return pe; 3979 } 3980 /*}}}*/ 3981 /*FUNCTION Penta::CreatePVectorThermalShelf {{{1*/ 3982 ElementVector* Penta::CreatePVectorThermalShelf(void){ 3983 3984 /*Constants*/ 3985 const int numdof=NUMVERTICES*NDOF1; 3986 3987 /*Intermediaries */ 3988 int i,j,ig; 3989 double Jdet2d; 3990 double mixed_layer_capacity,thermal_exchange_velocity; 3991 double rho_ice,rho_water,pressure,dt,scalar_ocean; 3992 double heatcapacity,t_pmp; 3993 double xyz_list[NUMVERTICES][3]; 3994 double xyz_list_tria[NUMVERTICES2D][3]; 3995 double basis[NUMVERTICES]; 3996 GaussPenta* gauss=NULL; 3997 3998 /* Ice/ocean heat exchange flux on ice shelf base */ 3999 if (!IsOnBed() || !IsFloating()) return NULL; 4000 4001 /*Initialize Element vector*/ 4002 ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters); 4003 4004 /*Retrieve all inputs and parameters*/ 4005 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 4006 for(i=0;i<NUMVERTICES2D;i++) for(j=0;j<3;j++) xyz_list_tria[i][j]=xyz_list[i][j]; 4007 mixed_layer_capacity=matpar->GetMixedLayerCapacity(); 4008 thermal_exchange_velocity=matpar->GetThermalExchangeVelocity(); 4009 rho_water=matpar->GetRhoWater(); 4010 rho_ice=matpar->GetRhoIce(); 4011 heatcapacity=matpar->GetHeatCapacity(); 4012 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 4013 Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input); 4014 4015 /* Start looping on the number of gauss 2d (nodes on the bedrock) */ 4016 gauss=new GaussPenta(0,1,2,2); 4017 for(ig=gauss->begin();ig<gauss->end();ig++){ 4018 4019 gauss->GaussPoint(ig); 4020 4021 GetTriaJacobianDeterminant(&Jdet2d, &xyz_list_tria[0][0], gauss); 4022 GetNodalFunctionsP1(&basis[0], gauss); 4023 4024 pressure_input->GetInputValue(&pressure,gauss); 4025 t_pmp=matpar->TMeltingPoint(pressure); 4026 4027 scalar_ocean=gauss->weight*Jdet2d*rho_water*mixed_layer_capacity*thermal_exchange_velocity*(t_pmp)/(heatcapacity*rho_ice); 4028 if(dt) scalar_ocean=dt*scalar_ocean; 4029 4030 for(i=0;i<numdof;i++) pe->values[i]+=scalar_ocean*basis[i]; 4031 } 4032 4033 /*Clean up and return*/ 4034 delete gauss; 4035 return pe; 4036 } 4037 /*}}}*/ 4038 /*FUNCTION Penta::CreatePVectorThermalSheet {{{1*/ 4039 ElementVector* Penta::CreatePVectorThermalSheet(void){ 4040 4041 /*Constants*/ 4042 const int numdof=NUMVERTICES*NDOF1; 4043 4044 /*Intermediaries */ 4045 int i,j,ig; 4046 int analysis_type; 4047 double xyz_list[NUMVERTICES][3]; 4048 double xyz_list_tria[NUMVERTICES2D][3]={0.0}; 4049 double Jdet2d,dt; 4050 double rho_ice,heatcapacity,geothermalflux_value; 4051 double basalfriction,alpha2,vx,vy; 4052 double scalar; 4053 double basis[NUMVERTICES]; 4054 Friction* friction=NULL; 4055 GaussPenta* gauss=NULL; 4056 4057 /* Geothermal flux on ice sheet base and basal friction */ 4058 if (!IsOnBed() || IsFloating()) return NULL; 4059 4060 /*Initialize Element vector*/ 4061 ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters); 4062 4063 /*Retrieve all inputs and parameters*/ 4064 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 4065 for(i=0;i<NUMVERTICES2D;i++) for(j=0;j<2;j++) xyz_list_tria[i][j]=xyz_list[i][j]; 4066 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 4067 rho_ice=matpar->GetRhoIce(); 4068 heatcapacity=matpar->GetHeatCapacity(); 4069 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 4070 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 4071 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 4072 Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input); 4073 Input* geothermalflux_input=inputs->GetInput(BasalforcingsGeothermalfluxEnum); _assert_(geothermalflux_input); 4074 4075 /*Build frictoin element, needed later: */ 4076 friction=new Friction("3d",inputs,matpar,analysis_type); 4077 4078 /* Start looping on the number of gauss 2d (nodes on the bedrock) */ 4079 gauss=new GaussPenta(0,1,2,2); 4080 for(ig=gauss->begin();ig<gauss->end();ig++){ 4081 4082 gauss->GaussPoint(ig); 4083 4084 GetTriaJacobianDeterminant(&Jdet2d, &xyz_list_tria[0][0], gauss); 4085 GetNodalFunctionsP1(&basis[0], gauss); 4086 4087 geothermalflux_input->GetInputValue(&geothermalflux_value,gauss); 4088 friction->GetAlpha2(&alpha2,gauss,VxEnum,VyEnum,VzEnum); 4089 vx_input->GetInputValue(&vx,gauss); 4090 vy_input->GetInputValue(&vy,gauss); 4091 basalfriction=alpha2*(pow(vx,2.0)+pow(vy,2.0)); 4092 4093 scalar=gauss->weight*Jdet2d*(basalfriction+geothermalflux_value)/(heatcapacity*rho_ice); 4094 if(dt) scalar=dt*scalar; 4095 4096 for(i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i]; 4162 4097 } 4163 4098 … … 4337 4272 /*Convert enthalpy into temperature and water fraction*/ 4338 4273 for(i=0;i<numdof;i++) matpar->EnthalpyToThermal(&temperatures[i],&waterfraction[i],values[i],pressure[i]); 4339 for(i=0;i<numdof;i++){4340 matpar->EnthalpyToThermal(&temperatures[i],&waterfraction[i],values[i],pressure[i]);4341 if(waterfraction[i]<0) _error_("Negative water fraction found in solution vector");4342 //if(waterfraction[i]>1) _error_("Water fraction >1 found in solution vector");4343 }4344 4274 4345 4275 this->inputs->AddInput(new PentaP1Input(EnthalpyEnum,values)); … … 7389 7319 } 7390 7320 /*}}}*/ 7391 /*FUNCTION Penta::CreateJacobianDiagnosticHoriz{{{1*/7392 ElementMatrix* Penta::CreateJacobianDiagnosticHoriz(void){7393 7394 int approximation;7395 inputs->GetInputValue(&approximation,ApproximationEnum);7396 7397 switch(approximation){7398 case MacAyealApproximationEnum:7399 return CreateJacobianDiagnosticMacayeal2d();7400 case PattynApproximationEnum:7401 return CreateJacobianDiagnosticPattyn();7402 case StokesApproximationEnum:7403 return CreateJacobianDiagnosticStokes();7404 case NoneApproximationEnum:7405 return NULL;7406 default:7407 _error_("Approximation %s not supported yet",EnumToStringx(approximation));7408 }7409 }7410 /*}}}*/7411 /*FUNCTION Penta::CreateJacobianDiagnosticMacayeal2d{{{1*/7412 ElementMatrix* Penta::CreateJacobianDiagnosticMacayeal2d(void){7413 7414 /*Figure out if this penta is collapsed. If so, then bailout, except if it is at the7415 bedrock, in which case we spawn a tria element using the 3 first nodes, and use it to build7416 the stiffness matrix. */7417 if (!IsOnBed()) return NULL;7418 7419 /*Depth Averaging B*/7420 this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum,MaterialsEnum);7421 7422 /*Call Tria function*/7423 Tria* tria=(Tria*)SpawnTria(0,1,2); //nodes 0, 1 and 2 make the new tria.7424 ElementMatrix* Ke=tria->CreateJacobianDiagnosticMacayeal();7425 delete tria->matice; delete tria;7426 7427 /*Delete B averaged*/7428 this->matice->inputs->DeleteInput(MaterialsRheologyBbarEnum);7429 7430 /*clean up and return*/7431 return Ke;7432 }7433 /*}}}*/7434 /*FUNCTION Penta::CreateJacobianDiagnosticPattyn{{{1*/7435 ElementMatrix* Penta::CreateJacobianDiagnosticPattyn(void){7436 7437 /*Constants*/7438 const int numdof=NDOF2*NUMVERTICES;7439 7440 /*Intermediaries */7441 int i,j,ig;7442 double xyz_list[NUMVERTICES][3];7443 double Jdet;7444 double eps1dotdphii,eps1dotdphij;7445 double eps2dotdphii,eps2dotdphij;7446 double mu_prime;7447 double epsilon[5]; /* epsilon=[exx,eyy,exy,exz,eyz];*/7448 double eps1[3],eps2[3];7449 double phi[NUMVERTICES];7450 double dphi[3][NUMVERTICES];7451 GaussPenta *gauss=NULL;7452 7453 /*Initialize Jacobian with regular Pattyn (first part of the Gateau derivative)*/7454 ElementMatrix* Ke=CreateKMatrixDiagnosticPattyn();7455 7456 /*Retrieve all inputs and parameters*/7457 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);7458 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);7459 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);7460 7461 /* Start looping on the number of gaussian points: */7462 gauss=new GaussPenta(5,5);7463 for (ig=gauss->begin();ig<gauss->end();ig++){7464 7465 gauss->GaussPoint(ig);7466 7467 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);7468 GetNodalFunctionsP1Derivatives(&dphi[0][0],&xyz_list[0][0],gauss);7469 7470 this->GetStrainRate3dPattyn(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);7471 matice->GetViscosityDerivativeEpsSquare(&mu_prime,&epsilon[0]);7472 eps1[0]=2*epsilon[0]+epsilon[1]; eps2[0]=epsilon[2];7473 eps1[1]=epsilon[2]; eps2[1]=epsilon[0]+2*epsilon[1];7474 eps1[2]=epsilon[3]; eps2[2]=epsilon[4];7475 7476 for(i=0;i<6;i++){7477 for(j=0;j<6;j++){7478 eps1dotdphii=eps1[0]*dphi[0][i]+eps1[1]*dphi[1][i]+eps1[2]*dphi[2][i];7479 eps1dotdphij=eps1[0]*dphi[0][j]+eps1[1]*dphi[1][j]+eps1[2]*dphi[2][j];7480 eps2dotdphii=eps2[0]*dphi[0][i]+eps2[1]*dphi[1][i]+eps2[2]*dphi[2][i];7481 eps2dotdphij=eps2[0]*dphi[0][j]+eps2[1]*dphi[1][j]+eps2[2]*dphi[2][j];7482 7483 Ke->values[12*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii;7484 Ke->values[12*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii;7485 Ke->values[12*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii;7486 Ke->values[12*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii;7487 }7488 }7489 }7490 7491 /*Transform Coordinate System*/7492 TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,XYEnum);7493 7494 /*Clean up and return*/7495 delete gauss;7496 return Ke;7497 }7498 /*}}}*/7499 /*FUNCTION Penta::CreateJacobianDiagnosticStokes{{{1*/7500 ElementMatrix* Penta::CreateJacobianDiagnosticStokes(void){7501 7502 /*Constants*/7503 const int numdof=NDOF4*NUMVERTICES;7504 7505 /*Intermediaries */7506 int i,j,ig;7507 double xyz_list[NUMVERTICES][3];7508 double Jdet;7509 double eps1dotdphii,eps1dotdphij;7510 double eps2dotdphii,eps2dotdphij;7511 double eps3dotdphii,eps3dotdphij;7512 double mu_prime;7513 double epsilon[5]; /* epsilon=[exx,eyy,exy,exz,eyz];*/7514 double eps1[3],eps2[3],eps3[3];7515 double phi[NUMVERTICES];7516 double dphi[3][NUMVERTICES];7517 GaussPenta *gauss=NULL;7518 7519 /*Initialize Jacobian with regular Stokes (first part of the Gateau derivative)*/7520 ElementMatrix* Ke=CreateKMatrixDiagnosticStokes();7521 7522 /*Retrieve all inputs and parameters*/7523 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);7524 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);7525 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);7526 Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input);7527 7528 /* Start looping on the number of gaussian points: */7529 gauss=new GaussPenta(5,5);7530 for (ig=gauss->begin();ig<gauss->end();ig++){7531 7532 gauss->GaussPoint(ig);7533 7534 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss);7535 GetNodalFunctionsP1Derivatives(&dphi[0][0],&xyz_list[0][0],gauss);7536 7537 this->GetStrainRate3dPattyn(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);7538 matice->GetViscosityDerivativeEpsSquare(&mu_prime,&epsilon[0]);7539 eps1[0]=epsilon[0]; eps2[0]=epsilon[2]; eps3[0]=epsilon[3];7540 eps1[1]=epsilon[2]; eps2[1]=epsilon[1]; eps3[1]=epsilon[4];7541 eps1[2]=epsilon[3]; eps2[2]=epsilon[4]; eps3[2]= -epsilon[0] -epsilon[1];7542 7543 for(i=0;i<6;i++){7544 for(j=0;j<6;j++){7545 eps1dotdphii=eps1[0]*dphi[0][i]+eps1[1]*dphi[1][i]+eps1[2]*dphi[2][i];7546 eps1dotdphij=eps1[0]*dphi[0][j]+eps1[1]*dphi[1][j]+eps1[2]*dphi[2][j];7547 eps2dotdphii=eps2[0]*dphi[0][i]+eps2[1]*dphi[1][i]+eps2[2]*dphi[2][i];7548 eps2dotdphij=eps2[0]*dphi[0][j]+eps2[1]*dphi[1][j]+eps2[2]*dphi[2][j];7549 eps3dotdphii=eps3[0]*dphi[0][i]+eps3[1]*dphi[1][i]+eps3[2]*dphi[2][i];7550 eps3dotdphij=eps3[0]*dphi[0][j]+eps3[1]*dphi[1][j]+eps3[2]*dphi[2][j];7551 7552 Ke->values[numdof*(4*i+0)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii;7553 Ke->values[numdof*(4*i+0)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii;7554 Ke->values[numdof*(4*i+0)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps1dotdphii;7555 7556 Ke->values[numdof*(4*i+1)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii;7557 Ke->values[numdof*(4*i+1)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii;7558 Ke->values[numdof*(4*i+1)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps2dotdphii;7559 7560 Ke->values[numdof*(4*i+2)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps3dotdphii;7561 Ke->values[numdof*(4*i+2)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps3dotdphii;7562 Ke->values[numdof*(4*i+2)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps3dotdphii;7563 }7564 }7565 }7566 7567 /*Transform Coordinate System*/7568 TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,XYZPEnum);7569 7570 /*Clean up and return*/7571 delete gauss;7572 return Ke;7573 }7574 /*}}}*/7575 7321 /*FUNCTION Penta::GetSolutionFromInputsDiagnosticHoriz{{{1*/ 7576 7322 void Penta::GetSolutionFromInputsDiagnosticHoriz(Vec solution){ -
issm/trunk-jpl-damage/src/c/objects/Elements/Penta.h
r11422 r11425 88 88 void CreateKMatrix(Mat Kff, Mat Kfs,Vec df); 89 89 void CreatePVector(Vec pf); 90 void CreateJacobianMatrix(Mat Jff);91 90 void DeleteResults(void); 92 91 int GetNodeIndex(Node* node); … … 180 179 void GetPhi(double* phi, double* epsilon, double viscosity); 181 180 void GetSolutionFromInputsEnthalpy(Vec solutiong); 182 double GetStabilizationParameter(double u, double v, double w, double diameter, double kappa);181 double GetStabilizationParameter(double u, double v, double w, double diameter, double rho_ice, double heatcapacity, double thermalconductivity); 183 182 void GetStrainRate3dPattyn(double* epsilon,double* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input); 184 183 void GetStrainRate3d(double* epsilon,double* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input, Input* vz_input); … … 232 231 ElementMatrix* CreateKMatrixDiagnosticVertVolume(void); 233 232 ElementMatrix* CreateKMatrixDiagnosticVertSurface(void); 234 ElementMatrix* CreateJacobianDiagnosticHoriz(void);235 ElementMatrix* CreateJacobianDiagnosticMacayeal2d(void);236 ElementMatrix* CreateJacobianDiagnosticPattyn(void);237 ElementMatrix* CreateJacobianDiagnosticStokes(void);238 233 void InputUpdateFromSolutionDiagnosticHoriz( double* solutiong); 239 234 void InputUpdateFromSolutionDiagnosticMacAyeal( double* solutiong); -
issm/trunk-jpl-damage/src/c/objects/Elements/Tria.cpp
r11422 r11425 886 886 delete gauss; 887 887 return pe; 888 }889 /*}}}*/890 /*FUNCTION Tria::CreateJacobianMatrix{{{1*/891 void Tria::CreateJacobianMatrix(Mat Jff){892 893 /*retrieve parameters: */894 ElementMatrix* Ke=NULL;895 int analysis_type;896 parameters->FindParam(&analysis_type,AnalysisTypeEnum);897 898 /*Checks in debugging {{{2*/899 _assert_(this->nodes && this->matice && this->matpar && this->parameters && this->inputs);900 /*}}}*/901 902 /*Skip if water element*/903 if(IsOnWater()) return;904 905 /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */906 switch(analysis_type){907 #ifdef _HAVE_DIAGNOSTIC_908 case DiagnosticHorizAnalysisEnum:909 Ke=CreateJacobianDiagnosticMacayeal();910 break;911 #endif912 default:913 _error_("analysis %i (%s) not supported yet",analysis_type,EnumToStringx(analysis_type));914 }915 916 /*Add to global matrix*/917 if(Ke){918 Ke->AddToGlobal(Jff);919 delete Ke;920 }921 888 } 922 889 /*}}}*/ … … 3064 3031 } 3065 3032 /*}}}*/ 3066 /*FUNCTION Tria::CreateJacobianDiagnosticPattyn{{{1*/3067 ElementMatrix* Tria::CreateJacobianDiagnosticMacayeal(void){3068 3069 /*Constants*/3070 const int numdof=NDOF2*NUMVERTICES;3071 3072 /*Intermediaries */3073 int i,j,ig;3074 double xyz_list[NUMVERTICES][3];3075 double Jdet,thickness;3076 double eps1dotdphii,eps1dotdphij;3077 double eps2dotdphii,eps2dotdphij;3078 double mu_prime;3079 double epsilon[3];/* epsilon=[exx,eyy,exy];*/3080 double eps1[2],eps2[2];3081 double phi[NUMVERTICES];3082 double dphi[2][NUMVERTICES];3083 GaussTria *gauss=NULL;3084 3085 /*Initialize Jacobian with regular MacAyeal (first part of the Gateau derivative)*/3086 ElementMatrix* Ke=CreateKMatrixDiagnosticMacAyeal();3087 3088 /*Retrieve all inputs and parameters*/3089 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES);3090 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input);3091 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input);3092 Input* thickness_input=inputs->GetInput(ThicknessEnum); _assert_(thickness_input);3093 3094 /* Start looping on the number of gaussian points: */3095 gauss=new GaussTria(2);3096 for (ig=gauss->begin();ig<gauss->end();ig++){3097 3098 gauss->GaussPoint(ig);3099 3100 GetJacobianDeterminant2d(&Jdet, &xyz_list[0][0],gauss);3101 GetNodalFunctionsDerivatives(&dphi[0][0],&xyz_list[0][0],gauss);3102 3103 thickness_input->GetInputValue(&thickness, gauss);3104 this->GetStrainRate2d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input);3105 matice->GetViscosityDerivativeEpsSquare(&mu_prime,&epsilon[0]);3106 eps1[0]=2*epsilon[0]+epsilon[1]; eps2[0]=epsilon[2];3107 eps1[1]=epsilon[2]; eps2[1]=epsilon[0]+2*epsilon[1];3108 3109 for(i=0;i<3;i++){3110 for(j=0;j<3;j++){3111 eps1dotdphii=eps1[0]*dphi[0][i]+eps1[1]*dphi[1][i];3112 eps1dotdphij=eps1[0]*dphi[0][j]+eps1[1]*dphi[1][j];3113 eps2dotdphii=eps2[0]*dphi[0][i]+eps2[1]*dphi[1][i];3114 eps2dotdphij=eps2[0]*dphi[0][j]+eps2[1]*dphi[1][j];3115 3116 Ke->values[6*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*thickness*eps1dotdphij*eps1dotdphii;3117 Ke->values[6*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*thickness*eps2dotdphij*eps1dotdphii;3118 Ke->values[6*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*thickness*eps1dotdphij*eps2dotdphii;3119 Ke->values[6*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*thickness*eps2dotdphij*eps2dotdphii;3120 }3121 }3122 }3123 3124 /*Transform Coordinate System*/3125 TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,XYEnum);3126 3127 /*Clean up and return*/3128 delete gauss;3129 return Ke;3130 }3131 /*}}}*/3132 3033 /*FUNCTION Tria::GetSolutionFromInputsDiagnosticHoriz{{{1*/ 3133 3034 void Tria::GetSolutionFromInputsDiagnosticHoriz(Vec solution){ … … 3431 3332 /*dJ/dalpha = ∂L/∂alpha = ∂J/∂alpha + ∂/∂alpha(KU-F)*/ 3432 3333 3433 /*If on water, grad = 0: (WHY???)*/3434 if(IsOnWater()) return; 3334 /*If on water, grad = 0: */ 3335 if(IsOnWater()) return; 3435 3336 3436 3337 /*First deal with ∂/∂alpha(KU-F)*/ -
issm/trunk-jpl-damage/src/c/objects/Elements/Tria.h
r11422 r11425 84 84 void CreateKMatrix(Mat Kff, Mat Kfs,Vec df); 85 85 void CreatePVector(Vec pf); 86 void CreateJacobianMatrix(Mat Jff);87 86 int GetNodeIndex(Node* node); 88 87 int Sid(); … … 141 140 #ifdef _HAVE_CONTROL_ 142 141 double DragCoefficientAbsGradient(bool process_units,int weight_index); 143 void GradientIndexing(int* indexing,int control_index);144 142 void Gradj(Vec gradient,int control_type); 145 143 void GradjBGradient(Vec gradient,int weight_index); … … 208 206 ElementVector* CreatePVectorDiagnosticMacAyeal(void); 209 207 ElementVector* CreatePVectorDiagnosticHutter(void); 210 ElementMatrix* CreateJacobianDiagnosticMacayeal(void);211 208 void GetSolutionFromInputsDiagnosticHoriz(Vec solution); 212 209 void GetSolutionFromInputsDiagnosticHutter(Vec solution); -
issm/trunk-jpl-damage/src/c/objects/KML/KML_File.cpp
r11422 r11425 24 24 KML_File::KML_File(){ 25 25 26 ;26 kmlobj =new DataSet; 27 27 28 28 } … … 31 31 KML_File::~KML_File(){ 32 32 33 ; 33 if (kmlobj) { 34 delete kmlobj; 35 kmlobj =NULL; 36 } 34 37 35 38 } … … 45 48 KML_Object::Echo(); 46 49 50 _printf_(flag," kmlobj: (size=%d)\n" ,kmlobj->Size()); 51 47 52 return; 48 53 } … … 61 66 void KML_File::DeepEcho(const char* indent){ 62 67 68 int i; 69 char indent2[81]; 63 70 bool flag=true; 64 71 … … 66 73 KML_Object::DeepEcho(indent); 67 74 75 /* loop over the kml objects for the file */ 76 77 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 78 79 strcat(indent2," "); 80 81 if (kmlobj->Size()) 82 for (i=0; i<kmlobj->Size(); i++) { 83 _printf_(flag,"%s kmlobj: -------- begin [%d] --------\n" ,indent,i); 84 ((KML_Object *)kmlobj->GetObjectByOffset(i))->DeepEcho(indent2); 85 _printf_(flag,"%s kmlobj: -------- end [%d] --------\n" ,indent,i); 86 } 87 else 88 _printf_(flag,"%s kmlobj: [empty]\n" ,indent); 89 68 90 return; 69 91 } … … 71 93 /*FUNCTION KML_File::Write {{{1*/ 72 94 void KML_File::Write(FILE* filout,const char* indent){ 95 96 int i; 97 char indent2[81]; 73 98 74 99 fprintf(filout,"%s<kml",indent); … … 78 103 79 104 KML_Object::Write(filout,indent); 105 106 /* loop over the kml objects for the file */ 107 108 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 109 110 strcat(indent2," "); 111 112 for (i=0; i<kmlobj->Size(); i++) 113 ((KML_Object *)kmlobj->GetObjectByOffset(i))->Write(filout,indent2); 80 114 81 115 fprintf(filout,"%s</kml>\n",indent); … … 111 145 _error_("KML_File::Read -- Unexpected field \"%s\".\n",kstri); 112 146 147 else if (!strncmp(kstri,"<Placemark",10)) { 148 kobj=(KML_Object*)new KML_Placemark(); 149 kobj->Read(fid,kstri); 150 kmlobj ->AddObject((Object*)kobj); 151 } 152 153 else if (!strncmp(kstri,"<Folder", 7)) { 154 kobj=(KML_Object*)new KML_Folder(); 155 kobj->Read(fid,kstri); 156 kmlobj ->AddObject((Object*)kobj); 157 } 158 159 else if (!strncmp(kstri,"<Document", 9)) { 160 kobj=(KML_Object*)new KML_Document(); 161 kobj->Read(fid,kstri); 162 kmlobj ->AddObject((Object*)kobj); 163 } 164 165 else if (!strncmp(kstri,"<GroundOverlay",14)) { 166 kobj=(KML_Object*)new KML_GroundOverlay(); 167 kobj->Read(fid,kstri); 168 kmlobj ->AddObject((Object*)kobj); 169 } 170 171 else if (!strncmp(kstri,"<LatLonBox",10)) { 172 kobj=(KML_Object*)new KML_LatLonBox(); 173 kobj->Read(fid,kstri); 174 kmlobj ->AddObject((Object*)kobj); 175 } 176 177 else if (!strncmp(kstri,"<Icon", 5)) { 178 kobj=(KML_Object*)new KML_Icon(); 179 kobj->Read(fid,kstri); 180 kmlobj ->AddObject((Object*)kobj); 181 } 182 183 else if (!strncmp(kstri,"<Point", 6)) { 184 kobj=(KML_Object*)new KML_Point(); 185 kobj->Read(fid,kstri); 186 kmlobj ->AddObject((Object*)kobj); 187 } 188 189 else if (!strncmp(kstri,"<LineString",11)) { 190 kobj=(KML_Object*)new KML_LineString(); 191 kobj->Read(fid,kstri); 192 kmlobj ->AddObject((Object*)kobj); 193 } 194 195 else if (!strncmp(kstri,"<LinearRing",11)) { 196 kobj=(KML_Object*)new KML_LinearRing(); 197 kobj->Read(fid,kstri); 198 kmlobj ->AddObject((Object*)kobj); 199 } 200 201 else if (!strncmp(kstri,"<Polygon", 8)) { 202 kobj=(KML_Object*)new KML_Polygon(); 203 kobj->Read(fid,kstri); 204 kmlobj ->AddObject((Object*)kobj); 205 } 206 207 else if (!strncmp(kstri,"<MultiGeometry",14)) { 208 kobj=(KML_Object*)new KML_MultiGeometry(); 209 kobj->Read(fid,kstri); 210 kmlobj ->AddObject((Object*)kobj); 211 } 212 213 // else if (!strncmp(kstri,"<IconStyle",10)) { 214 // kobj=(KML_Object*)new KML_IconStyle(); 215 // kobj->Read(fid,kstri); 216 // kmlobj ->AddObject((Object*)kobj); 217 // } 218 219 // else if (!strncmp(kstri,"<LabelStyle",11)) { 220 // kobj=(KML_Object*)new KML_LabelStyle(); 221 // kobj->Read(fid,kstri); 222 // kmlobj ->AddObject((Object*)kobj); 223 // } 224 225 else if (!strncmp(kstri,"<LineStyle",10)) { 226 kobj=(KML_Object*)new KML_LineStyle(); 227 kobj->Read(fid,kstri); 228 kmlobj ->AddObject((Object*)kobj); 229 } 230 231 else if (!strncmp(kstri,"<PolyStyle",10)) { 232 kobj=(KML_Object*)new KML_PolyStyle(); 233 kobj->Read(fid,kstri); 234 kmlobj ->AddObject((Object*)kobj); 235 } 236 237 // else if (!strncmp(kstri,"<BalloonStyle",13)) { 238 // kobj=(KML_Object*)new KML_BalloonStyle(); 239 // kobj->Read(fid,kstri); 240 // kmlobj ->AddObject((Object*)kobj); 241 // } 242 243 // else if (!strncmp(kstri,"<ListStyle",10)) { 244 // kobj=(KML_Object*)new KML_ListStyle(); 245 // kobj->Read(fid,kstri); 246 // kmlobj ->AddObject((Object*)kobj); 247 // } 248 113 249 else if (!strncmp(kstri,"<",1)) 114 250 KML_Object::Read(fid,kstri); -
issm/trunk-jpl-damage/src/c/objects/KML/KML_File.h
r11417 r11425 19 19 20 20 public: 21 22 DataSet* kmlobj; 21 23 22 24 /*KML_File constructors, destructors {{{1*/ -
issm/trunk-jpl-damage/src/c/objects/KML/KML_Object.cpp
r11422 r11425 26 26 attrib =new DataSet; 27 27 commnt =new DataSet; 28 kmlobj =new DataSet;29 28 30 29 } … … 41 40 commnt =NULL; 42 41 } 43 if (kmlobj) {44 delete kmlobj;45 kmlobj =NULL;46 }47 42 48 43 } … … 57 52 _printf_(flag," attrib: (size=%d)\n" ,attrib->Size()); 58 53 _printf_(flag," commnt: (size=%d)\n" ,commnt->Size()); 59 _printf_(flag," kmlobj: (size=%d)\n" ,kmlobj->Size());60 54 61 55 return; … … 76 70 77 71 int i; 78 char indent2[81];79 72 bool flag=true; 80 73 … … 97 90 _printf_(flag,"%s commnt: [empty]\n" ,indent); 98 91 99 /* loop over the unknown objects for the object */100 101 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char));102 strcat(indent2," ");103 104 if (kmlobj->Size())105 for (i=0; i<kmlobj->Size(); i++) {106 _printf_(flag,"%s kmlobj: -------- begin [%d] --------\n" ,indent,i);107 ((KML_Unknown *)kmlobj->GetObjectByOffset(i))->DeepEcho(indent2);108 _printf_(flag,"%s kmlobj: -------- end [%d] --------\n" ,indent,i);109 }110 else111 _printf_(flag,"%s kmlobj: [empty]\n" ,indent);112 113 92 return; 114 93 } … … 117 96 void KML_Object::Write(FILE* filout,const char* indent){ 118 97 119 int i;120 char indent2[81];121 122 98 // attributes always written in keyword line of derived classes 123 99 // comments always written after keyword line of derived classes 124 100 125 /* loop over the unknown objects for the object */ 126 127 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 128 strcat(indent2," "); 129 130 if (kmlobj->Size()) 131 for (i=0; i<kmlobj->Size(); i++) { 132 ((KML_Unknown *)kmlobj->GetObjectByOffset(i))->Write(filout,indent2); 133 } 101 ; 134 102 135 103 return; … … 138 106 /*FUNCTION KML_Object::Read {{{1*/ 139 107 void KML_Object::Read(FILE* fid,char* kstr){ 140 141 KML_Object* kobj;142 108 143 109 /* process field within opening and closing tags */ … … 150 116 _error_("KML_Object::Read -- Unexpected field \"%s\".\n",kstr); 151 117 152 else if (!strncmp(kstr,"<Placemark",10)) {153 kobj=(KML_Object*)new KML_Placemark();154 kobj->Read(fid,kstr);155 kmlobj ->AddObject((Object*)kobj);156 }157 158 else if (!strncmp(kstr,"<Folder", 7)) {159 kobj=(KML_Object*)new KML_Folder();160 kobj->Read(fid,kstr);161 kmlobj ->AddObject((Object*)kobj);162 }163 164 else if (!strncmp(kstr,"<Document", 9)) {165 kobj=(KML_Object*)new KML_Document();166 kobj->Read(fid,kstr);167 kmlobj ->AddObject((Object*)kobj);168 }169 170 else if (!strncmp(kstr,"<GroundOverlay",14)) {171 kobj=(KML_Object*)new KML_GroundOverlay();172 kobj->Read(fid,kstr);173 kmlobj ->AddObject((Object*)kobj);174 }175 176 else if (!strncmp(kstr,"<LatLonBox",10)) {177 kobj=(KML_Object*)new KML_LatLonBox();178 kobj->Read(fid,kstr);179 kmlobj ->AddObject((Object*)kobj);180 }181 182 else if (!strncmp(kstr,"<Icon", 5)) {183 kobj=(KML_Object*)new KML_Icon();184 kobj->Read(fid,kstr);185 kmlobj ->AddObject((Object*)kobj);186 }187 188 else if (!strncmp(kstr,"<Point", 6)) {189 kobj=(KML_Object*)new KML_Point();190 kobj->Read(fid,kstr);191 kmlobj ->AddObject((Object*)kobj);192 }193 194 else if (!strncmp(kstr,"<LineString",11)) {195 kobj=(KML_Object*)new KML_LineString();196 kobj->Read(fid,kstr);197 kmlobj ->AddObject((Object*)kobj);198 }199 200 else if (!strncmp(kstr,"<LinearRing",11)) {201 kobj=(KML_Object*)new KML_LinearRing();202 kobj->Read(fid,kstr);203 kmlobj ->AddObject((Object*)kobj);204 }205 206 else if (!strncmp(kstr,"<Polygon", 8)) {207 kobj=(KML_Object*)new KML_Polygon();208 kobj->Read(fid,kstr);209 kmlobj ->AddObject((Object*)kobj);210 }211 212 else if (!strncmp(kstr,"<MultiGeometry",14)) {213 kobj=(KML_Object*)new KML_MultiGeometry();214 kobj->Read(fid,kstr);215 kmlobj ->AddObject((Object*)kobj);216 }217 218 // else if (!strncmp(kstr,"<IconStyle",10)) {219 // kobj=(KML_Object*)new KML_IconStyle();220 // kobj->Read(fid,kstr);221 // kmlobj ->AddObject((Object*)kobj);222 // }223 224 // else if (!strncmp(kstr,"<LabelStyle",11)) {225 // kobj=(KML_Object*)new KML_LabelStyle();226 // kobj->Read(fid,kstr);227 // kmlobj ->AddObject((Object*)kobj);228 // }229 230 else if (!strncmp(kstr,"<LineStyle",10)) {231 kobj=(KML_Object*)new KML_LineStyle();232 kobj->Read(fid,kstr);233 kmlobj ->AddObject((Object*)kobj);234 }235 236 else if (!strncmp(kstr,"<PolyStyle",10)) {237 kobj=(KML_Object*)new KML_PolyStyle();238 kobj->Read(fid,kstr);239 kmlobj ->AddObject((Object*)kobj);240 }241 242 // else if (!strncmp(kstr,"<BalloonStyle",13)) {243 // kobj=(KML_Object*)new KML_BalloonStyle();244 // kobj->Read(fid,kstr);245 // kmlobj ->AddObject((Object*)kobj);246 // }247 248 // else if (!strncmp(kstr,"<ListStyle",10)) {249 // kobj=(KML_Object*)new KML_ListStyle();250 // kobj->Read(fid,kstr);251 // kmlobj ->AddObject((Object*)kobj);252 // }253 254 118 else if (!strncmp(kstr,"<",1)) { 255 119 _printf_(true,"KML_Object::Read -- Unrecognized opening tag %s.\n",kstr); 256 // KMLFileTagSkip(kstr, 257 // fid); 258 kobj=(KML_Object*)new KML_Unknown(); 259 kobj->Read(fid,kstr); 260 kmlobj ->AddObject((Object*)kobj); 120 KMLFileTagSkip(kstr, 121 fid); 261 122 } 262 123 -
issm/trunk-jpl-damage/src/c/objects/KML/KML_Object.h
r11419 r11425 21 21 DataSet* attrib; 22 22 DataSet* commnt; 23 DataSet* kmlobj;24 23 25 24 /*KML_Object constructors, destructors {{{1*/ -
issm/trunk-jpl-damage/src/c/objects/KML/KML_Unknown.cpp
r11422 r11425 44 44 bool flag=true; 45 45 46 _printf_(flag,"KML_Unknown 46 _printf_(flag,"KML_Unknown_%s:\n",name); 47 47 KML_Object::Echo(); 48 48 49 49 if (value ) 50 50 _printf_(flag," value: \"%s\"\n" ,value); 51 else52 _printf_(flag," value: [none]\n" );53 51 54 52 return; … … 68 66 void KML_Unknown::DeepEcho(const char* indent){ 69 67 70 char* valuei; 71 char* vtoken; 72 char nl[]={'\n','\0'}; 73 bool flag=true; 68 bool flag=true; 74 69 75 _printf_(flag,"%sKML_Unknown 70 _printf_(flag,"%sKML_Unknown_%s:\n",indent,name); 76 71 KML_Object::DeepEcho(indent); 77 72 78 if (value ) { 79 valuei=(char *) xmalloc((strlen(value)+1)*sizeof(char)); 80 memcpy(valuei,value,(strlen(value)+1)*sizeof(char)); 81 82 vtoken=strtok(valuei,nl); 83 _printf_(flag,"%s value: \"%s" ,indent,vtoken); 84 85 while (vtoken=strtok(NULL,nl)) 86 _printf_(flag,"\n%s %s" ,indent,vtoken); 87 _printf_(flag,"\"\n"); 88 89 xfree((void**)&valuei); 90 } 91 else 92 _printf_(flag,"%s value: [none]\n" ,indent); 73 if (value ) 74 _printf_(flag,"%s value: \"%s\"\n" ,indent,value); 93 75 94 76 return; … … 98 80 void KML_Unknown::Write(FILE* filout,const char* indent){ 99 81 100 char* valuei;101 char* vtoken;102 char nl[]={'\n','\0'};103 104 82 fprintf(filout,"%s<%s",indent,name); 105 83 WriteAttrib(filout," "); … … 107 85 WriteCommnt(filout,indent); 108 86 109 if (value ) { 110 valuei=(char *) xmalloc((strlen(value)+1)*sizeof(char)); 111 memcpy(valuei,value,(strlen(value)+1)*sizeof(char)); 112 113 vtoken=strtok(valuei,nl); 114 fprintf(filout,"%s %s\n",indent,vtoken); 115 116 while (vtoken=strtok(NULL,nl)) 117 fprintf(filout,"%s %s\n",indent,vtoken); 87 KML_Object::Write(filout,indent); 118 88 119 xfree((void**)&valuei); 120 } 121 122 KML_Object::Write(filout,indent); 89 if (value ) 90 fprintf(filout,"%s %s\n",indent,value); 123 91 124 92 fprintf(filout,"%s</%s>\n",indent,name); … … 133 101 int ncom=0; 134 102 char** pcom=NULL; 135 char nl[]={'\n','\0'};136 137 /* get object name */138 139 /*name=KMLFileTagName(NULL,140 kstr);*/141 // _printf_(true,"KML_Unknown::Read -- opening name=%s.\n",name);142 103 143 104 /* get object attributes and check for solo tag */ … … 151 112 while (kstri=KMLFileToken(fid, 152 113 &ncom,&pcom)) { 153 // _printf_(true,"KML_Unknown::Read -- kstri=%s.\n",kstri);154 114 if (!strncmp(&kstri[0],"</", 2) && 155 115 !strncmp(&kstri[2],name,strlen(name))) { 156 // _printf_(true,"KML_Unknown::Read -- closing name=%s.\n",name);157 116 xfree((void**)&kstri); 158 117 break; … … 161 120 _error_("KML_Unknown::Read -- Unexpected closing tag %s.\n",kstri); 162 121 163 else if (strncmp(kstri,"<",1)) { 164 if (value) { 165 value=(char *) xrealloc(value,(strlen(value)+1+strlen(kstri)+1)*sizeof(char)); 166 strcat(value,nl); 167 strcat(value,kstri); 168 } 169 else { 170 value=(char *) xmalloc((strlen(kstri)+1)*sizeof(char)); 171 memcpy(value,kstri,(strlen(kstri)+1)*sizeof(char)); 172 } 173 } 122 else if (strncmp(kstri,"<",1)) 123 KMLFileTokenParse( value ,NULL,0, 124 NULL, 125 fid); 174 126 175 127 else if (!strncmp(kstri,"<",1)) -
issm/trunk-jpl-damage/src/c/objects/Loads/Icefront.cpp
r11417 r11425 361 361 } 362 362 /*}}}*/ 363 /*FUNCTION Icefront::CreateJacobianMatrix{{{1*/364 void Icefront::CreateJacobianMatrix(Mat Jff){365 this->CreateKMatrix(Jff,NULL);366 }367 /*}}}1*/368 363 /*FUNCTION Icefront::PenaltyCreateKMatrix {{{1*/ 369 364 void Icefront::PenaltyCreateKMatrix(Mat Kff, Mat Kfs, double kmax){ … … 378 373 } 379 374 /*}}}*/ 380 /*FUNCTION Icefront::PenaltyCreateJacobianMatrix{{{1*/381 void Icefront::PenaltyCreateJacobianMatrix(Mat Jff,double kmax){382 this->PenaltyCreateKMatrix(Jff,NULL,kmax);383 }384 /*}}}1*/385 375 /*FUNCTION Icefront::InAnalysis{{{1*/ 386 376 bool Icefront::InAnalysis(int in_analysis_type){ -
issm/trunk-jpl-damage/src/c/objects/Loads/Icefront.h
r11419 r11425 76 76 void CreateKMatrix(Mat Kff, Mat Kfs); 77 77 void CreatePVector(Vec pf); 78 void CreateJacobianMatrix(Mat Jff);79 78 void PenaltyCreateKMatrix(Mat Kff, Mat kfs, double kmax); 80 79 void PenaltyCreatePVector(Vec pf, double kmax); 81 void PenaltyCreateJacobianMatrix(Mat Jff,double kmax);82 80 bool InAnalysis(int analysis_type); 83 81 /*}}}*/ -
issm/trunk-jpl-damage/src/c/objects/Loads/Penpair.cpp
r11419 r11425 212 212 return; 213 213 214 }215 /*}}}1*/216 /*FUNCTION Penpair::CreateJacobianMatrix{{{1*/217 void Penpair::CreateJacobianMatrix(Mat Jff){218 this->CreateKMatrix(Jff,NULL);219 214 } 220 215 /*}}}1*/ -
issm/trunk-jpl-damage/src/c/objects/Loads/Penpair.h
r11422 r11425 64 64 void CreateKMatrix(Mat Kff, Mat Kfs); 65 65 void CreatePVector(Vec pf); 66 void CreateJacobianMatrix(Mat Jff); 67 void PenaltyCreateKMatrix(Mat Kff, Mat Kfs,double kmax); 66 void PenaltyCreateKMatrix(Mat Kff, Mat kfs, double kmax); 68 67 void PenaltyCreatePVector(Vec pf, double kmax); 69 void PenaltyCreateJacobianMatrix(Mat Jff,double kmax);70 68 bool InAnalysis(int analysis_type); 71 69 /*}}}*/ -
issm/trunk-jpl-damage/src/c/objects/Materials/Matice.cpp
r11422 r11425 606 606 /*Return: */ 607 607 *pviscosity_complement=viscosity_complement; 608 }609 /*}}}*/610 /*FUNCTION Matice::GetViscosityDerivativeEpsSquare{{{1*/611 void Matice::GetViscosityDerivativeEpsSquare(double* pmu_prime, double* epsilon){612 613 /*output: */614 double mu_prime;615 double mu,n,eff2;616 617 /*input strain rate: */618 double exx,eyy,exy,exz;619 620 /*Get visocisty and n*/621 GetViscosity2d(&mu,epsilon);622 n=GetN();623 624 if((epsilon[0]==0) && (epsilon[1]==0) && (epsilon[2]==0)){625 mu_prime=0.5*pow((double)10,(double)14);626 }627 else{628 /*Retrive strain rate components: */629 exx=epsilon[0];630 eyy=epsilon[1];631 exy=epsilon[2];632 eff2 = exx*exx + eyy*eyy + exx*eyy + exy*exy ;633 634 mu_prime=(1-n)/(2*n) * mu/eff2;635 }636 637 /*Assign output pointers:*/638 *pmu_prime=mu_prime;639 608 } 640 609 /*}}}*/ -
issm/trunk-jpl-damage/src/c/objects/Materials/Matice.h
r11422 r11425 69 69 void GetViscosityComplement(double* pviscosity_complement, double* pepsilon); 70 70 void GetViscosityZComplement(double* pviscosity_complement, double* pepsilon); 71 void GetViscosityDerivativeEpsSquare(double* pmu_prime, double* pepsilon);72 71 double GetB(); 73 72 double GetBbar(); -
issm/trunk-jpl-damage/src/c/objects/Numerics/ElementMatrix.cpp
r11422 r11425 251 251 double* localvalues=NULL; 252 252 253 /*If Kfs is not provided, call the other function*/254 if(!Kfs){255 this->AddToGlobal(Kff);256 return;257 }258 259 253 /*In debugging mode, check consistency (no NaN, and values not too big)*/ 260 254 this->CheckConsistency(); … … 300 294 } 301 295 /*}}}*/ 302 /*FUNCTION ElementMatrix::AddToGlobal(Mat Jff){{{1*/303 void ElementMatrix::AddToGlobal(Mat Jff){304 305 int i,j;306 double* localvalues=NULL;307 308 /*Check that Jff is not NULL*/309 _assert_(Jff);310 311 /*In debugging mode, check consistency (no NaN, and values not too big)*/312 this->CheckConsistency();313 314 if(this->dofsymmetrical){315 /*only use row dofs to add values into global matrices: */316 317 if(this->row_fsize){318 /*first, retrieve values that are in the f-set from the g-set values matrix: */319 localvalues=(double*)xmalloc(this->row_fsize*this->row_fsize*sizeof(double));320 for(i=0;i<this->row_fsize;i++){321 for(j=0;j<this->row_fsize;j++){322 *(localvalues+this->row_fsize*i+j)=*(this->values+this->ncols*this->row_flocaldoflist[i]+this->row_flocaldoflist[j]);323 }324 }325 /*add local values into global matrix, using the fglobaldoflist: */326 MatSetValues(Jff,this->row_fsize,this->row_fglobaldoflist,this->row_fsize,this->row_fglobaldoflist,(const double*)localvalues,ADD_VALUES);327 328 /*Free ressources:*/329 xfree((void**)&localvalues);330 }331 332 }333 else{334 _error_(" non dofsymmetrical matrix AddToGlobal routine not support yet!");335 }336 337 }338 /*}}}*/339 296 /*FUNCTION ElementMatrix::CheckConsistency{{{1*/ 340 297 void ElementMatrix::CheckConsistency(void){ -
issm/trunk-jpl-damage/src/c/objects/Numerics/ElementMatrix.h
r11422 r11425 59 59 /*ElementMatrix specific routines {{{1*/ 60 60 void AddToGlobal(Mat Kff, Mat Kfs); 61 void AddToGlobal(Mat Jff);62 61 void Echo(void); 63 62 void CheckConsistency(void); -
issm/trunk-jpl-damage/src/c/objects/Params/BoolParam.h
r11417 r11425 57 57 void GetParameterValue(double* pdouble){_error_("Bool param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));} 58 58 void GetParameterValue(char** pstring){_error_("Bool param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));} 59 void GetParameterValue(char*** pstringarray,int* pM){_error_("Bool param of enum %i (%s) cannot return a string array ",enum_type,EnumToStringx(enum_type));}59 void GetParameterValue(char*** pstringarray,int* pM){_error_("Bool param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));} 60 60 void GetParameterValue(double** pdoublearray,int* pM){_error_("Bool param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} 61 61 void GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("Bool param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} -
issm/trunk-jpl-damage/src/c/objects/Params/DoubleMatArrayParam.h
r11417 r11425 60 60 void GetParameterValue(double* pdouble){_error_("DoubleMatArray param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));} 61 61 void GetParameterValue(char** pstring){_error_("DoubleMatArray param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));} 62 void GetParameterValue(char*** pstringarray,int* pM){_error_("DoubleMatArray param of enum %i (%s) cannot return a string array ",enum_type,EnumToStringx(enum_type));}62 void GetParameterValue(char*** pstringarray,int* pM){_error_("DoubleMatArray param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));} 63 63 void GetParameterValue(double** pdoublearray,int* pM){_error_("DoubleMatArray param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} 64 64 void GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("DoubleMatArray param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} -
issm/trunk-jpl-damage/src/c/objects/Params/DoubleMatParam.h
r11417 r11425 59 59 void GetParameterValue(double* pdouble){_error_("DoubleMat param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));} 60 60 void GetParameterValue(char** pstring){_error_("DoubleMat param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));} 61 void GetParameterValue(char*** pstringarray,int* pM){_error_("DoubleMat param of enum %i (%s) cannot return a string array ",enum_type,EnumToStringx(enum_type));}61 void GetParameterValue(char*** pstringarray,int* pM){_error_("DoubleMat param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));} 62 62 void GetParameterValue(double** pdoublearray,int* pM){_error_("DoubleMat param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} 63 63 void GetParameterValue(double** pdoublearray,int* pM,int* pN); -
issm/trunk-jpl-damage/src/c/objects/Params/DoubleParam.h
r11417 r11425 58 58 void GetParameterValue(double* pdouble){*pdouble=value;} 59 59 void GetParameterValue(char** pstring){_error_("Double param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));} 60 void GetParameterValue(char*** pstringarray,int* pM){_error_("Double param of enum %i (%s) cannot return a string array ",enum_type,EnumToStringx(enum_type));}60 void GetParameterValue(char*** pstringarray,int* pM){_error_("Double param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));} 61 61 void GetParameterValue(double** pdoublearray,int* pM); 62 62 void GetParameterValue(double** pdoublearray,int* pM, int* pN); -
issm/trunk-jpl-damage/src/c/objects/Params/DoubleVecParam.h
r11417 r11425 55 55 void GetParameterValue(int* pinteger){_error_("DoubleVec param of enum %i (%s) cannot return an integer",enum_type,EnumToStringx(enum_type));} 56 56 void GetParameterValue(int** pintarray,int* pM); 57 void GetParameterValue(int** pintarray,int* pM,int* pN){_error_("DoubleVec param of enum %i (%s) cannot return a n array of integers",enum_type,EnumToStringx(enum_type));};57 void GetParameterValue(int** pintarray,int* pM,int* pN){_error_("DoubleVec param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));}; 58 58 void GetParameterValue(double* pdouble){_error_("DoubleVec param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));} 59 59 void GetParameterValue(char** pstring){_error_("DoubleVec param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));} 60 void GetParameterValue(char*** pstringarray,int* pM){_error_("DoubleVec param of enum %i (%s) cannot return a string array ",enum_type,EnumToStringx(enum_type));}60 void GetParameterValue(char*** pstringarray,int* pM){_error_("DoubleVec param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));} 61 61 void GetParameterValue(double** pdoublearray,int* pM); 62 62 void GetParameterValue(double** pdoublearray,int* pM, int* pN); -
issm/trunk-jpl-damage/src/c/objects/Params/FileParam.h
r11417 r11425 57 57 void GetParameterValue(double* pdouble){_error_("FileParam of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));} 58 58 void GetParameterValue(char** pstring){_error_("FileParam of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));} 59 void GetParameterValue(char*** pstringarray,int* pM){_error_("FileParam of enum %i (%s) cannot return a string array ",enum_type,EnumToStringx(enum_type));}59 void GetParameterValue(char*** pstringarray,int* pM){_error_("FileParam of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));} 60 60 void GetParameterValue(double** pdoublearray,int* pM){_error_("FileParam of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} 61 61 void GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("FileParam of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} -
issm/trunk-jpl-damage/src/c/objects/Params/IntMatParam.h
r11417 r11425 59 59 void GetParameterValue(double* pdouble){_error_("IntMat param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));} 60 60 void GetParameterValue(char** pstring){_error_("IntMat param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));} 61 void GetParameterValue(char*** pstringarray,int* pM){_error_("IntMat param of enum %i (%s) cannot return a string array ",enum_type,EnumToStringx(enum_type));}61 void GetParameterValue(char*** pstringarray,int* pM){_error_("IntMat param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));} 62 62 void GetParameterValue(double** pdoublearray,int* pM){_error_("IntMat param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} 63 63 void GetParameterValue(double** pdoublearray,int* pM,int* pN){_error_("IntMat param of enum %i (%s) cannot return a matrix array",enum_type,EnumToStringx(enum_type));}; -
issm/trunk-jpl-damage/src/c/objects/Params/IntParam.h
r11417 r11425 58 58 void GetParameterValue(double* pdouble){_error_("Int param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));} 59 59 void GetParameterValue(char** pstring){_error_("Int param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));} 60 void GetParameterValue(char*** pstringarray,int* pM){_error_("Int param of enum %i (%s) cannot return a string array ",enum_type,EnumToStringx(enum_type));}60 void GetParameterValue(char*** pstringarray,int* pM){_error_("Int param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));} 61 61 void GetParameterValue(double** pdoublearray,int* pM){_error_("Int param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} 62 62 void GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("Int param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} -
issm/trunk-jpl-damage/src/c/objects/Params/PetscMatParam.h
r11417 r11425 58 58 void GetParameterValue(double* pdouble){_error_("PetscMat param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));} 59 59 void GetParameterValue(char** pstring){_error_("PetscMat param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));} 60 void GetParameterValue(char*** pstringarray,int* pM){_error_("PetscMat param of enum %i (%s) cannot return a string array ",enum_type,EnumToStringx(enum_type));}60 void GetParameterValue(char*** pstringarray,int* pM){_error_("PetscMat param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));} 61 61 void GetParameterValue(double** pdoublearray,int* pM){_error_("PetscMat param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} 62 62 void GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("PetscMat param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} -
issm/trunk-jpl-damage/src/c/objects/Params/PetscVecParam.h
r11417 r11425 58 58 void GetParameterValue(double* pdouble){_error_("PetscVec param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));} 59 59 void GetParameterValue(char** pstring){_error_("PetscVec param of enum %i (%s) cannot return a string",enum_type,EnumToStringx(enum_type));} 60 void GetParameterValue(char*** pstringarray,int* pM){_error_("PetscVec param of enum %i (%s) cannot return a string array ",enum_type,EnumToStringx(enum_type));}60 void GetParameterValue(char*** pstringarray,int* pM){_error_("PetscVec param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));} 61 61 void GetParameterValue(double** pdoublearray,int* pM){_error_("PetscVec param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} 62 62 void GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("PetscVec param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} -
issm/trunk-jpl-damage/src/c/objects/Params/StringParam.h
r11417 r11425 58 58 void GetParameterValue(double* pdouble){_error_("String param of enum %i (%s) cannot return a double",enum_type,EnumToStringx(enum_type));} 59 59 void GetParameterValue(char** pstring); 60 void GetParameterValue(char*** pstringarray,int* pM){_error_("String param of enum %i (%s) cannot return a string array ",enum_type,EnumToStringx(enum_type));}60 void GetParameterValue(char*** pstringarray,int* pM){_error_("String param of enum %i (%s) cannot return a string arrayl",enum_type,EnumToStringx(enum_type));} 61 61 void GetParameterValue(double** pdoublearray,int* pM){_error_("String param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} 62 62 void GetParameterValue(double** pdoublearray,int* pM, int* pN){_error_("String param of enum %i (%s) cannot return a double array",enum_type,EnumToStringx(enum_type));} -
issm/trunk-jpl-damage/src/c/objects/Patch.cpp
r11417 r11425 12 12 #include <stdio.h> 13 13 #include <string.h> 14 #include <math.h>15 14 #include "./objects.h" 16 15 #include "../Container/Container.h" -
issm/trunk-jpl-damage/src/c/shared/Numerics/Synchronize.sh
r11417 r11425 165 165 166 166 verbositylevel = (int)level; 167 return verbositylevel;168 167 169 168 #else -
issm/trunk-jpl-damage/src/c/shared/Numerics/Verbosity.cpp
r11417 r11425 64 64 65 65 verbositylevel = (int)level; 66 return verbositylevel;67 66 68 67 #else -
issm/trunk-jpl-damage/src/c/shared/TriMesh/TriMeshUtils.cpp
r11417 r11425 124 124 ******************************************************************************************************************************/ 125 125 126 voidRiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel, double* index, int nsegs,double* segments){126 int RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel, double* index, int nsegs,double* segments){ 127 127 128 128 int i,counter; … … 379 379 IsInPoly 380 380 ******************************************************************************************************************************/ 381 //voidIsInPoly(double* in,double* xc,double* yc,int numnodes,double* x,double* y,int nods){382 // 383 //int i;384 //double x0,y0;385 // 386 ///*Go through all nodes of the mesh:*/387 //for (i=0;i<nods;i++){388 //if (in[i]){389 ///*this node already is inside one of the contours, continue*/390 //continue;391 //}392 ///*pick up node: */393 //x0=x[i];394 //y0=y[i];395 //if (pnpoly(numnodes,xc,yc,x0,y0)){396 //in[i]=1;397 //}398 //}399 //}381 int IsInPoly(double* in,double* xc,double* yc,int numnodes,double* x,double* y,int nods){ 382 383 int i; 384 double x0,y0; 385 386 /*Go through all nodes of the mesh:*/ 387 for (i=0;i<nods;i++){ 388 if (in[i]){ 389 /*this node already is inside one of the contours, continue*/ 390 continue; 391 } 392 /*pick up node: */ 393 x0=x[i]; 394 y0=y[i]; 395 if (pnpoly(numnodes,xc,yc,x0,y0)){ 396 in[i]=1; 397 } 398 } 399 } 400 400 401 401 /****************************************************************************************************************************** -
issm/trunk-jpl-damage/src/c/shared/TriMesh/trimesh.h
r11417 r11425 26 26 int IsNeighbor(int el1,int el2,double* index); 27 27 int IsOnRift(int el,int nriftsegs,int* riftsegments); 28 voidRiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel, double* index, int nsegs,double* segments);28 int RiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel, double* index, int nsegs,double* segments); 29 29 int DetermineGridElementListOnOneSideOfRift(int* pNumGridElementListOnOneSideOfRift, int** pGridElementListOnOneSideOfRift, int segmentnumber, int nriftsegs, int* riftsegments, int node,double* index,int nel); 30 30 int UpdateSegments(double** psegments,double** psegmentmarkerlist, int* pnsegs, double* index, double* x,double* y,int* riftsegments,int nriftsegs); -
issm/trunk-jpl-damage/src/c/solutions/AnalysisConfiguration.cpp
r11417 r11425 95 95 96 96 case TransientSolutionEnum: 97 numanalyses= 9;97 numanalyses=8; 98 98 analyses=(int*)xmalloc(numanalyses*sizeof(int)); 99 99 analyses[0]=DiagnosticHorizAnalysisEnum; … … 104 104 analyses[5]=ThermalAnalysisEnum; 105 105 analyses[6]=MeltingAnalysisEnum; 106 analyses[7]=EnthalpyAnalysisEnum; 107 analyses[8]=PrognosticAnalysisEnum; 106 analyses[7]=PrognosticAnalysisEnum; 108 107 break; 109 108 -
issm/trunk-jpl-damage/src/c/solutions/controltao_core.cpp
r11419 r11425 31 31 Vec XL = NULL; 32 32 Vec XU = NULL; 33 int ierr;34 int num_controls,solution_type;35 int nsteps,maxiter;36 AppCtx user;37 TaoSolver tao;38 double *dummy = NULL;39 int *control_list = NULL;40 Vec X = NULL;41 Vec XL = NULL;42 Vec XU = NULL;43 33 44 34 /*Initialize TAO*/ … … 47 37 ierr = TaoInitialize(&argc,&args,(char*)0,""); 48 38 if(ierr) _error_("Could not initialize Tao"); 49 50 /*Recover some parameters*/51 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);52 femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum);53 femmodel->parameters->FindParam(&control_list,NULL,InversionControlParametersEnum);54 femmodel->parameters->FindParam(&nsteps,InversionNstepsEnum);55 femmodel->parameters->FindParam(&dummy,NULL,NULL,InversionMaxiterPerStepEnum);56 maxiter=nsteps*(int)dummy[0]; xfree((void**)&dummy);57 39 58 40 /*Initialize TAO*/ … … 63 45 64 46 /*Prepare all TAO parameters*/ 65 TaoSetMaximumFunctionEvaluations(tao, maxiter);66 TaoSetMaximumIterations(tao, nsteps);47 TaoSetMaximumFunctionEvaluations(tao,50); 48 TaoSetMaximumIterations(tao,10); 67 49 TaoSetTolerances(tao,10e-28,0.0000,0.0000,0.0000,10e-28); 68 50 … … 84 66 InputUpdateFromVectorx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,X,FrictionCoefficientEnum,VertexEnum); 85 67 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,FrictionCoefficientEnum); 86 87 /*Finalize*/88 _printf_(VerboseControl(),"%s\n"," preparing final solution");89 femmodel->parameters->SetParam(false,InversionIscontrolEnum); //needed to turn control result output in solutioncore90 void (*solutioncore)(FemModel*)=NULL;91 CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type);92 solutioncore(femmodel);93 68 94 69 /*Clean up and return*/ … … 115 90 VecFree(&gradient); 116 91 CostFunctionx(fcn,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 117 118 /*Compute gradient*/119 Gradjx(&gradient,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);120 VecCopy(gradient,G); VecFree(&gradient);121 VecScale(G,-1.);122 123 /*Clean-up and return*/124 xfree((void**)&cost_functions);125 xfree((void**)&cost_functionsd);126 92 return 0; 127 93 } -
issm/trunk-jpl-damage/src/c/solutions/transient_core.cpp
r11417 r11425 24 24 /*parameters: */ 25 25 double finaltime,dt,yts; 26 bool control_analysis,isdiagnostic,isprognostic,isthermal,isgroundingline ,isenthalpy;26 bool control_analysis,isdiagnostic,isprognostic,isthermal,isgroundingline; 27 27 bool dakota_analysis=false; 28 28 bool time_adapt=false; … … 51 51 femmodel->parameters->FindParam(&isthermal,TransientIsthermalEnum); 52 52 femmodel->parameters->FindParam(&isgroundingline,TransientIsgroundinglineEnum); 53 femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);54 53 if(isgroundingline) femmodel->parameters->FindParam(&groundingline_migration,GroundinglineMigrationEnum); 55 54 femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum); … … 92 91 _printf_(VerboseSolution()," computing temperatures:\n"); 93 92 #ifdef _HAVE_THERMAL_ 94 if(isenthalpy==0){ 95 thermal_core_step(femmodel,step,time); 96 } 97 else{ 98 enthalpy_core_step(femmodel,step,time); 99 } 93 thermal_core_step(femmodel,step,time); 100 94 #else 101 95 _error_("ISSM was not compiled with thermal capabilities. Exiting"); … … 141 135 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BedEnum,step,time); 142 136 if(dim==3 && isthermal) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum,step,time); 143 if(isenthalpy) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,WaterfractionEnum,step,time); 144 if(isenthalpy) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,EnthalpyEnum,step,time); 145 if(!isenthalpy) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalforcingsMeltingRateEnum,step,time); 137 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalforcingsMeltingRateEnum,step,time); 146 138 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsMassBalanceEnum,step,time); 147 139 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,MaskElementonfloatingiceEnum,step,time); -
issm/trunk-jpl-damage/src/c/solvers/solver_nonlinear.cpp
r11417 r11425 85 85 if(count>=max_nonlinear_iterations){ 86 86 _printf_(true," maximum number of iterations (%i) exceeded\n",max_nonlinear_iterations); 87 converged=true;88 InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,converged,ConvergedEnum);89 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug);90 87 break; 91 88 } -
issm/trunk-jpl-damage/src/m/classes/clusters/castor.m
r11417 r11425 10 10 % {{{1 11 11 name='castor' 12 login=' username';13 np =128; 12 login='larour'; 13 np =128; %number of processors 14 14 port=0; 15 15 queue='shortc'; 16 16 time=180; 17 codepath='/workp/edw/ issm-2.0/bin'18 executionpath='/workp/edw/ Testing/Execution'17 codepath='/workp/edw/larour/issm-2.0/bin' 18 executionpath='/workp/edw/larour/Testing/Execution' 19 19 %}}} 20 20 end -
issm/trunk-jpl-damage/src/m/classes/clusters/cosmos.m
r11417 r11425 10 10 % {{{1 11 11 name='cosmos' 12 login=' username';12 login='larour'; 13 13 np=128; 14 14 port=0; 15 15 queue='shortq'; 16 16 time=3*60; 17 codepath='/work00/edw/ issm-2.0/bin';18 executionpath='/work00/edw/ Execution';17 codepath='/work00/edw/larour/issm-2.0/bin'; 18 executionpath='/work00/edw/larour/Execution'; 19 19 %}}} 20 20 end -
issm/trunk-jpl-damage/src/m/classes/clusters/gemini.m
r11417 r11425 10 10 % {{{1 11 11 name='gemini' 12 login=' username';12 login='larour'; 13 13 np=50; 14 14 port=0; 15 15 queue='debug'; 16 16 time=60; 17 codepath='/workg/edw/ issm-2.0/bin'18 executionpath='/workg/edw/ Testing/Execution'17 codepath='/workg/edw/larour/issm-2.0/bin' 18 executionpath='/workg/edw/larour/Testing/Execution' 19 19 %}}} 20 20 end -
issm/trunk-jpl-damage/src/m/classes/clusters/pollux.m
r11417 r11425 10 10 % {{{1 11 11 name='pollux' 12 login=' username';12 login='larour'; 13 13 np=128; 14 14 port=0; 15 15 queue='shortp'; 16 16 time=180; 17 codepath='/workc/edw/ issm-2.0/bin'18 executionpath='/workc/edw/ Testing/Execution'17 codepath='/workc/edw/larour/issm-2.0/bin' 18 executionpath='/workc/edw/larour/Testing/Execution' 19 19 %}}} 20 20 end -
issm/trunk-jpl-damage/src/m/classes/initialization.m
r11417 r11425 62 62 checkfield(md,'initialization.pressure','NaN',1,'size',[md.mesh.numberofvertices 1]); 63 63 end 64 if (ismember(EnthalpyAnalysisEnum,analyses) & md.thermal.isenthalpy),64 if ismember(EnthalpyAnalysisEnum,analyses), 65 65 checkfield(md,'initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices 1]); 66 66 end -
issm/trunk-jpl-damage/src/m/classes/solver.m
r11417 r11425 6 6 classdef solver 7 7 properties (SetAccess=public) 8 options= cell(0,0);8 options={NoneAnalysisEnum,mumpsoptions}; 9 9 end 10 10 methods … … 26 26 function obj = setdefaultparameters(obj) % {{{ 27 27 28 %MUMPS is the default solver29 obj.options={'NoneAnalysis',mumpsoptions};30 31 28 end % }}} 32 function obj = addoptions(obj,analysis,solveroptions) % {{{1 33 34 %Convert analysis from enum to string 35 analysis=EnumToString(analysis); 36 29 function obj=addoptions(obj,analysis,solveroptions) % {{{1 37 30 %first, find out if analysis has already been supplied 38 31 found=false; 39 32 for i=1:size(obj.options,1), 40 33 inanalysis=obj.options{i,1}; 41 if strcmp(inanalysis,analysis),34 if inanalysis==analysis, 42 35 found=true; 43 obj.options{i,1} =analysis;44 obj.options{i,2} =solveroptions;36 obj.options{i,1}=analysis; 37 obj.options{i,2}=solveroptions; 45 38 break; 46 39 end 47 40 end 48 49 41 if ~found, 50 obj.options{end+1,1}= 51 obj.options{end,2} =solveroptions;42 obj.options{end+1,1}=analysis; 43 obj.options{end,2}=solveroptions; 52 44 end 53 45 end 54 46 %}}} 55 47 function checkconsistency(obj,md,solution,analyses) % {{{ 56 for i=1:size(obj.options,1), 57 if ~ischar(obj.options{i,1}), 58 checkmessage('solver is not well formatted: Analyses are not strings'); 59 end 60 end 48 61 49 end % }}} 62 50 function PetscFile(solver,filename) % {{{ … … 82 70 83 71 %first write analysis: 84 fprintf(fid,'\n+%s\n', analysis); %append a + to recognize it's an analysis enum72 fprintf(fid,'\n+%s\n',EnumToString(analysis)); %append a + to recognize it's an analysis enum 85 73 86 74 %now, write options … … 138 126 end 139 127 140 disp(sprintf(' %s -> ''%s''', analysis,string));128 disp(sprintf(' %s -> ''%s''',EnumToString(analysis),string)); 141 129 end 142 130 end -
issm/trunk-jpl-damage/src/m/classes/thermal.m
r11417 r11425 12 12 penalty_lock = 0; 13 13 penalty_factor = 0; 14 isenthalpy = 0;15 14 end 16 15 methods … … 43 42 %factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor 44 43 obj.penalty_factor=3; 45 46 %Should we use cold ice (default) or enthalpy formulation47 obj.isenthalpy=0;48 44 end % }}} 49 45 function checkconsistency(obj,md,solution,analyses) % {{{ … … 54 50 checkfield(md,'thermal.stabilization','numel',1,'values',[0 1 2]); 55 51 checkfield(md,'thermal.spctemperature','forcing',1); 56 if (ismember(EnthalpyAnalysisEnum,analyses) & md.thermal.isenthalpy),52 if ismember(EnthalpyAnalysisEnum,analyses), 57 53 checkfield(md,'thermal.spctemperature','<',md.materials.meltingpoint-md.materials.beta*md.materials.rho_ice*md.constants.g*md.geometry.thickness,'message','spctemperature should be below the adjusted melting point'); 58 checkfield(md,'thermal.isenthalpy','numel',1,'values',[0 1]);59 54 end 60 55 end % }}} … … 67 62 fielddisplay(obj,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)'); 68 63 fielddisplay(obj,'penalty_threshold','threshold to declare convergence of thermal solution (default is 0)'); 69 fielddisplay(obj,'isenthalpy','use an enthalpy formulation to include temperate ice (default is 0)');70 64 71 65 end % }}} … … 77 71 WriteData(fid,'object',obj,'fieldname','penalty_lock','format','Integer'); 78 72 WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double'); 79 WriteData(fid,'object',obj,'fieldname','isenthalpy','format','Boolean');80 73 end % }}} 81 74 end -
issm/trunk-jpl-damage/src/m/model/collapse.m
r11417 r11425 29 29 if ~isnan(md.inversion.vy_obs), md.inversion.vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers); end; 30 30 if ~isnan(md.inversion.vel_obs), md.inversion.vel_obs=project2d(md,md.inversion.vel_obs,md.mesh.numberoflayers); end; 31 if ~isnan(md.inversion.cost_functions_coefficients), md.inversion.cost_functions_coefficients=project2d(md,md.inversion.cost_functions_coefficients,md.mesh.numberoflayers); end;32 if ~isnan(md.inversion.min_parameters), md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers); end;33 if ~isnan(md.inversion.max_parameters), md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers); end;34 31 if ~isnan(md.surfaceforcings.mass_balance), 35 32 md.surfaceforcings.mass_balance=project2d(md,md.surfaceforcings.mass_balance,md.mesh.numberoflayers); … … 52 49 if ~isnan(md.flowequation.element_equation) 53 50 md.flowequation.element_equation=project2d(md,md.flowequation.element_equation,1); 54 md.flowequation.vertex_equation=project2d(md,md.flowequation.vertex_equation,1);55 md.flowequation.bordermacayeal=project2d(md,md.flowequation.bordermacayeal,1);56 md.flowequation.borderpattyn=project2d(md,md.flowequation.borderpattyn,1);57 md.flowequation.borderstokes=project2d(md,md.flowequation.borderstokes,1);58 51 end 59 52 … … 62 55 md.diagnostic.spcvy=project2d(md,md.diagnostic.spcvy,md.mesh.numberoflayers); 63 56 md.diagnostic.spcvz=project2d(md,md.diagnostic.spcvz,md.mesh.numberoflayers); 64 md.diagnostic.referential=project2d(md,md.diagnostic.referential,md.mesh.numberoflayers);65 57 md.prognostic.spcthickness=project2d(md,md.prognostic.spcthickness,md.mesh.numberoflayers); 66 58 md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers); … … 68 60 %Extrusion of Neumann BC 69 61 if ~isnan(md.diagnostic.icefront), 70 numberofneumann2d=size(md.diagnostic.icefront,1)/ (md.mesh.numberoflayers-1);62 numberofneumann2d=size(md.diagnostic.icefront,1)/md.mesh.numberoflayers; 71 63 md.diagnostic.icefront=[md.diagnostic.icefront(1:numberofneumann2d,1:2) md.diagnostic.icefront(1:numberofneumann2d,5:6)]; %Add two columns on the first layer 72 64 end … … 97 89 md.mask.elementongroundedice=project2d(md,md.mask.elementongroundedice,1); 98 90 md.mask.vertexongroundedice=project2d(md,md.mask.vertexongroundedice,1); 99 md.mask.elementonwater=project2d(md,md.mask.elementonwater,1);100 md.mask.vertexonwater=project2d(md,md.mask.vertexonwater,1);101 91 102 92 %Initialize with the 2d mesh -
issm/trunk-jpl-damage/src/m/model/loadresultsfromdisk.m
r11417 r11425 12 12 13 13 if ~md.qmu.isdakota, 14 15 %Check that file exists16 if ~exist(filename,'file'),17 error(['binary file ' filename ' not found.']);18 end19 14 20 15 %initialize md.results if not a structure yet -
issm/trunk-jpl-damage/src/m/model/radarpower.m
r11417 r11425 11 11 12 12 %If gdal does not work, uncomment the following line 13 %setenv('LD_LIBRARY_PATH','/proj/ice/larour/issm/trunk/externalpackages/gdal/install/lib/');13 setenv('LD_LIBRARY_PATH','/proj/ice/larour/issm/trunk/externalpackages/gdal/install/lib/'); 14 14 %Parse inputs 15 15 if nargin==1, -
issm/trunk-jpl-damage/src/m/model/tres.m
r11417 r11425 10 10 if strcmpi(string,'diagnostic'), 11 11 if md.mesh.dimension==2, 12 md.initialization.vx=md.results.DiagnosticSolution.Vx; 13 md.initialization.vy=md.results.DiagnosticSolution.Vy; 12 if isfield(md.results.DiagnosticSolution,'VxAverage'), 13 md.initialization.vx=PatchToVec(md.results.DiagnosticSolution.VxAverage); 14 else 15 md.initialization.vx=PatchToVec(md.results.DiagnosticSolution.Vx); 16 end 17 if isfield(md.results.DiagnosticSolution,'VyAverage'), 18 md.initialization.vy=PatchToVec(md.results.DiagnosticSolution.VyAverage); 19 else 20 md.initialization.vy=PatchToVec(md.results.DiagnosticSolution.Vy); 21 end 14 22 else 15 md.initialization.vx=md.results.DiagnosticSolution.Vx; 16 md.initialization.vy=md.results.DiagnosticSolution.Vy; 17 md.initialization.vz=md.results.DiagnosticSolution.Vz; 23 md.initialization.vx=PatchToVec(md.results.DiagnosticSolution.Vx); 24 md.initialization.vy=PatchToVec(md.results.DiagnosticSolution.Vy); 25 if isfield(md.results.DiagnosticSolution,'Vz'), 26 md.initialization.vz=PatchToVec(md.results.DiagnosticSolution.Vz); 27 else 28 md.initialization.vz=zeros(md.mesh.numberofvertices,1); 29 end 18 30 end 19 md.initialization.vel= md.results.DiagnosticSolution.Vel;31 md.initialization.vel=PatchToVec(md.results.DiagnosticSolution.Vel); 20 32 21 33 if isfield(md.results.DiagnosticSolution,'Pressure'), 22 md.initialization.pressure= md.results.DiagnosticSolution.Pressure;34 md.initialization.pressure=PatchToVec(md.results.DiagnosticSolution.Pressure); 23 35 end 24 36 if md.rifts.numrifts, … … 30 42 for control_parameters=md.inversion.control_parameters 31 43 %Will need to be updated... good luck ;) 32 md.(EnumToModelField(control_parameters))= md.results.DiagnosticSolution.(EnumToString(control_parameters));44 md.(EnumToModelField(control_parameters))=PatchToVec(md.results.DiagnosticSolution.(EnumToString(control_parameters))); 33 45 end 34 46 end … … 47 59 for i=1:length(results), 48 60 if ~isempty(md.results.TransientSolution(i).Vel), 49 results2(count).Vel= md.results.TransientSolution(i).Vel;50 results2(count).Surface= md.results.TransientSolution(i).Surface;51 results2(count).Thickness= md.results.TransientSolution(i).Thickness;52 results2(count).Bed= md.results.TransientSolution(i).Bed;53 results2(count).Vx= md.results.TransientSolution(i).Vx;54 results2(count).Vy= md.results.TransientSolution(i).Vy;61 results2(count).Vel=PatchToVec(md.results.TransientSolution(i).Vel); 62 results2(count).Surface=PatchToVec(md.results.TransientSolution(i).Surface); 63 results2(count).Thickness=PatchToVec(md.results.TransientSolution(i).Thickness); 64 results2(count).Bed=PatchToVec(md.results.TransientSolution(i).Bed); 65 results2(count).Vx=PatchToVec(md.results.TransientSolution(i).Vx); 66 results2(count).Vy=PatchToVec(md.results.TransientSolution(i).Vy); 55 67 results2(count).time=md.results.TransientSolution(i).time; 56 68 results2(count).step=md.results.TransientSolution(i).step; … … 64 76 clear results,results2; 65 77 elseif strcmpi(string,'steadystate'), 66 md.initialization.vx= md.results.SteadystateSolution.Vx;67 md.initialization.vy= md.results.SteadystateSolution.Vy;78 md.initialization.vx=PatchToVec(md.results.SteadystateSolution.Vx); 79 md.initialization.vy=PatchToVec(md.results.SteadystateSolution.Vy); 68 80 if isfield(md.results.SteadystateSolution,'Vz'), 69 md.initialization.vz= md.results.SteadystateSolution.Vz;81 md.initialization.vz=PatchToVec(md.results.SteadystateSolution.Vz); 70 82 end 71 83 72 md.initialization.vel= md.results.SteadystateSolution.Vel;73 md.initialization.pressure= md.results.SteadystateSolution.Pressure;74 md.initialization.temperature= md.results.SteadystateSolution.Temperature;75 md.basalforcings.melting_rate= md.results.SteadystateSolution.BasalforcingsMeltingRate;84 md.initialization.vel=PatchToVec(md.results.SteadystateSolution.Vel); 85 md.initialization.pressure=PatchToVec(md.results.SteadystateSolution.Pressure); 86 md.initialization.temperature=PatchToVec(md.results.SteadystateSolution.Temperature); 87 md.basalforcings.melting_rate=PatchToVec(md.results.SteadystateSolution.BasalforcingsMeltingRate); 76 88 77 89 if md.inversion.iscontrol==1, 78 90 for control_parameters=md.inversion.control_parameters 79 md.(EnumToModelField(control_parameters))= md.results.SteadystateSolution.(EnumToString(control_parameters));91 md.(EnumToModelField(control_parameters))=PatchToVec(md.results.SteadystateSolution.(EnumToString(control_parameters))); 80 92 end 81 93 end 82 94 83 95 elseif strcmpi(string,'thermal'), 84 md.initialization.temperature= md.results.ThermalSolution.Temperature;85 md.basalforcings.melting_rate= md.results.ThermalSolution.BasalMeltingRate;96 md.initialization.temperature=PatchToVec(md.results.ThermalSolution.Temperature); 97 md.basalforcings.melting_rate=PatchToVec(md.results.ThermalSolution.BasalMeltingRate); 86 98 elseif strcmpi(string,'hydrology'), 87 md.initialization.watercolumn= md.results.HydrologySolution.Watercolumn;99 md.initialization.watercolumn=PatchToVec(md.results.HydrologySolution.Watercolumn); 88 100 89 101 else -
issm/trunk-jpl-damage/src/m/qmu/expandresponses.m
r11417 r11425 1 1 function dresp=expandresponses(md,responses) 2 %EXPANDRESPONSES - expand responses3 2 4 3 fnames=fieldnames(responses); -
issm/trunk-jpl-damage/src/m/solutions/AnalysisConfiguration.m
r11417 r11425 42 42 43 43 case TransientSolutionEnum, 44 numanalyses= 9;45 analyses=[DiagnosticHorizAnalysisEnum;DiagnosticVertAnalysisEnum;DiagnosticHutterAnalysisEnum;SurfaceSlopeAnalysisEnum;BedSlopeAnalysisEnum;ThermalAnalysisEnum;MeltingAnalysisEnum; EnthalpyAnalysisEnum;PrognosticAnalysisEnum];44 numanalyses=8; 45 analyses=[DiagnosticHorizAnalysisEnum;DiagnosticVertAnalysisEnum;DiagnosticHutterAnalysisEnum;SurfaceSlopeAnalysisEnum;BedSlopeAnalysisEnum;ThermalAnalysisEnum;MeltingAnalysisEnum;PrognosticAnalysisEnum]; 46 46 47 47 case FlaimSolutionEnum, -
issm/trunk-jpl-damage/src/m/solutions/diagnostic_core.m
r11417 r11425 15 15 ismacayealpattyn=femmodel.parameters.FlowequationIsmacayealpattyn; 16 16 isstokes=femmodel.parameters.FlowequationIsstokes; 17 isnewton=femmodel.parameters.DiagnosticIsnewton;18 17 dakota_analysis=femmodel.parameters.QmuIsdakota; 19 18 control_analysis=femmodel.parameters.InversionIscontrol; … … 54 53 issmprintf(VerboseSolution,'\n%s',[' computing horizontal velocities']); 55 54 femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum); 56 if isnewton, 57 femmodel=solver_newton(femmodel); 58 else 59 femmodel=solver_nonlinear(femmodel,modify_loads); 60 end 55 femmodel=solver_nonlinear(femmodel,modify_loads); 61 56 end 62 57 -
issm/trunk-jpl-damage/src/m/solutions/transient_core.m
r11417 r11425 19 19 isthermal=femmodel.parameters.TransientIsthermal; 20 20 isgroundingline=femmodel.parameters.TransientIsgroundingline; 21 isenthalpy=femmodel.parameters.ThermalIsenthalpy;22 21 groundinglinemigration=femmodel.parameters.GroundinglineMigration; 23 22 … … 58 57 if (isthermal & dim==3) 59 58 issmprintf(VerboseSolution,'\n%s',[' computing temperature']); 60 if (isenthalpy==0), 61 femmodel=thermal_core_step(femmodel); 62 else 63 femmodel=enthalpy_core_step(femmodel); 64 end 59 femmodel=thermal_core_step(femmodel); 65 60 end 66 61 … … 95 90 femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,BedEnum,step,time); 96 91 if (dim==3 & isthermal), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,TemperatureEnum,step,time);end 97 if (dim==3 & isenthalpy), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,WaterfractionEnum,step,time);end98 if (dim==3 & isenthalpy), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,EnthalpyEnum,step,time);end99 92 femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,BasalforcingsMeltingRateEnum,step,time); 100 93 femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,SurfaceforcingsMassBalanceEnum,step,time); -
issm/trunk-jpl-damage/src/mex/Makefile.am
r11417 r11425 22 22 CostFunction \ 23 23 CreateNodalConstraints\ 24 CreateJacobianMatrix\25 24 Echo\ 26 25 ElementConnectivity\ … … 328 327 SystemMatrices/SystemMatrices.h 329 328 330 331 CreateJacobianMatrix_SOURCES = CreateJacobianMatrix/CreateJacobianMatrix.cpp\332 CreateJacobianMatrix/CreateJacobianMatrix.h333 334 329 SurfaceArea_SOURCES = SurfaceArea/SurfaceArea.cpp\ 335 330 SurfaceArea/SurfaceArea.h -
issm/trunk-jpl-damage/test/NightlyRun/IdToName.m
r11412 r11425 48 48 case 141, name='SquareShelfConstrainedEnthalpyTranSerial'; 49 49 case 142, name='SquareShelfConstrainedEnthalpyTranParallel'; 50 case 143, name='SquareShelfConstrainedTransP3dEnthSerial';51 case 144, name='SquareShelfConstrainedTransP3dEnthParallel';52 50 case 201, name='SquareShelfDiagM2dSerial'; 53 51 case 202, name='SquareShelfDiagM2dParallel'; … … 170 168 case 351, name='SquareSheetConstrainedEnthalpyTranSerial'; 171 169 case 352, name='SquareSheetConstrainedEnthalpyTranParallel'; 172 case 353, name='SquareSheetConstrainedTransP3dEnthSerial';173 case 354, name='SquareSheetConstrainedTransP3dEnthParallel';174 170 case 401, name='SquareSheetShelfDiagM2dSerial'; 175 171 case 402, name='SquareSheetShelfDiagM2dParallel'; -
issm/trunk-jpl-damage/test/NightlyRun/test314.m
r11412 r11425 9 9 %Fields and tolerances to track changes 10 10 field_names ={'Vx','Vy','Vz','Vel','Pressure'}; 11 field_tolerances={1e-09,1e-09,1e-10, 2e-10,1e-10};11 field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10}; 12 12 field_values={... 13 13 (md.results.DiagnosticSolution.Vx),... -
issm/trunk-jpl-damage/test/NightlyRun/test350.m
r11412 r11425 7 7 md.cluster=generic('name',oshostname(),'np',3); 8 8 md.initialization.waterfraction=zeros(md.mesh.numberofvertices,1); 9 %md.debug.valgrind=1; 9 10 md=solve(md,EnthalpySolutionEnum); 11 %md=solve(md,ThermalSolutionEnum); 10 12 11 13 %Fields and tolerances to track changes
Note:
See TracChangeset
for help on using the changeset viewer.