Changeset 11417
- Timestamp:
- 02/13/12 15:50:19 (13 years ago)
- Location:
- issm/trunk-jpl-damage/src
- Files:
-
- 66 edited
- 6 copied
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl-damage/src/c/EnumDefinitions/EnumDefinitions.h
r11368 r11417 162 162 ThermalSpctemperatureEnum, 163 163 ThermalStabilizationEnum, 164 ThermalIsenthalpyEnum, 164 165 ThicknessEnum, 165 166 TimesteppingCflCoefficientEnum, -
issm/trunk-jpl-damage/src/c/EnumDefinitions/Synchronize.sh
r11225 r11417 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 enums 13 NUMENUMS=$(wc -l temp | awk '{printf("%s",$1);}'); 11 14 12 15 #Take care of EnumToModelField.m first (easy) … … 95 98 int StringToEnumx(const char* name){ 96 99 100 int stage=1; 101 97 102 END 103 98 104 #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 105 i1=1; 106 i2=120; 107 for (( i=1 ; i<=100 ; i++ )); do 108 echo " if(stage==$i){" >> $ISSM_TIER//src/c/modules/StringToEnumx/StringToEnumx.cpp 109 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.cpp 111 echo " else stage=$(($i+1));" >> $ISSM_TIER//src/c/modules/StringToEnumx/StringToEnumx.cpp 112 echo " }" >> $ISSM_TIER//src/c/modules/StringToEnumx/StringToEnumx.cpp 113 114 if [ $i2 -ge $NUMENUMS ]; then break; fi 115 let i1=$i1+120 116 let i2=$i2+120 117 done 118 119 #footer 101 120 cat <<END >> $ISSM_TIER/src/c/modules/StringToEnumx/StringToEnumx.cpp 102 else _error_("Enum %s not found",name);103 121 /*If we reach this point, the string provided has not been found*/ 122 _error_("Enum %s not found",name); 104 123 } 105 124 END 106 125 #}}} 107 126 108 #get number of lines in temp109 NUMBEROFLINES=$(wc -l temp | awk '{printf("%s",$1);}');110 111 127 # go through the lines of temp 112 for (( i=1 ; i<=$NUM BEROFLINES ; i++ )); do128 for (( i=1 ; i<=$NUMENUMS ; i++ )); do 113 129 114 130 #Get name and enum of the line i … … 123 139 then 124 140 printf "\r " 125 printf "\r $i/$NUM BEROFLINES Adding "$NAME"..."141 printf "\r $i/$NUMENUMS Adding "$NAME"..." 126 142 else 127 143 if [ $i -lt 100 ] 128 144 then 129 145 printf "\r " 130 printf "\r $i/$NUM BEROFLINES Adding "$NAME"..."146 printf "\r $i/$NUMENUMS Adding "$NAME"..." 131 147 else 132 148 printf "\r " 133 printf "\r$i/$NUM BEROFLINES Adding "$NAME"..."149 printf "\r$i/$NUMENUMS Adding "$NAME"..." 134 150 fi 135 151 fi … … 153 169 done 154 170 155 156 171 #clean up{{{ 157 172 rm temp -
issm/trunk-jpl-damage/src/c/modules/BamgTriangulatex/BamgTriangulatex.cpp
r10205 r11417 17 17 Th.WriteIndex(pindex,pnels); 18 18 //delete &Th; 19 return 0; 19 20 20 21 } -
issm/trunk-jpl-damage/src/c/modules/Chacox/Chacox.cpp
r4648 r11417 191 191 192 192 193 #endif //ifdef _HAVE_CHACO_ 193 #else //ifdef _HAVE_CHACO_ 194 return (0); 195 #endif 194 196 } -
issm/trunk-jpl-damage/src/c/modules/Chacox/input_parse.cpp
r4648 r11417 262 262 return(0); 263 263 264 #endif //#ifdef _HAVE_CHACO_ 264 #else //#ifdef _HAVE_CHACO_ 265 return(0); 266 #endif 265 267 } -
issm/trunk-jpl-damage/src/c/modules/ContourToMeshx/ContourToMeshxt.cpp
r9320 r11417 69 69 } 70 70 71 return NULL; 72 71 73 } -
issm/trunk-jpl-damage/src/c/modules/ContourToNodesx/ContourToNodesx.cpp
r8303 r11417 36 36 /*Assign output pointers: */ 37 37 *pflags=flags; 38 38 39 return 1; 39 40 } -
issm/trunk-jpl-damage/src/c/modules/EnumToStringx/EnumToStringx.cpp
r11368 r11417 166 166 case ThermalSpctemperatureEnum : return "ThermalSpctemperature"; 167 167 case ThermalStabilizationEnum : return "ThermalStabilization"; 168 case ThermalIsenthalpyEnum : return "ThermalIsenthalpy"; 168 169 case ThicknessEnum : return "Thickness"; 169 170 case TimesteppingCflCoefficientEnum : return "TimesteppingCflCoefficient"; -
issm/trunk-jpl-damage/src/c/modules/InterpFromMesh2dx/InterpFromMesh2dxt.cpp
r7145 r11417 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; 128 130 129 131 } -
issm/trunk-jpl-damage/src/c/modules/ModelProcessorx/CreateParameters.cpp
r11275 r11417 78 78 parameters->AddObject(iomodel->CopyConstantObject(TransientIsthermalEnum)); 79 79 parameters->AddObject(iomodel->CopyConstantObject(TransientIsgroundinglineEnum)); 80 parameters->AddObject(iomodel->CopyConstantObject(ThermalIsenthalpyEnum)); 80 81 parameters->AddObject(iomodel->CopyConstantObject(MaterialsRheologyLawEnum)); 81 82 parameters->AddObject(iomodel->CopyConstantObject(AutodiffIsautodiffEnum)); -
issm/trunk-jpl-damage/src/c/modules/ModelProcessorx/ModelProcessorx.cpp
r11129 r11417 20 20 21 21 int i,analysis_type,dim,verbose; 22 bool isthermal,isprognostic,isdiagnostic,isgroundingline ;22 bool isthermal,isprognostic,isdiagnostic,isgroundingline,isenthalpy; 23 23 24 24 /*output: */ … … 39 39 iomodel->Constant(&verbose,VerboseEnum); 40 40 iomodel->Constant(&isthermal,TransientIsthermalEnum); 41 iomodel->Constant(&isenthalpy,ThermalIsenthalpyEnum); 41 42 iomodel->Constant(&isprognostic,TransientIsprognosticEnum); 42 43 iomodel->Constant(&isdiagnostic,TransientIsdiagnosticEnum); … … 52 53 if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && dim==2) continue; 53 54 if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && dim==2) continue; 55 if(solution_type==TransientSolutionEnum && analysis_type==EnthalpyAnalysisEnum && dim==2) continue; 54 56 if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && isthermal==false) continue; 55 57 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; 56 62 if(solution_type==TransientSolutionEnum && analysis_type==PrognosticAnalysisEnum && isprognostic==false && isgroundingline==false) continue; 57 63 if(solution_type==TransientSolutionEnum && analysis_type==DiagnosticHorizAnalysisEnum && isdiagnostic==false) continue; -
issm/trunk-jpl-damage/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsx.cpp
r7640 r11417 36 36 /*Assign output pointers: */ 37 37 *pflags=flags; 38 39 return 1; 38 40 } -
issm/trunk-jpl-damage/src/c/modules/PointCloudFindNeighborsx/PointCloudFindNeighborsxt.cpp
r7649 r11417 74 74 /*Free ressources:*/ 75 75 xfree((void**)&already); 76 77 return NULL; 76 78 } -
issm/trunk-jpl-damage/src/c/modules/Scotchx/Scotchx.cpp
r4656 r11417 339 339 return (0); 340 340 341 #endif //#ifdef _HAVE_SCOTCH_ 341 #else //#ifdef _HAVE_SCOTCH_ 342 return(0); 343 #endif 342 344 } -
issm/trunk-jpl-damage/src/c/modules/Shp2Kmlx/Shp2Kmlx.cpp
r10380 r11417 24 24 sgn,cm,sp)); 25 25 26 #endif //ifdef _HAVE_SHAPELIB_ 26 #else //ifdef _HAVE_SHAPELIB_ 27 return 0; 28 #endif 27 29 } 28 30 … … 607 609 return(iret); 608 610 609 #endif //ifdef _HAVE_SHAPELIB_ 611 #else //ifdef _HAVE_SHAPELIB_ 612 return 0; 613 #endif 610 614 } 611 615 -
issm/trunk-jpl-damage/src/c/modules/StringToEnumx/StringToEnumx.cpp
r11368 r11417 14 14 int StringToEnumx(const char* name){ 15 15 16 <<<<<<< .working 16 17 if (strcmp(name,"AutodiffForward")==0) return AutodiffForwardEnum; 17 18 else if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum; … … 443 444 else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum; 444 445 else _error_("Enum %s not found",name); 446 ======= 447 int stage=1; 448 >>>>>>> .merge-right.r11410 445 449 450 if(stage==1){ 451 if (strcmp(name,"AutodiffForward")==0) return AutodiffForwardEnum; 452 else if (strcmp(name,"AutodiffIsautodiff")==0) return AutodiffIsautodiffEnum; 453 else if (strcmp(name,"AutodiffReverse")==0) return AutodiffReverseEnum; 454 else if (strcmp(name,"BalancethicknessSpcthickness")==0) return BalancethicknessSpcthicknessEnum; 455 else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum; 456 else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum; 457 else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum; 458 else if (strcmp(name,"BasalforcingsMeltingRateCorrection")==0) return BasalforcingsMeltingRateCorrectionEnum; 459 else if (strcmp(name,"BasalforcingsMeltingRate")==0) return BasalforcingsMeltingRateEnum; 460 else if (strcmp(name,"Bathymetry")==0) return BathymetryEnum; 461 else if (strcmp(name,"Bed")==0) return BedEnum; 462 else if (strcmp(name,"ConstantsG")==0) return ConstantsGEnum; 463 else if (strcmp(name,"ConstantsReferencetemperature")==0) return ConstantsReferencetemperatureEnum; 464 else if (strcmp(name,"ConstantsYts")==0) return ConstantsYtsEnum; 465 else if (strcmp(name,"DiagnosticAbstol")==0) return DiagnosticAbstolEnum; 466 else if (strcmp(name,"DiagnosticIcefront")==0) return DiagnosticIcefrontEnum; 467 else if (strcmp(name,"DiagnosticIsnewton")==0) return DiagnosticIsnewtonEnum; 468 else if (strcmp(name,"DiagnosticMaxiter")==0) return DiagnosticMaxiterEnum; 469 else if (strcmp(name,"DiagnosticNumRequestedOutputs")==0) return DiagnosticNumRequestedOutputsEnum; 470 else if (strcmp(name,"DiagnosticPenaltyFactor")==0) return DiagnosticPenaltyFactorEnum; 471 else if (strcmp(name,"DiagnosticReferential")==0) return DiagnosticReferentialEnum; 472 else if (strcmp(name,"DiagnosticReltol")==0) return DiagnosticReltolEnum; 473 else if (strcmp(name,"DiagnosticRequestedOutputs")==0) return DiagnosticRequestedOutputsEnum; 474 else if (strcmp(name,"DiagnosticRestol")==0) return DiagnosticRestolEnum; 475 else if (strcmp(name,"DiagnosticRiftPenaltyLock")==0) return DiagnosticRiftPenaltyLockEnum; 476 else if (strcmp(name,"DiagnosticRiftPenaltyThreshold")==0) return DiagnosticRiftPenaltyThresholdEnum; 477 else if (strcmp(name,"DiagnosticShelfDampening")==0) return DiagnosticShelfDampeningEnum; 478 else if (strcmp(name,"DiagnosticSpcvx")==0) return DiagnosticSpcvxEnum; 479 else if (strcmp(name,"DiagnosticSpcvy")==0) return DiagnosticSpcvyEnum; 480 else if (strcmp(name,"DiagnosticSpcvz")==0) return DiagnosticSpcvzEnum; 481 else if (strcmp(name,"DiagnosticStokesreconditioning")==0) return DiagnosticStokesreconditioningEnum; 482 else if (strcmp(name,"DiagnosticVertexPairing")==0) return DiagnosticVertexPairingEnum; 483 else if (strcmp(name,"DiagnosticViscosityOvershoot")==0) return DiagnosticViscosityOvershootEnum; 484 else if (strcmp(name,"FlowequationBordermacayeal")==0) return FlowequationBordermacayealEnum; 485 else if (strcmp(name,"FlowequationBorderpattyn")==0) return FlowequationBorderpattynEnum; 486 else if (strcmp(name,"FlowequationBorderstokes")==0) return FlowequationBorderstokesEnum; 487 else if (strcmp(name,"FlowequationElementEquation")==0) return FlowequationElementEquationEnum; 488 else if (strcmp(name,"FlowequationIshutter")==0) return FlowequationIshutterEnum; 489 else if (strcmp(name,"FlowequationIsmacayealpattyn")==0) return FlowequationIsmacayealpattynEnum; 490 else if (strcmp(name,"FlowequationIsstokes")==0) return FlowequationIsstokesEnum; 491 else if (strcmp(name,"FlowequationVertexEquation")==0) return FlowequationVertexEquationEnum; 492 else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum; 493 else if (strcmp(name,"FrictionP")==0) return FrictionPEnum; 494 else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum; 495 else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum; 496 else if (strcmp(name,"HydrologyCR")==0) return HydrologyCREnum; 497 else if (strcmp(name,"HydrologyKn")==0) return HydrologyKnEnum; 498 else if (strcmp(name,"HydrologyN")==0) return HydrologyNEnum; 499 else if (strcmp(name,"HydrologyP")==0) return HydrologyPEnum; 500 else if (strcmp(name,"HydrologyQ")==0) return HydrologyQEnum; 501 else if (strcmp(name,"HydrologySpcwatercolumn")==0) return HydrologySpcwatercolumnEnum; 502 else if (strcmp(name,"HydrologyStabilization")==0) return HydrologyStabilizationEnum; 503 else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum; 504 else if (strcmp(name,"InversionCostFunction")==0) return InversionCostFunctionEnum; 505 else if (strcmp(name,"InversionCostFunctionThreshold")==0) return InversionCostFunctionThresholdEnum; 506 else if (strcmp(name,"InversionCostFunctionsCoefficients")==0) return InversionCostFunctionsCoefficientsEnum; 507 else if (strcmp(name,"InversionCostFunctions")==0) return InversionCostFunctionsEnum; 508 else if (strcmp(name,"InversionGradientOnly")==0) return InversionGradientOnlyEnum; 509 else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum; 510 else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum; 511 else if (strcmp(name,"InversionTao")==0) return InversionTaoEnum; 512 else if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum; 513 else if (strcmp(name,"InversionMaxiterPerStep")==0) return InversionMaxiterPerStepEnum; 514 else if (strcmp(name,"InversionMinParameters")==0) return InversionMinParametersEnum; 515 else if (strcmp(name,"InversionNsteps")==0) return InversionNstepsEnum; 516 else if (strcmp(name,"InversionNumControlParameters")==0) return InversionNumControlParametersEnum; 517 else if (strcmp(name,"InversionNumCostFunctions")==0) return InversionNumCostFunctionsEnum; 518 else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum; 519 else if (strcmp(name,"InversionThicknessObs")==0) return InversionThicknessObsEnum; 520 else if (strcmp(name,"InversionVelObs")==0) return InversionVelObsEnum; 521 else if (strcmp(name,"InversionVxObs")==0) return InversionVxObsEnum; 522 else if (strcmp(name,"InversionVyObs")==0) return InversionVyObsEnum; 523 else if (strcmp(name,"InversionVzObs")==0) return InversionVzObsEnum; 524 else if (strcmp(name,"MaskElementonfloatingice")==0) return MaskElementonfloatingiceEnum; 525 else if (strcmp(name,"MaskElementongroundedice")==0) return MaskElementongroundediceEnum; 526 else if (strcmp(name,"MaskElementonwater")==0) return MaskElementonwaterEnum; 527 else if (strcmp(name,"MaskVertexonfloatingice")==0) return MaskVertexonfloatingiceEnum; 528 else if (strcmp(name,"MaskVertexongroundedice")==0) return MaskVertexongroundediceEnum; 529 else if (strcmp(name,"MaskVertexonwater")==0) return MaskVertexonwaterEnum; 530 else if (strcmp(name,"MaterialsBeta")==0) return MaterialsBetaEnum; 531 else if (strcmp(name,"MaterialsHeatcapacity")==0) return MaterialsHeatcapacityEnum; 532 else if (strcmp(name,"MaterialsLatentheat")==0) return MaterialsLatentheatEnum; 533 else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum; 534 else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum; 535 else if (strcmp(name,"MaterialsRheologyB")==0) return MaterialsRheologyBEnum; 536 else if (strcmp(name,"MaterialsRheologyBbar")==0) return MaterialsRheologyBbarEnum; 537 else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum; 538 else if (strcmp(name,"MaterialsRheologyN")==0) return MaterialsRheologyNEnum; 539 else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum; 540 else if (strcmp(name,"MaterialsRhoWater")==0) return MaterialsRhoWaterEnum; 541 else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum; 542 else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum; 543 else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum; 544 else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum; 545 else if (strcmp(name,"MeshDimension")==0) return MeshDimensionEnum; 546 else if (strcmp(name,"MeshEdges")==0) return MeshEdgesEnum; 547 else if (strcmp(name,"MeshElementconnectivity")==0) return MeshElementconnectivityEnum; 548 else if (strcmp(name,"MeshElementonbed")==0) return MeshElementonbedEnum; 549 else if (strcmp(name,"MeshElementonsurface")==0) return MeshElementonsurfaceEnum; 550 else if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum; 551 else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum; 552 else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum; 553 else if (strcmp(name,"MeshNumberofedges")==0) return MeshNumberofedgesEnum; 554 else if (strcmp(name,"MeshNumberofelements2d")==0) return MeshNumberofelements2dEnum; 555 else if (strcmp(name,"MeshNumberofelements")==0) return MeshNumberofelementsEnum; 556 else if (strcmp(name,"MeshNumberoflayers")==0) return MeshNumberoflayersEnum; 557 else if (strcmp(name,"MeshNumberofvertices2d")==0) return MeshNumberofvertices2dEnum; 558 else if (strcmp(name,"MeshNumberofvertices")==0) return MeshNumberofverticesEnum; 559 else if (strcmp(name,"MeshUpperelements")==0) return MeshUpperelementsEnum; 560 else if (strcmp(name,"MeshVertexonbed")==0) return MeshVertexonbedEnum; 561 else if (strcmp(name,"MeshVertexonsurface")==0) return MeshVertexonsurfaceEnum; 562 else if (strcmp(name,"MeshX")==0) return MeshXEnum; 563 else if (strcmp(name,"MeshY")==0) return MeshYEnum; 564 else if (strcmp(name,"MeshZ")==0) return MeshZEnum; 565 else if (strcmp(name,"MiscellaneousName")==0) return MiscellaneousNameEnum; 566 else if (strcmp(name,"PrognosticHydrostaticAdjustment")==0) return PrognosticHydrostaticAdjustmentEnum; 567 else if (strcmp(name,"PrognosticMinThickness")==0) return PrognosticMinThicknessEnum; 568 else if (strcmp(name,"PrognosticPenaltyFactor")==0) return PrognosticPenaltyFactorEnum; 569 else if (strcmp(name,"PrognosticSpcthickness")==0) return PrognosticSpcthicknessEnum; 570 else if (strcmp(name,"PrognosticStabilization")==0) return PrognosticStabilizationEnum; 571 else stage=2; 572 } 573 if(stage==2){ 574 if (strcmp(name,"PrognosticVertexPairing")==0) return PrognosticVertexPairingEnum; 575 else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum; 576 else if (strcmp(name,"QmuMassFluxSegments")==0) return QmuMassFluxSegmentsEnum; 577 else if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum; 578 else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum; 579 else if (strcmp(name,"QmuPartition")==0) return QmuPartitionEnum; 580 else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum; 581 else if (strcmp(name,"QmuVariabledescriptors")==0) return QmuVariabledescriptorsEnum; 582 else if (strcmp(name,"RiftsNumrifts")==0) return RiftsNumriftsEnum; 583 else if (strcmp(name,"RiftsRiftstruct")==0) return RiftsRiftstructEnum; 584 else if (strcmp(name,"SettingsIoGather")==0) return SettingsIoGatherEnum; 585 else if (strcmp(name,"SettingsLowmem")==0) return SettingsLowmemEnum; 586 else if (strcmp(name,"SettingsOutputFrequency")==0) return SettingsOutputFrequencyEnum; 587 else if (strcmp(name,"SettingsResultsAsPatches")==0) return SettingsResultsAsPatchesEnum; 588 else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum; 589 else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum; 590 else if (strcmp(name,"SteadystateNumRequestedOutputs")==0) return SteadystateNumRequestedOutputsEnum; 591 else if (strcmp(name,"SteadystateReltol")==0) return SteadystateReltolEnum; 592 else if (strcmp(name,"SteadystateRequestedOutputs")==0) return SteadystateRequestedOutputsEnum; 593 else if (strcmp(name,"Surface")==0) return SurfaceEnum; 594 else if (strcmp(name,"SurfaceforcingsAblationRate")==0) return SurfaceforcingsAblationRateEnum; 595 else if (strcmp(name,"SurfaceforcingsAccumulationRate")==0) return SurfaceforcingsAccumulationRateEnum; 596 else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum; 597 else if (strcmp(name,"ThermalMaxiter")==0) return ThermalMaxiterEnum; 598 else if (strcmp(name,"ThermalPenaltyFactor")==0) return ThermalPenaltyFactorEnum; 599 else if (strcmp(name,"ThermalPenaltyLock")==0) return ThermalPenaltyLockEnum; 600 else if (strcmp(name,"ThermalPenaltyThreshold")==0) return ThermalPenaltyThresholdEnum; 601 else if (strcmp(name,"ThermalSpctemperature")==0) return ThermalSpctemperatureEnum; 602 else if (strcmp(name,"ThermalStabilization")==0) return ThermalStabilizationEnum; 603 else if (strcmp(name,"ThermalIsenthalpy")==0) return ThermalIsenthalpyEnum; 604 else if (strcmp(name,"Thickness")==0) return ThicknessEnum; 605 else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum; 606 else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum; 607 else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum; 608 else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum; 609 else if (strcmp(name,"TransientIsdiagnostic")==0) return TransientIsdiagnosticEnum; 610 else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum; 611 else if (strcmp(name,"TransientIsprognostic")==0) return TransientIsprognosticEnum; 612 else if (strcmp(name,"TransientIsthermal")==0) return TransientIsthermalEnum; 613 else if (strcmp(name,"TransientNumRequestedOutputs")==0) return TransientNumRequestedOutputsEnum; 614 else if (strcmp(name,"TransientRequestedOutputs")==0) return TransientRequestedOutputsEnum; 615 else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum; 616 else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum; 617 else if (strcmp(name,"ConfigurationType")==0) return ConfigurationTypeEnum; 618 else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum; 619 else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum; 620 else if (strcmp(name,"AdjointSolution")==0) return AdjointSolutionEnum; 621 else if (strcmp(name,"AnalysisCounter")==0) return AnalysisCounterEnum; 622 else if (strcmp(name,"BalancethicknessAnalysis")==0) return BalancethicknessAnalysisEnum; 623 else if (strcmp(name,"BalancethicknessSolution")==0) return BalancethicknessSolutionEnum; 624 else if (strcmp(name,"BedSlopeAnalysis")==0) return BedSlopeAnalysisEnum; 625 else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum; 626 else if (strcmp(name,"BedSlopeXAnalysis")==0) return BedSlopeXAnalysisEnum; 627 else if (strcmp(name,"BedSlopeYAnalysis")==0) return BedSlopeYAnalysisEnum; 628 else if (strcmp(name,"DiagnosticHorizAnalysis")==0) return DiagnosticHorizAnalysisEnum; 629 else if (strcmp(name,"DiagnosticHutterAnalysis")==0) return DiagnosticHutterAnalysisEnum; 630 else if (strcmp(name,"DiagnosticSolution")==0) return DiagnosticSolutionEnum; 631 else if (strcmp(name,"DiagnosticVertAnalysis")==0) return DiagnosticVertAnalysisEnum; 632 else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum; 633 else if (strcmp(name,"EnthalpySolution")==0) return EnthalpySolutionEnum; 634 else if (strcmp(name,"FlaimAnalysis")==0) return FlaimAnalysisEnum; 635 else if (strcmp(name,"FlaimSolution")==0) return FlaimSolutionEnum; 636 else if (strcmp(name,"HydrologyAnalysis")==0) return HydrologyAnalysisEnum; 637 else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum; 638 else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum; 639 else if (strcmp(name,"NoneAnalysis")==0) return NoneAnalysisEnum; 640 else if (strcmp(name,"PrognosticAnalysis")==0) return PrognosticAnalysisEnum; 641 else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum; 642 else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum; 643 else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum; 644 else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum; 645 else if (strcmp(name,"SurfaceSlopeXAnalysis")==0) return SurfaceSlopeXAnalysisEnum; 646 else if (strcmp(name,"SurfaceSlopeYAnalysis")==0) return SurfaceSlopeYAnalysisEnum; 647 else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum; 648 else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum; 649 else if (strcmp(name,"TransientSolution")==0) return TransientSolutionEnum; 650 else if (strcmp(name,"Approximation")==0) return ApproximationEnum; 651 else if (strcmp(name,"HutterApproximation")==0) return HutterApproximationEnum; 652 else if (strcmp(name,"MacAyealApproximation")==0) return MacAyealApproximationEnum; 653 else if (strcmp(name,"MacAyealPattynApproximation")==0) return MacAyealPattynApproximationEnum; 654 else if (strcmp(name,"MacAyealStokesApproximation")==0) return MacAyealStokesApproximationEnum; 655 else if (strcmp(name,"NoneApproximation")==0) return NoneApproximationEnum; 656 else if (strcmp(name,"PattynApproximation")==0) return PattynApproximationEnum; 657 else if (strcmp(name,"PattynStokesApproximation")==0) return PattynStokesApproximationEnum; 658 else if (strcmp(name,"StokesApproximation")==0) return StokesApproximationEnum; 659 else if (strcmp(name,"Constraints")==0) return ConstraintsEnum; 660 else if (strcmp(name,"Loads")==0) return LoadsEnum; 661 else if (strcmp(name,"Materials")==0) return MaterialsEnum; 662 else if (strcmp(name,"Nodes")==0) return NodesEnum; 663 else if (strcmp(name,"Parameters")==0) return ParametersEnum; 664 else if (strcmp(name,"Vertices")==0) return VerticesEnum; 665 else if (strcmp(name,"Results")==0) return ResultsEnum; 666 else if (strcmp(name,"BoolInput")==0) return BoolInputEnum; 667 else if (strcmp(name,"BoolParam")==0) return BoolParamEnum; 668 else if (strcmp(name,"ControlInput")==0) return ControlInputEnum; 669 else if (strcmp(name,"DatasetInput")==0) return DatasetInputEnum; 670 else if (strcmp(name,"DofIndexing")==0) return DofIndexingEnum; 671 else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum; 672 else if (strcmp(name,"DoubleMatArrayParam")==0) return DoubleMatArrayParamEnum; 673 else if (strcmp(name,"DoubleMatParam")==0) return DoubleMatParamEnum; 674 else if (strcmp(name,"DoubleParam")==0) return DoubleParamEnum; 675 else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum; 676 else if (strcmp(name,"Element")==0) return ElementEnum; 677 else if (strcmp(name,"ElementResult")==0) return ElementResultEnum; 678 else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum; 679 else if (strcmp(name,"FileParam")==0) return FileParamEnum; 680 else if (strcmp(name,"Hook")==0) return HookEnum; 681 else if (strcmp(name,"Icefront")==0) return IcefrontEnum; 682 else if (strcmp(name,"Input")==0) return InputEnum; 683 else if (strcmp(name,"IntInput")==0) return IntInputEnum; 684 else if (strcmp(name,"IntParam")==0) return IntParamEnum; 685 else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum; 686 else if (strcmp(name,"MacAyeal2dIceFront")==0) return MacAyeal2dIceFrontEnum; 687 else if (strcmp(name,"MacAyeal3dIceFront")==0) return MacAyeal3dIceFrontEnum; 688 else if (strcmp(name,"Matice")==0) return MaticeEnum; 689 else if (strcmp(name,"Matpar")==0) return MatparEnum; 690 else if (strcmp(name,"Node")==0) return NodeEnum; 691 else if (strcmp(name,"Numericalflux")==0) return NumericalfluxEnum; 692 else if (strcmp(name,"Param")==0) return ParamEnum; 693 else if (strcmp(name,"PattynIceFront")==0) return PattynIceFrontEnum; 694 else stage=3; 695 } 696 if(stage==3){ 697 if (strcmp(name,"Pengrid")==0) return PengridEnum; 698 else if (strcmp(name,"Penpair")==0) return PenpairEnum; 699 else if (strcmp(name,"Penta")==0) return PentaEnum; 700 else if (strcmp(name,"PentaP1Input")==0) return PentaP1InputEnum; 701 else if (strcmp(name,"PetscMatParam")==0) return PetscMatParamEnum; 702 else if (strcmp(name,"PetscVecParam")==0) return PetscVecParamEnum; 703 else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum; 704 else if (strcmp(name,"Segment")==0) return SegmentEnum; 705 else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum; 706 else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum; 707 else if (strcmp(name,"SpcStatic")==0) return SpcStaticEnum; 708 else if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum; 709 else if (strcmp(name,"StokesIceFront")==0) return StokesIceFrontEnum; 710 else if (strcmp(name,"StringArrayParam")==0) return StringArrayParamEnum; 711 else if (strcmp(name,"StringParam")==0) return StringParamEnum; 712 else if (strcmp(name,"Tria")==0) return TriaEnum; 713 else if (strcmp(name,"TriaP1Input")==0) return TriaP1InputEnum; 714 else if (strcmp(name,"Vertex")==0) return VertexEnum; 715 else if (strcmp(name,"Air")==0) return AirEnum; 716 else if (strcmp(name,"Ice")==0) return IceEnum; 717 else if (strcmp(name,"Melange")==0) return MelangeEnum; 718 else if (strcmp(name,"Water")==0) return WaterEnum; 719 else if (strcmp(name,"Closed")==0) return ClosedEnum; 720 else if (strcmp(name,"Free")==0) return FreeEnum; 721 else if (strcmp(name,"Open")==0) return OpenEnum; 722 else if (strcmp(name,"Adjointp")==0) return AdjointpEnum; 723 else if (strcmp(name,"Adjointx")==0) return AdjointxEnum; 724 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum; 725 else if (strcmp(name,"Adjointz")==0) return AdjointzEnum; 726 else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum; 727 else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum; 728 else if (strcmp(name,"Boundary")==0) return BoundaryEnum; 729 else if (strcmp(name,"Constant")==0) return ConstantEnum; 730 else if (strcmp(name,"Converged")==0) return ConvergedEnum; 731 else if (strcmp(name,"ExtToIu")==0) return ExtToIuEnum; 732 else if (strcmp(name,"Fill")==0) return FillEnum; 733 else if (strcmp(name,"FractionIncrement")==0) return FractionIncrementEnum; 734 else if (strcmp(name,"Friction")==0) return FrictionEnum; 735 else if (strcmp(name,"GroundinglineMeltingRate")==0) return GroundinglineMeltingRateEnum; 736 else if (strcmp(name,"Internal")==0) return InternalEnum; 737 else if (strcmp(name,"IuToExt")==0) return IuToExtEnum; 738 else if (strcmp(name,"MassFlux")==0) return MassFluxEnum; 739 else if (strcmp(name,"MaxPenetration")==0) return MaxPenetrationEnum; 740 else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum; 741 else if (strcmp(name,"Misfit")==0) return MisfitEnum; 742 else if (strcmp(name,"NumberNodeToElementConnectivity")==0) return NumberNodeToElementConnectivityEnum; 743 else if (strcmp(name,"Pressure")==0) return PressureEnum; 744 else if (strcmp(name,"PressurePicard")==0) return PressurePicardEnum; 745 else if (strcmp(name,"QmuPressure")==0) return QmuPressureEnum; 746 else if (strcmp(name,"QmuVx")==0) return QmuVxEnum; 747 else if (strcmp(name,"QmuVy")==0) return QmuVyEnum; 748 else if (strcmp(name,"QmuVz")==0) return QmuVzEnum; 749 else if (strcmp(name,"QmuThickness")==0) return QmuThicknessEnum; 750 else if (strcmp(name,"QmuBed")==0) return QmuBedEnum; 751 else if (strcmp(name,"QmuSurface")==0) return QmuSurfaceEnum; 752 else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum; 753 else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum; 754 else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum; 755 else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum; 756 else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum; 757 else if (strcmp(name,"SurfaceAverageVelMisfit")==0) return SurfaceAverageVelMisfitEnum; 758 else if (strcmp(name,"SurfaceLogVelMisfit")==0) return SurfaceLogVelMisfitEnum; 759 else if (strcmp(name,"SurfaceLogVxVyMisfit")==0) return SurfaceLogVxVyMisfitEnum; 760 else if (strcmp(name,"SurfaceRelVelMisfit")==0) return SurfaceRelVelMisfitEnum; 761 else if (strcmp(name,"SurfaceSlopeX")==0) return SurfaceSlopeXEnum; 762 else if (strcmp(name,"SurfaceSlopeY")==0) return SurfaceSlopeYEnum; 763 else if (strcmp(name,"Temperature")==0) return TemperatureEnum; 764 else if (strcmp(name,"TemperatureOld")==0) return TemperatureOldEnum; 765 else if (strcmp(name,"TemperaturePicard")==0) return TemperaturePicardEnum; 766 else if (strcmp(name,"ThicknessAbsMisfit")==0) return ThicknessAbsMisfitEnum; 767 else if (strcmp(name,"Type")==0) return TypeEnum; 768 else if (strcmp(name,"Vel")==0) return VelEnum; 769 else if (strcmp(name,"Velocity")==0) return VelocityEnum; 770 else if (strcmp(name,"VxAverage")==0) return VxAverageEnum; 771 else if (strcmp(name,"Vx")==0) return VxEnum; 772 else if (strcmp(name,"VxPicard")==0) return VxPicardEnum; 773 else if (strcmp(name,"VyAverage")==0) return VyAverageEnum; 774 else if (strcmp(name,"Vy")==0) return VyEnum; 775 else if (strcmp(name,"VyPicard")==0) return VyPicardEnum; 776 else if (strcmp(name,"Vz")==0) return VzEnum; 777 else if (strcmp(name,"VzMacAyeal")==0) return VzMacAyealEnum; 778 else if (strcmp(name,"VzPattyn")==0) return VzPattynEnum; 779 else if (strcmp(name,"VzPicard")==0) return VzPicardEnum; 780 else if (strcmp(name,"VzStokes")==0) return VzStokesEnum; 781 else if (strcmp(name,"VxMesh")==0) return VxMeshEnum; 782 else if (strcmp(name,"VyMesh")==0) return VyMeshEnum; 783 else if (strcmp(name,"VzMesh")==0) return VzMeshEnum; 784 else if (strcmp(name,"Enthalpy")==0) return EnthalpyEnum; 785 else if (strcmp(name,"EnthalpyPicard")==0) return EnthalpyPicardEnum; 786 else if (strcmp(name,"ThicknessAbsGradient")==0) return ThicknessAbsGradientEnum; 787 else if (strcmp(name,"StepResponses")==0) return StepResponsesEnum; 788 else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum; 789 else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum; 790 else if (strcmp(name,"DragCoefficientAbsGradient")==0) return DragCoefficientAbsGradientEnum; 791 else if (strcmp(name,"TransientInput")==0) return TransientInputEnum; 792 else if (strcmp(name,"Outputfilename")==0) return OutputfilenameEnum; 793 else if (strcmp(name,"Waterfraction")==0) return WaterfractionEnum; 794 else if (strcmp(name,"Watercolumn")==0) return WatercolumnEnum; 795 else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum; 796 else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum; 797 else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum; 798 else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum; 799 else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 800 else if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 801 else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum; 802 else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum; 803 else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum; 804 else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum; 805 else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum; 806 else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum; 807 else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum; 808 else if (strcmp(name,"P0")==0) return P0Enum; 809 else if (strcmp(name,"P1")==0) return P1Enum; 810 else if (strcmp(name,"P1DG")==0) return P1DGEnum; 811 else if (strcmp(name,"BoolElementResult")==0) return BoolElementResultEnum; 812 else if (strcmp(name,"BoolExternalResult")==0) return BoolExternalResultEnum; 813 else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum; 814 else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum; 815 else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum; 816 else if (strcmp(name,"DoubleVecExternalResult")==0) return DoubleVecExternalResultEnum; 817 else stage=4; 818 } 819 if(stage==4){ 820 if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 821 else if (strcmp(name,"J")==0) return JEnum; 822 else if (strcmp(name,"Patch")==0) return PatchEnum; 823 else if (strcmp(name,"PatchNodes")==0) return PatchNodesEnum; 824 else if (strcmp(name,"PatchVertices")==0) return PatchVerticesEnum; 825 else if (strcmp(name,"PentaP1ElementResult")==0) return PentaP1ElementResultEnum; 826 else if (strcmp(name,"PetscVecExternalResult")==0) return PetscVecExternalResultEnum; 827 else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum; 828 else if (strcmp(name,"Time")==0) return TimeEnum; 829 else if (strcmp(name,"TriaP1ElementResult")==0) return TriaP1ElementResultEnum; 830 else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum; 831 else if (strcmp(name,"MinVel")==0) return MinVelEnum; 832 else if (strcmp(name,"MaxVel")==0) return MaxVelEnum; 833 else if (strcmp(name,"MinVx")==0) return MinVxEnum; 834 else if (strcmp(name,"MaxVx")==0) return MaxVxEnum; 835 else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum; 836 else if (strcmp(name,"MinVy")==0) return MinVyEnum; 837 else if (strcmp(name,"MaxVy")==0) return MaxVyEnum; 838 else if (strcmp(name,"MaxAbsVy")==0) return MaxAbsVyEnum; 839 else if (strcmp(name,"MinVz")==0) return MinVzEnum; 840 else if (strcmp(name,"MaxVz")==0) return MaxVzEnum; 841 else if (strcmp(name,"MaxAbsVz")==0) return MaxAbsVzEnum; 842 else if (strcmp(name,"Relative")==0) return RelativeEnum; 843 else if (strcmp(name,"Absolute")==0) return AbsoluteEnum; 844 else if (strcmp(name,"Incremental")==0) return IncrementalEnum; 845 else if (strcmp(name,"AgressiveMigration")==0) return AgressiveMigrationEnum; 846 else if (strcmp(name,"None")==0) return NoneEnum; 847 else if (strcmp(name,"SoftMigration")==0) return SoftMigrationEnum; 848 else if (strcmp(name,"StokesSolver")==0) return StokesSolverEnum; 849 else if (strcmp(name,"Adjoint")==0) return AdjointEnum; 850 else if (strcmp(name,"Colinear")==0) return ColinearEnum; 851 else if (strcmp(name,"ControlSteady")==0) return ControlSteadyEnum; 852 else if (strcmp(name,"Fset")==0) return FsetEnum; 853 else if (strcmp(name,"Gradient1")==0) return Gradient1Enum; 854 else if (strcmp(name,"Gradient2")==0) return Gradient2Enum; 855 else if (strcmp(name,"Gradient3")==0) return Gradient3Enum; 856 else if (strcmp(name,"Gradient")==0) return GradientEnum; 857 else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum; 858 else if (strcmp(name,"Gset")==0) return GsetEnum; 859 else if (strcmp(name,"Index")==0) return IndexEnum; 860 else if (strcmp(name,"Indexed")==0) return IndexedEnum; 861 else if (strcmp(name,"Intersect")==0) return IntersectEnum; 862 else if (strcmp(name,"Nodal")==0) return NodalEnum; 863 else if (strcmp(name,"OldGradient")==0) return OldGradientEnum; 864 else if (strcmp(name,"OutputFilePointer")==0) return OutputFilePointerEnum; 865 else if (strcmp(name,"PetscOptionsAnalyses")==0) return PetscOptionsAnalysesEnum; 866 else if (strcmp(name,"PetscOptionsStrings")==0) return PetscOptionsStringsEnum; 867 else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum; 868 else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum; 869 else if (strcmp(name,"QmuOutName")==0) return QmuOutNameEnum; 870 else if (strcmp(name,"Regular")==0) return RegularEnum; 871 else if (strcmp(name,"Scaled")==0) return ScaledEnum; 872 else if (strcmp(name,"Separate")==0) return SeparateEnum; 873 else if (strcmp(name,"Sset")==0) return SsetEnum; 874 else if (strcmp(name,"Verbose")==0) return VerboseEnum; 875 else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum; 876 else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum; 877 else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum; 878 else if (strcmp(name,"XY")==0) return XYEnum; 879 else if (strcmp(name,"XYZP")==0) return XYZPEnum; 880 else if (strcmp(name,"Option")==0) return OptionEnum; 881 else if (strcmp(name,"OptionCell")==0) return OptionCellEnum; 882 else if (strcmp(name,"OptionChar")==0) return OptionCharEnum; 883 else if (strcmp(name,"OptionStruct")==0) return OptionStructEnum; 884 else if (strcmp(name,"OptionDouble")==0) return OptionDoubleEnum; 885 else if (strcmp(name,"OptionLogical")==0) return OptionLogicalEnum; 886 else if (strcmp(name,"Paterson")==0) return PatersonEnum; 887 else if (strcmp(name,"Arrhenius")==0) return ArrheniusEnum; 888 else stage=5; 889 } 890 /*If we reach this point, the string provided has not been found*/ 891 _error_("Enum %s not found",name); 446 892 } -
issm/trunk-jpl-damage/src/c/objects/Elements/Penta.cpp
r11409 r11417 769 769 } 770 770 /*}}}*/ 771 <<<<<<< .working 772 ======= 773 /*FUNCTION Penta::CreateJacobianMatrix{{{1*/ 774 void Penta::CreateJacobianMatrix(Mat Jff){ 775 776 /*retrieve parameters: */ 777 ElementMatrix* Ke=NULL; 778 int analysis_type; 779 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 780 781 /*Checks in debugging {{{2*/ 782 _assert_(this->nodes && this->matice && this->matpar && this->verticalneighbors && this->parameters && this->inputs); 783 /*}}}*/ 784 785 /*Skip if water element*/ 786 if(IsOnWater()) return; 787 788 /*Just branch to the correct element stiffness matrix generator, according to the type of analysis we are carrying out: */ 789 switch(analysis_type){ 790 #ifdef _HAVE_DIAGNOSTIC_ 791 case DiagnosticHorizAnalysisEnum: 792 Ke=CreateJacobianDiagnosticHoriz(); 793 break; 794 #endif 795 default: 796 _error_("analysis %i (%s) not supported yet",analysis_type,EnumToStringx(analysis_type)); 797 } 798 799 /*Add to global matrix*/ 800 if(Ke){ 801 Ke->AddToGlobal(Jff); 802 delete Ke; 803 } 804 } 805 /*}}}*/ 806 >>>>>>> .merge-right.r11410 771 807 /*FUNCTION Penta::DeepEcho{{{1*/ 772 808 void Penta::DeepEcho(void){ … … 1099 1135 /*}}}*/ 1100 1136 /*FUNCTION Penta::GetStabilizationParameter {{{1*/ 1101 double Penta::GetStabilizationParameter(double u, double v, double w, double diameter, double rho_ice, double heatcapacity, double thermalconductivity){1137 double Penta::GetStabilizationParameter(double u, double v, double w, double diameter, double kappa){ 1102 1138 /*Compute stabilization parameter*/ 1139 /*kappa=thermalconductivity/(rho_ice*hearcapacity) for thermal model*/ 1140 /*kappa=enthalpydiffusionparameter for enthalpy model*/ 1103 1141 1104 1142 double normu; … … 1106 1144 1107 1145 normu=pow(pow(u,2)+pow(v,2)+pow(w,2),0.5); 1108 if(normu*diameter/(3*2* thermalconductivity/(rho_ice*heatcapacity))<1){1109 tau_parameter=pow(diameter,2)/(3*2*2* thermalconductivity/(rho_ice*heatcapacity));1146 if(normu*diameter/(3*2*kappa)<1){ 1147 tau_parameter=pow(diameter,2)/(3*2*2*kappa); 1110 1148 } 1111 1149 else tau_parameter=diameter/(2*normu); … … 3283 3321 GetBprimeAdvec(&Bprime_advec[0][0],&xyz_list[0][0],gauss); 3284 3322 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 vx_input->GetInputValue(&u, gauss); vxm_input->GetInputValue(&um,gauss); vx=u-um; 3324 vy_input->GetInputValue(&v, gauss); vym_input->GetInputValue(&vm,gauss); vy=v-vm; 3325 vz_input->GetInputValue(&w, gauss); vzm_input->GetInputValue(&wm,gauss); vz=w-wm; 3292 3326 3293 3327 D_scalar_advec=gauss->weight*Jdet; … … 3321 3355 vel=sqrt(pow(vx,2.)+pow(vy,2.)+pow(vz,2.))+1.e-14; 3322 3356 h=sqrt( pow(hx*vx/vel,2.) + pow(hy*vy/vel,2.) + pow(hz*vz/vel,2.)); 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 K[0][0]=h/(2*vel)*vx*vx; K[0][1]=h/(2*vel)*vx*vy; K[0][2]=h/(2*vel)*vx*vz; 3358 K[1][0]=h/(2*vel)*vy*vx; K[1][1]=h/(2*vel)*vy*vy; K[1][2]=h/(2*vel)*vy*vz; 3359 K[2][0]=h/(2*vel)*vz*vx; K[2][1]=h/(2*vel)*vz*vy; K[2][2]=h/(2*vel)*vz*vz; 3326 3360 D_scalar_stab=gauss->weight*Jdet; 3327 3361 if(dt) D_scalar_stab=D_scalar_stab*dt; … … 3337 3371 else if(stabilization==2){ 3338 3372 GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss); 3339 tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter, rho_ice,heatcapacity,thermalconductivity);3373 tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter,kappa); 3340 3374 3341 3375 for(i=0;i<numdof;i++){ … … 3451 3485 double Jdet,u,v,w,um,vm,wm,vel; 3452 3486 double h,hx,hy,hz,vx,vy,vz; 3453 double gravity,rho_ice,rho_water ;3487 double gravity,rho_ice,rho_water,kappa; 3454 3488 double heatcapacity,thermalconductivity,dt; 3455 3489 double tau_parameter,diameter; … … 3477 3511 heatcapacity=matpar->GetHeatCapacity(); 3478 3512 thermalconductivity=matpar->GetThermalConductivity(); 3513 kappa=thermalconductivity/(rho_ice*heatcapacity); 3479 3514 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 3480 3515 this->parameters->FindParam(&stabilization,ThermalStabilizationEnum); … … 3499 3534 GetBConduct(&B_conduct[0][0],&xyz_list[0][0],gauss); 3500 3535 3501 D_scalar_conduct=gauss->weight*Jdet* (thermalconductivity/(rho_ice*heatcapacity));3536 D_scalar_conduct=gauss->weight*Jdet*kappa; 3502 3537 if(dt) D_scalar_conduct=D_scalar_conduct*dt; 3503 3538 … … 3568 3603 else if(stabilization==2){ 3569 3604 GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss); 3570 tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter, rho_ice,heatcapacity,thermalconductivity);3605 tau_parameter=GetStabilizationParameter(u-um,v-vm,w-wm,diameter,kappa); 3571 3606 3572 3607 for(i=0;i<numdof;i++){ … … 3673 3708 double Jdet,phi,dt; 3674 3709 double rho_ice,heatcapacity; 3675 double thermalconductivity; 3676 double viscosity,enthalpy; 3710 double thermalconductivity,kappa; 3711 double viscosity,pressure; 3712 double enthalpy,enthalpypicard; 3677 3713 double tau_parameter,diameter; 3678 3714 double u,v,w; … … 3695 3731 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 3696 3732 this->parameters->FindParam(&stabilization,ThermalStabilizationEnum); 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); 3733 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 3734 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 3735 Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input); 3736 Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input); 3737 Input* enthalpy_input=NULL; 3738 Input* enthalpypicard_input=NULL; 3739 if(dt){ 3740 enthalpy_input=inputs->GetInput(EnthalpyEnum); _assert_(enthalpy_input); 3741 } 3742 if (stabilization==2){ 3743 diameter=MinEdgeLength(xyz_list); 3744 enthalpypicard_input=inputs->GetInput(EnthalpyPicardEnum); _assert_(enthalpypicard_input); 3745 } 3703 3746 3704 3747 /* Start looping on the number of gaussian points: */ … … 3715 3758 GetPhi(&phi, &epsilon[0], viscosity); 3716 3759 3717 scalar_def=phi/ (rho_ice)*Jdet*gauss->weight;3760 scalar_def=phi/rho_ice*Jdet*gauss->weight; 3718 3761 if(dt) scalar_def=scalar_def*dt; 3719 3762 … … 3733 3776 vy_input->GetInputValue(&v, gauss); 3734 3777 vz_input->GetInputValue(&w, gauss); 3735 3736 tau_parameter=GetStabilizationParameter(u,v,w,diameter,rho_ice,heatcapacity,thermalconductivity); 3778 pressure_input->GetInputValue(&pressure, gauss); 3779 enthalpypicard_input->GetInputValue(&enthalpypicard, gauss); 3780 kappa=matpar->GetEnthalpyDiffusionParameter(enthalpy,pressure); 3781 tau_parameter=GetStabilizationParameter(u,v,w,diameter,kappa); 3737 3782 3738 3783 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]); … … 3819 3864 double rho_ice,heatcapacity,geothermalflux_value; 3820 3865 double basalfriction,alpha2,vx,vy; 3866 double scalar,enthalpy,enthalpyup; 3867 double pressure,pressureup; 3868 double basis[NUMVERTICES]; 3869 Friction* friction=NULL; 3870 GaussPenta* gauss=NULL; 3871 GaussPenta* gaussup=NULL; 3872 3873 /* Geothermal flux on ice sheet base and basal friction */ 3874 if (!IsOnBed() || IsFloating()) return NULL; 3875 3876 /*Initialize Element vector*/ 3877 ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters); 3878 3879 /*Retrieve all inputs and parameters*/ 3880 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 3881 for(i=0;i<NUMVERTICES2D;i++) for(j=0;j<2;j++) xyz_list_tria[i][j]=xyz_list[i][j]; 3882 parameters->FindParam(&analysis_type,AnalysisTypeEnum); 3883 rho_ice=matpar->GetRhoIce(); 3884 heatcapacity=matpar->GetHeatCapacity(); 3885 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 3886 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 3887 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 3888 Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input); 3889 Input* enthalpy_input=inputs->GetInput(EnthalpyEnum); _assert_(enthalpy_input); 3890 Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input); 3891 Input* geothermalflux_input=inputs->GetInput(BasalforcingsGeothermalfluxEnum); _assert_(geothermalflux_input); 3892 3893 /*Build frictoin element, needed later: */ 3894 friction=new Friction("3d",inputs,matpar,analysis_type); 3895 3896 /* Start looping on the number of gauss 2d (nodes on the bedrock) */ 3897 gauss=new GaussPenta(0,1,2,2); 3898 gaussup=new GaussPenta(3,4,5,2); 3899 for(ig=gauss->begin();ig<gauss->end();ig++){ 3900 3901 gauss->GaussPoint(ig); 3902 gaussup->GaussPoint(ig); 3903 3904 GetTriaJacobianDeterminant(&Jdet2d, &xyz_list_tria[0][0], gauss); 3905 GetNodalFunctionsP1(&basis[0], gauss); 3906 3907 enthalpy_input->GetInputValue(&enthalpy,gauss); 3908 pressure_input->GetInputValue(&pressure,gauss); 3909 // if(enthalpy>matpar->PureIceEnthalpy(pressure)){ 3910 // enthalpy_input->GetInputValue(&enthalpyup,gaussup); 3911 // pressure_input->GetInputValue(&pressureup,gaussup); 3912 // if(enthalpyup>matpar->PureIceEnthalpy(pressureup)){ 3913 // //do nothing, don't add heatflux 3914 // } 3915 // else{ 3916 // //need to change spcenthalpy according to Aschwanden 3917 // //NEED TO UPDATE 3918 // } 3919 // } 3920 // else{ 3921 geothermalflux_input->GetInputValue(&geothermalflux_value,gauss); 3922 friction->GetAlpha2(&alpha2,gauss,VxEnum,VyEnum,VzEnum); 3923 vx_input->GetInputValue(&vx,gauss); 3924 vy_input->GetInputValue(&vy,gauss); 3925 basalfriction=alpha2*(pow(vx,2.0)+pow(vy,2.0)); 3926 3927 scalar=gauss->weight*Jdet2d*(basalfriction+geothermalflux_value)/(rho_ice); 3928 if(dt) scalar=dt*scalar; 3929 3930 for(i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i]; 3931 // } 3932 } 3933 3934 /*Clean up and return*/ 3935 delete gauss; 3936 delete gaussup; 3937 delete friction; 3938 return pe; 3939 } 3940 /*}}}*/ 3941 /*FUNCTION Penta::CreatePVectorMelting {{{1*/ 3942 ElementVector* Penta::CreatePVectorMelting(void){ 3943 return NULL; 3944 } 3945 /*}}}*/ 3946 /*FUNCTION Penta::CreatePVectorThermal {{{1*/ 3947 ElementVector* Penta::CreatePVectorThermal(void){ 3948 3949 /*compute all load vectors for this element*/ 3950 ElementVector* pe1=CreatePVectorThermalVolume(); 3951 ElementVector* pe2=CreatePVectorThermalSheet(); 3952 ElementVector* pe3=CreatePVectorThermalShelf(); 3953 ElementVector* pe =new ElementVector(pe1,pe2,pe3); 3954 3955 /*clean-up and return*/ 3956 delete pe1; 3957 delete pe2; 3958 delete pe3; 3959 return pe; 3960 } 3961 /*}}}*/ 3962 /*FUNCTION Penta::CreatePVectorThermalVolume {{{1*/ 3963 ElementVector* Penta::CreatePVectorThermalVolume(void){ 3964 3965 /*Constants*/ 3966 const int numdof=NUMVERTICES*NDOF1; 3967 3968 /*Intermediaries*/ 3969 int i,j,ig,found=0; 3970 int friction_type,stabilization; 3971 double Jdet,phi,dt; 3972 double rho_ice,heatcapacity; 3973 double thermalconductivity,kappa; 3974 double viscosity,temperature; 3975 double tau_parameter,diameter; 3976 double u,v,w; 3977 double scalar_def,scalar_transient; 3978 double temperature_list[NUMVERTICES]; 3979 double xyz_list[NUMVERTICES][3]; 3980 double L[numdof]; 3981 double dbasis[3][6]; 3982 double epsilon[6]; 3983 GaussPenta *gauss=NULL; 3984 3985 /*Initialize Element vector*/ 3986 ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters); 3987 3988 /*Retrieve all inputs and parameters*/ 3989 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 3990 rho_ice=matpar->GetRhoIce(); 3991 heatcapacity=matpar->GetHeatCapacity(); 3992 thermalconductivity=matpar->GetThermalConductivity(); 3993 kappa=thermalconductivity/(rho_ice*heatcapacity); 3994 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 3995 this->parameters->FindParam(&stabilization,ThermalStabilizationEnum); 3996 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 3997 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 3998 Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input); 3999 Input* temperature_input=NULL; 4000 if (dt) temperature_input=inputs->GetInput(TemperatureEnum); _assert_(inputs); 4001 if (stabilization==2) diameter=MinEdgeLength(xyz_list); 4002 4003 /* Start looping on the number of gaussian points: */ 4004 gauss=new GaussPenta(2,3); 4005 for (ig=gauss->begin();ig<gauss->end();ig++){ 4006 4007 gauss->GaussPoint(ig); 4008 4009 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss); 4010 GetNodalFunctionsP1(&L[0], gauss); 4011 4012 this->GetStrainRate3d(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input,vz_input); 4013 matice->GetViscosity3dStokes(&viscosity,&epsilon[0]); 4014 GetPhi(&phi, &epsilon[0], viscosity); 4015 4016 scalar_def=phi/(rho_ice*heatcapacity)*Jdet*gauss->weight; 4017 if(dt) scalar_def=scalar_def*dt; 4018 4019 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=scalar_def*L[i]; 4020 4021 /* Build transient now */ 4022 if(dt){ 4023 temperature_input->GetInputValue(&temperature, gauss); 4024 scalar_transient=temperature*Jdet*gauss->weight; 4025 for(i=0;i<NUMVERTICES;i++) pe->values[i]+=scalar_transient*L[i]; 4026 } 4027 4028 if(stabilization==2){ 4029 GetNodalFunctionsP1Derivatives(&dbasis[0][0],&xyz_list[0][0], gauss); 4030 4031 vx_input->GetInputValue(&u, gauss); 4032 vy_input->GetInputValue(&v, gauss); 4033 vz_input->GetInputValue(&w, gauss); 4034 4035 tau_parameter=GetStabilizationParameter(u,v,w,diameter,kappa); 4036 4037 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]); 4038 if(dt){ 4039 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]); 4040 } 4041 } 4042 } 4043 4044 /*Clean up and return*/ 4045 delete gauss; 4046 return pe; 4047 } 4048 /*}}}*/ 4049 /*FUNCTION Penta::CreatePVectorThermalShelf {{{1*/ 4050 ElementVector* Penta::CreatePVectorThermalShelf(void){ 4051 4052 /*Constants*/ 4053 const int numdof=NUMVERTICES*NDOF1; 4054 4055 /*Intermediaries */ 4056 int i,j,ig; 4057 double Jdet2d; 4058 double mixed_layer_capacity,thermal_exchange_velocity; 4059 double rho_ice,rho_water,pressure,dt,scalar_ocean; 4060 double heatcapacity,t_pmp; 4061 double xyz_list[NUMVERTICES][3]; 4062 double xyz_list_tria[NUMVERTICES2D][3]; 4063 double basis[NUMVERTICES]; 4064 GaussPenta* gauss=NULL; 4065 4066 /* Ice/ocean heat exchange flux on ice shelf base */ 4067 if (!IsOnBed() || !IsFloating()) return NULL; 4068 4069 /*Initialize Element vector*/ 4070 ElementVector* pe=new ElementVector(nodes,NUMVERTICES,this->parameters); 4071 4072 /*Retrieve all inputs and parameters*/ 4073 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 4074 for(i=0;i<NUMVERTICES2D;i++) for(j=0;j<3;j++) xyz_list_tria[i][j]=xyz_list[i][j]; 4075 mixed_layer_capacity=matpar->GetMixedLayerCapacity(); 4076 thermal_exchange_velocity=matpar->GetThermalExchangeVelocity(); 4077 rho_water=matpar->GetRhoWater(); 4078 rho_ice=matpar->GetRhoIce(); 4079 heatcapacity=matpar->GetHeatCapacity(); 4080 this->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 4081 Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input); 4082 4083 /* Start looping on the number of gauss 2d (nodes on the bedrock) */ 4084 gauss=new GaussPenta(0,1,2,2); 4085 for(ig=gauss->begin();ig<gauss->end();ig++){ 4086 4087 gauss->GaussPoint(ig); 4088 4089 GetTriaJacobianDeterminant(&Jdet2d, &xyz_list_tria[0][0], gauss); 4090 GetNodalFunctionsP1(&basis[0], gauss); 4091 4092 pressure_input->GetInputValue(&pressure,gauss); 4093 t_pmp=matpar->TMeltingPoint(pressure); 4094 4095 scalar_ocean=gauss->weight*Jdet2d*rho_water*mixed_layer_capacity*thermal_exchange_velocity*(t_pmp)/(heatcapacity*rho_ice); 4096 if(dt) scalar_ocean=dt*scalar_ocean; 4097 4098 for(i=0;i<numdof;i++) pe->values[i]+=scalar_ocean*basis[i]; 4099 } 4100 4101 /*Clean up and return*/ 4102 delete gauss; 4103 return pe; 4104 } 4105 /*}}}*/ 4106 /*FUNCTION Penta::CreatePVectorThermalSheet {{{1*/ 4107 ElementVector* Penta::CreatePVectorThermalSheet(void){ 4108 4109 /*Constants*/ 4110 const int numdof=NUMVERTICES*NDOF1; 4111 4112 /*Intermediaries */ 4113 int i,j,ig; 4114 int analysis_type; 4115 double xyz_list[NUMVERTICES][3]; 4116 double xyz_list_tria[NUMVERTICES2D][3]={0.0}; 4117 double Jdet2d,dt; 4118 double rho_ice,heatcapacity,geothermalflux_value; 4119 double basalfriction,alpha2,vx,vy; 4120 double basis[NUMVERTICES]; 3821 4121 double scalar; 3822 double basis[NUMVERTICES];3823 4122 Friction* friction=NULL; 3824 4123 GaussPenta* gauss=NULL; … … 3854 4153 GetNodalFunctionsP1(&basis[0], gauss); 3855 4154 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]; 4155 geothermalflux_input->GetInputValue(&geothermalflux_value,gauss); 4156 friction->GetAlpha2(&alpha2,gauss,VxEnum,VyEnum,VzEnum); 4157 vx_input->GetInputValue(&vx,gauss); 4158 vy_input->GetInputValue(&vy,gauss); 4159 basalfriction=alpha2*(pow(vx,2.0)+pow(vy,2.0)); 4160 4161 scalar=gauss->weight*Jdet2d*(basalfriction+geothermalflux_value)/(heatcapacity*rho_ice); 4162 if(dt) scalar=dt*scalar; 4163 4164 for(i=0;i<numdof;i++) pe->values[i]+=scalar*basis[i]; 4097 4165 } 4098 4166 … … 4271 4339 if(converged){ 4272 4340 /*Convert enthalpy into temperature and water fraction*/ 4341 <<<<<<< .working 4273 4342 for(i=0;i<numdof;i++) matpar->EnthalpyToThermal(&temperatures[i],&waterfraction[i],values[i],pressure[i]); 4343 ======= 4344 for(i=0;i<numdof;i++){ 4345 matpar->EnthalpyToThermal(&temperatures[i],&waterfraction[i],values[i],pressure[i]); 4346 if(waterfraction[i]<0) _error_("Negative water fraction found in solution vector"); 4347 //if(waterfraction[i]>1) _error_("Water fraction >1 found in solution vector"); 4348 } 4349 >>>>>>> .merge-right.r11410 4274 4350 4275 4351 this->inputs->AddInput(new PentaP1Input(EnthalpyEnum,values)); … … 7319 7395 } 7320 7396 /*}}}*/ 7397 /*FUNCTION Penta::CreateJacobianDiagnosticHoriz{{{1*/ 7398 ElementMatrix* Penta::CreateJacobianDiagnosticHoriz(void){ 7399 7400 int approximation; 7401 inputs->GetInputValue(&approximation,ApproximationEnum); 7402 7403 switch(approximation){ 7404 case MacAyealApproximationEnum: 7405 return CreateJacobianDiagnosticMacayeal2d(); 7406 case PattynApproximationEnum: 7407 return CreateJacobianDiagnosticPattyn(); 7408 case StokesApproximationEnum: 7409 return CreateJacobianDiagnosticStokes(); 7410 case NoneApproximationEnum: 7411 return NULL; 7412 default: 7413 _error_("Approximation %s not supported yet",EnumToStringx(approximation)); 7414 } 7415 } 7416 /*}}}*/ 7417 /*FUNCTION Penta::CreateJacobianDiagnosticMacayeal2d{{{1*/ 7418 ElementMatrix* Penta::CreateJacobianDiagnosticMacayeal2d(void){ 7419 7420 /*Figure out if this penta is collapsed. If so, then bailout, except if it is at the 7421 bedrock, in which case we spawn a tria element using the 3 first nodes, and use it to build 7422 the stiffness matrix. */ 7423 if (!IsOnBed()) return NULL; 7424 7425 /*Depth Averaging B*/ 7426 this->InputDepthAverageAtBase(MaterialsRheologyBEnum,MaterialsRheologyBbarEnum,MaterialsEnum); 7427 7428 /*Call Tria function*/ 7429 Tria* tria=(Tria*)SpawnTria(0,1,2); //nodes 0, 1 and 2 make the new tria. 7430 ElementMatrix* Ke=tria->CreateJacobianDiagnosticMacayeal(); 7431 delete tria->matice; delete tria; 7432 7433 /*Delete B averaged*/ 7434 this->matice->inputs->DeleteInput(MaterialsRheologyBbarEnum); 7435 7436 /*clean up and return*/ 7437 return Ke; 7438 } 7439 /*}}}*/ 7440 /*FUNCTION Penta::CreateJacobianDiagnosticPattyn{{{1*/ 7441 ElementMatrix* Penta::CreateJacobianDiagnosticPattyn(void){ 7442 7443 /*Constants*/ 7444 const int numdof=NDOF2*NUMVERTICES; 7445 7446 /*Intermediaries */ 7447 int i,j,ig; 7448 double xyz_list[NUMVERTICES][3]; 7449 double Jdet; 7450 double eps1dotdphii,eps1dotdphij; 7451 double eps2dotdphii,eps2dotdphij; 7452 double mu_prime; 7453 double epsilon[5]; /* epsilon=[exx,eyy,exy,exz,eyz];*/ 7454 double eps1[3],eps2[3]; 7455 double phi[NUMVERTICES]; 7456 double dphi[3][NUMVERTICES]; 7457 GaussPenta *gauss=NULL; 7458 7459 /*Initialize Jacobian with regular Pattyn (first part of the Gateau derivative)*/ 7460 ElementMatrix* Ke=CreateKMatrixDiagnosticPattyn(); 7461 7462 /*Retrieve all inputs and parameters*/ 7463 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 7464 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 7465 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 7466 7467 /* Start looping on the number of gaussian points: */ 7468 gauss=new GaussPenta(5,5); 7469 for (ig=gauss->begin();ig<gauss->end();ig++){ 7470 7471 gauss->GaussPoint(ig); 7472 7473 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss); 7474 GetNodalFunctionsP1Derivatives(&dphi[0][0],&xyz_list[0][0],gauss); 7475 7476 this->GetStrainRate3dPattyn(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input); 7477 matice->GetViscosityDerivativeEpsSquare(&mu_prime,&epsilon[0]); 7478 eps1[0]=2*epsilon[0]+epsilon[1]; eps2[0]=epsilon[2]; 7479 eps1[1]=epsilon[2]; eps2[1]=epsilon[0]+2*epsilon[1]; 7480 eps1[2]=epsilon[3]; eps2[2]=epsilon[4]; 7481 7482 for(i=0;i<6;i++){ 7483 for(j=0;j<6;j++){ 7484 eps1dotdphii=eps1[0]*dphi[0][i]+eps1[1]*dphi[1][i]+eps1[2]*dphi[2][i]; 7485 eps1dotdphij=eps1[0]*dphi[0][j]+eps1[1]*dphi[1][j]+eps1[2]*dphi[2][j]; 7486 eps2dotdphii=eps2[0]*dphi[0][i]+eps2[1]*dphi[1][i]+eps2[2]*dphi[2][i]; 7487 eps2dotdphij=eps2[0]*dphi[0][j]+eps2[1]*dphi[1][j]+eps2[2]*dphi[2][j]; 7488 7489 Ke->values[12*(2*i+0)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii; 7490 Ke->values[12*(2*i+0)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii; 7491 Ke->values[12*(2*i+1)+2*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii; 7492 Ke->values[12*(2*i+1)+2*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii; 7493 } 7494 } 7495 } 7496 7497 /*Transform Coordinate System*/ 7498 TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,XYEnum); 7499 7500 /*Clean up and return*/ 7501 delete gauss; 7502 return Ke; 7503 } 7504 /*}}}*/ 7505 /*FUNCTION Penta::CreateJacobianDiagnosticStokes{{{1*/ 7506 ElementMatrix* Penta::CreateJacobianDiagnosticStokes(void){ 7507 7508 /*Constants*/ 7509 const int numdof=NDOF4*NUMVERTICES; 7510 7511 /*Intermediaries */ 7512 int i,j,ig; 7513 double xyz_list[NUMVERTICES][3]; 7514 double Jdet; 7515 double eps1dotdphii,eps1dotdphij; 7516 double eps2dotdphii,eps2dotdphij; 7517 double eps3dotdphii,eps3dotdphij; 7518 double mu_prime; 7519 double epsilon[5]; /* epsilon=[exx,eyy,exy,exz,eyz];*/ 7520 double eps1[3],eps2[3],eps3[3]; 7521 double phi[NUMVERTICES]; 7522 double dphi[3][NUMVERTICES]; 7523 GaussPenta *gauss=NULL; 7524 7525 /*Initialize Jacobian with regular Stokes (first part of the Gateau derivative)*/ 7526 ElementMatrix* Ke=CreateKMatrixDiagnosticStokes(); 7527 7528 /*Retrieve all inputs and parameters*/ 7529 GetVerticesCoordinates(&xyz_list[0][0], nodes, NUMVERTICES); 7530 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 7531 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 7532 Input* vz_input=inputs->GetInput(VzEnum); _assert_(vz_input); 7533 7534 /* Start looping on the number of gaussian points: */ 7535 gauss=new GaussPenta(5,5); 7536 for (ig=gauss->begin();ig<gauss->end();ig++){ 7537 7538 gauss->GaussPoint(ig); 7539 7540 GetJacobianDeterminant(&Jdet, &xyz_list[0][0],gauss); 7541 GetNodalFunctionsP1Derivatives(&dphi[0][0],&xyz_list[0][0],gauss); 7542 7543 this->GetStrainRate3dPattyn(&epsilon[0],&xyz_list[0][0],gauss,vx_input,vy_input); 7544 matice->GetViscosityDerivativeEpsSquare(&mu_prime,&epsilon[0]); 7545 eps1[0]=epsilon[0]; eps2[0]=epsilon[2]; eps3[0]=epsilon[3]; 7546 eps1[1]=epsilon[2]; eps2[1]=epsilon[1]; eps3[1]=epsilon[4]; 7547 eps1[2]=epsilon[3]; eps2[2]=epsilon[4]; eps3[2]= -epsilon[0] -epsilon[1]; 7548 7549 for(i=0;i<6;i++){ 7550 for(j=0;j<6;j++){ 7551 eps1dotdphii=eps1[0]*dphi[0][i]+eps1[1]*dphi[1][i]+eps1[2]*dphi[2][i]; 7552 eps1dotdphij=eps1[0]*dphi[0][j]+eps1[1]*dphi[1][j]+eps1[2]*dphi[2][j]; 7553 eps2dotdphii=eps2[0]*dphi[0][i]+eps2[1]*dphi[1][i]+eps2[2]*dphi[2][i]; 7554 eps2dotdphij=eps2[0]*dphi[0][j]+eps2[1]*dphi[1][j]+eps2[2]*dphi[2][j]; 7555 eps3dotdphii=eps3[0]*dphi[0][i]+eps3[1]*dphi[1][i]+eps3[2]*dphi[2][i]; 7556 eps3dotdphij=eps3[0]*dphi[0][j]+eps3[1]*dphi[1][j]+eps3[2]*dphi[2][j]; 7557 7558 Ke->values[numdof*(4*i+0)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps1dotdphii; 7559 Ke->values[numdof*(4*i+0)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps1dotdphii; 7560 Ke->values[numdof*(4*i+0)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps1dotdphii; 7561 7562 Ke->values[numdof*(4*i+1)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps2dotdphii; 7563 Ke->values[numdof*(4*i+1)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps2dotdphii; 7564 Ke->values[numdof*(4*i+1)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps2dotdphii; 7565 7566 Ke->values[numdof*(4*i+2)+4*j+0]+=gauss->weight*Jdet*2*mu_prime*eps1dotdphij*eps3dotdphii; 7567 Ke->values[numdof*(4*i+2)+4*j+1]+=gauss->weight*Jdet*2*mu_prime*eps2dotdphij*eps3dotdphii; 7568 Ke->values[numdof*(4*i+2)+4*j+2]+=gauss->weight*Jdet*2*mu_prime*eps3dotdphij*eps3dotdphii; 7569 } 7570 } 7571 } 7572 7573 /*Transform Coordinate System*/ 7574 TransformStiffnessMatrixCoord(Ke,nodes,NUMVERTICES,XYZPEnum); 7575 7576 /*Clean up and return*/ 7577 delete gauss; 7578 return Ke; 7579 } 7580 /*}}}*/ 7321 7581 /*FUNCTION Penta::GetSolutionFromInputsDiagnosticHoriz{{{1*/ 7322 7582 void Penta::GetSolutionFromInputsDiagnosticHoriz(Vec solution){ -
issm/trunk-jpl-damage/src/c/objects/Elements/Penta.h
r11260 r11417 179 179 void GetPhi(double* phi, double* epsilon, double viscosity); 180 180 void GetSolutionFromInputsEnthalpy(Vec solutiong); 181 double GetStabilizationParameter(double u, double v, double w, double diameter, double rho_ice, double heatcapacity, double thermalconductivity);181 double GetStabilizationParameter(double u, double v, double w, double diameter, double kappa); 182 182 void GetStrainRate3dPattyn(double* epsilon,double* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input); 183 183 void GetStrainRate3d(double* epsilon,double* xyz_list, GaussPenta* gauss, Input* vx_input, Input* vy_input, Input* vz_input); … … 231 231 ElementMatrix* CreateKMatrixDiagnosticVertVolume(void); 232 232 ElementMatrix* CreateKMatrixDiagnosticVertSurface(void); 233 <<<<<<< .working 234 ======= 235 ElementMatrix* CreateJacobianDiagnosticHoriz(void); 236 ElementMatrix* CreateJacobianDiagnosticMacayeal2d(void); 237 ElementMatrix* CreateJacobianDiagnosticPattyn(void); 238 >>>>>>> .merge-right.r11410 239 ElementMatrix* CreateJacobianDiagnosticStokes(void); 233 240 void InputUpdateFromSolutionDiagnosticHoriz( double* solutiong); 234 241 void InputUpdateFromSolutionDiagnosticMacAyeal( double* solutiong); -
issm/trunk-jpl-damage/src/c/objects/Elements/Tria.cpp
r11375 r11417 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 #endif 912 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 } 888 921 } 889 922 /*}}}*/ … … 3031 3064 } 3032 3065 /*}}}*/ 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->GetViscosity2dDerivativeEpsSquare(&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 /*}}}*/ 3033 3132 /*FUNCTION Tria::GetSolutionFromInputsDiagnosticHoriz{{{1*/ 3034 3133 void Tria::GetSolutionFromInputsDiagnosticHoriz(Vec solution){ … … 3332 3431 /*dJ/dalpha = ∂L/∂alpha = ∂J/∂alpha + ∂/∂alpha(KU-F)*/ 3333 3432 3334 /*If on water, grad = 0: */3335 if(IsOnWater()) return; 3433 /*If on water, grad = 0: (WHY???) */ 3434 if(IsOnWater()) return; 3336 3435 3337 3436 /*First deal with ∂/∂alpha(KU-F)*/ -
issm/trunk-jpl-damage/src/c/objects/Elements/Tria.h
r11375 r11417 84 84 void CreateKMatrix(Mat Kff, Mat Kfs,Vec df); 85 85 void CreatePVector(Vec pf); 86 <<<<<<< .working 87 ======= 88 void CreateJacobianMatrix(Mat Jff); 89 >>>>>>> .merge-right.r11410 86 90 int GetNodeIndex(Node* node); 87 91 int Sid(); … … 206 210 ElementVector* CreatePVectorDiagnosticMacAyeal(void); 207 211 ElementVector* CreatePVectorDiagnosticHutter(void); 212 ElementMatrix* CreateJacobianDiagnosticMacayeal(void); 208 213 void GetSolutionFromInputsDiagnosticHoriz(Vec solution); 209 214 void GetSolutionFromInputsDiagnosticHutter(Vec solution); -
issm/trunk-jpl-damage/src/c/objects/KML/KML_File.cpp
r11202 r11417 24 24 KML_File::KML_File(){ 25 25 26 kmlobj =new DataSet;26 ; 27 27 28 28 } … … 31 31 KML_File::~KML_File(){ 32 32 33 if (kmlobj) { 34 delete kmlobj; 35 kmlobj =NULL; 36 } 33 ; 37 34 38 35 } … … 47 44 _printf_(flag,"KML_File:\n"); 48 45 KML_Object::Echo(); 49 50 _printf_(flag," kmlobj: (size=%d)\n" ,kmlobj->Size());51 46 52 47 return; … … 66 61 void KML_File::DeepEcho(const char* indent){ 67 62 68 int i;69 char indent2[81];70 63 bool flag=true; 71 64 … … 73 66 KML_Object::DeepEcho(indent); 74 67 68 <<<<<<< .working 75 69 /* loop over the kml objects for the file */ 76 70 … … 88 82 _printf_(flag,"%s kmlobj: [empty]\n" ,indent); 89 83 84 ======= 85 >>>>>>> .merge-right.r11410 90 86 return; 91 87 } … … 93 89 /*FUNCTION KML_File::Write {{{1*/ 94 90 void KML_File::Write(FILE* filout,const char* indent){ 95 96 int i;97 char indent2[81];98 91 99 92 fprintf(filout,"%s<kml",indent); … … 103 96 104 97 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);114 98 115 99 fprintf(filout,"%s</kml>\n",indent); … … 145 129 _error_("KML_File::Read -- Unexpected field \"%s\".\n",kstri); 146 130 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 249 131 else if (!strncmp(kstri,"<",1)) 250 132 KML_Object::Read(fid,kstri); -
issm/trunk-jpl-damage/src/c/objects/KML/KML_File.h
r11202 r11417 19 19 20 20 public: 21 22 DataSet* kmlobj;23 21 24 22 /*KML_File constructors, destructors {{{1*/ -
issm/trunk-jpl-damage/src/c/objects/KML/KML_Object.cpp
r11202 r11417 26 26 attrib =new DataSet; 27 27 commnt =new DataSet; 28 <<<<<<< .working 29 ======= 30 kmlobj =new DataSet; 31 >>>>>>> .merge-right.r11410 28 32 29 33 } … … 40 44 commnt =NULL; 41 45 } 46 <<<<<<< .working 47 ======= 48 if (kmlobj) { 49 delete kmlobj; 50 kmlobj =NULL; 51 } 52 >>>>>>> .merge-right.r11410 42 53 43 54 } … … 52 63 _printf_(flag," attrib: (size=%d)\n" ,attrib->Size()); 53 64 _printf_(flag," commnt: (size=%d)\n" ,commnt->Size()); 65 <<<<<<< .working 66 ======= 67 _printf_(flag," kmlobj: (size=%d)\n" ,kmlobj->Size()); 68 >>>>>>> .merge-right.r11410 54 69 55 70 return; … … 70 85 71 86 int i; 87 char indent2[81]; 72 88 bool flag=true; 73 89 … … 90 106 _printf_(flag,"%s commnt: [empty]\n" ,indent); 91 107 108 <<<<<<< .working 109 ======= 110 /* loop over the unknown objects for the object */ 111 112 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 113 strcat(indent2," "); 114 115 if (kmlobj->Size()) 116 for (i=0; i<kmlobj->Size(); i++) { 117 _printf_(flag,"%s kmlobj: -------- begin [%d] --------\n" ,indent,i); 118 ((KML_Unknown *)kmlobj->GetObjectByOffset(i))->DeepEcho(indent2); 119 _printf_(flag,"%s kmlobj: -------- end [%d] --------\n" ,indent,i); 120 } 121 else 122 _printf_(flag,"%s kmlobj: [empty]\n" ,indent); 123 124 >>>>>>> .merge-right.r11410 92 125 return; 93 126 } … … 101 134 ; 102 135 136 <<<<<<< .working 137 ======= 138 memcpy(indent2,indent,(strlen(indent)+1)*sizeof(char)); 139 strcat(indent2," "); 140 141 if (kmlobj->Size()) 142 for (i=0; i<kmlobj->Size(); i++) { 143 ((KML_Unknown *)kmlobj->GetObjectByOffset(i))->Write(filout,indent2); 144 } 145 146 >>>>>>> .merge-right.r11410 103 147 return; 104 148 } … … 116 160 _error_("KML_Object::Read -- Unexpected field \"%s\".\n",kstr); 117 161 162 else if (!strncmp(kstr,"<Placemark",10)) { 163 kobj=(KML_Object*)new KML_Placemark(); 164 kobj->Read(fid,kstr); 165 kmlobj ->AddObject((Object*)kobj); 166 } 167 168 else if (!strncmp(kstr,"<Folder", 7)) { 169 kobj=(KML_Object*)new KML_Folder(); 170 kobj->Read(fid,kstr); 171 kmlobj ->AddObject((Object*)kobj); 172 } 173 174 else if (!strncmp(kstr,"<Document", 9)) { 175 kobj=(KML_Object*)new KML_Document(); 176 kobj->Read(fid,kstr); 177 kmlobj ->AddObject((Object*)kobj); 178 } 179 180 else if (!strncmp(kstr,"<GroundOverlay",14)) { 181 kobj=(KML_Object*)new KML_GroundOverlay(); 182 kobj->Read(fid,kstr); 183 kmlobj ->AddObject((Object*)kobj); 184 } 185 186 else if (!strncmp(kstr,"<LatLonBox",10)) { 187 kobj=(KML_Object*)new KML_LatLonBox(); 188 kobj->Read(fid,kstr); 189 kmlobj ->AddObject((Object*)kobj); 190 } 191 192 else if (!strncmp(kstr,"<Icon", 5)) { 193 kobj=(KML_Object*)new KML_Icon(); 194 kobj->Read(fid,kstr); 195 kmlobj ->AddObject((Object*)kobj); 196 } 197 198 else if (!strncmp(kstr,"<Point", 6)) { 199 kobj=(KML_Object*)new KML_Point(); 200 kobj->Read(fid,kstr); 201 kmlobj ->AddObject((Object*)kobj); 202 } 203 204 else if (!strncmp(kstr,"<LineString",11)) { 205 kobj=(KML_Object*)new KML_LineString(); 206 kobj->Read(fid,kstr); 207 kmlobj ->AddObject((Object*)kobj); 208 } 209 210 else if (!strncmp(kstr,"<LinearRing",11)) { 211 kobj=(KML_Object*)new KML_LinearRing(); 212 kobj->Read(fid,kstr); 213 kmlobj ->AddObject((Object*)kobj); 214 } 215 216 else if (!strncmp(kstr,"<Polygon", 8)) { 217 kobj=(KML_Object*)new KML_Polygon(); 218 kobj->Read(fid,kstr); 219 kmlobj ->AddObject((Object*)kobj); 220 } 221 222 else if (!strncmp(kstr,"<MultiGeometry",14)) { 223 kobj=(KML_Object*)new KML_MultiGeometry(); 224 kobj->Read(fid,kstr); 225 kmlobj ->AddObject((Object*)kobj); 226 } 227 228 // else if (!strncmp(kstr,"<IconStyle",10)) { 229 // kobj=(KML_Object*)new KML_IconStyle(); 230 // kobj->Read(fid,kstr); 231 // kmlobj ->AddObject((Object*)kobj); 232 // } 233 234 // else if (!strncmp(kstr,"<LabelStyle",11)) { 235 // kobj=(KML_Object*)new KML_LabelStyle(); 236 // kobj->Read(fid,kstr); 237 // kmlobj ->AddObject((Object*)kobj); 238 // } 239 240 else if (!strncmp(kstr,"<LineStyle",10)) { 241 kobj=(KML_Object*)new KML_LineStyle(); 242 kobj->Read(fid,kstr); 243 kmlobj ->AddObject((Object*)kobj); 244 } 245 246 else if (!strncmp(kstr,"<PolyStyle",10)) { 247 kobj=(KML_Object*)new KML_PolyStyle(); 248 kobj->Read(fid,kstr); 249 kmlobj ->AddObject((Object*)kobj); 250 } 251 252 // else if (!strncmp(kstr,"<BalloonStyle",13)) { 253 // kobj=(KML_Object*)new KML_BalloonStyle(); 254 // kobj->Read(fid,kstr); 255 // kmlobj ->AddObject((Object*)kobj); 256 // } 257 258 // else if (!strncmp(kstr,"<ListStyle",10)) { 259 // kobj=(KML_Object*)new KML_ListStyle(); 260 // kobj->Read(fid,kstr); 261 // kmlobj ->AddObject((Object*)kobj); 262 // } 263 118 264 else if (!strncmp(kstr,"<",1)) { 119 265 _printf_(true,"KML_Object::Read -- Unrecognized opening tag %s.\n",kstr); 266 <<<<<<< .working 120 267 KMLFileTagSkip(kstr, 121 268 fid); 269 ======= 270 // KMLFileTagSkip(kstr, 271 // fid); 272 kobj=(KML_Object*)new KML_Unknown(); 273 kobj->Read(fid,kstr); 274 kmlobj ->AddObject((Object*)kobj); 275 >>>>>>> .merge-right.r11410 122 276 } 123 277 -
issm/trunk-jpl-damage/src/c/objects/KML/KML_Object.h
r11202 r11417 21 21 DataSet* attrib; 22 22 DataSet* commnt; 23 <<<<<<< .working 24 ======= 25 DataSet* kmlobj; 26 >>>>>>> .merge-right.r11410 23 27 24 28 /*KML_Object constructors, destructors {{{1*/ -
issm/trunk-jpl-damage/src/c/objects/KML/KML_Unknown.cpp
r11295 r11417 44 44 bool flag=true; 45 45 46 _printf_(flag,"KML_Unknown _%s:\n",name);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 else 52 _printf_(flag," value: [none]\n" ); 51 53 52 54 return; … … 66 68 void KML_Unknown::DeepEcho(const char* indent){ 67 69 68 bool flag=true; 69 70 _printf_(flag,"%sKML_Unknown_%s:\n",indent,name); 70 char* valuei; 71 char* vtoken; 72 char nl[]={'\n','\0'}; 73 bool flag=true; 74 75 _printf_(flag,"%sKML_Unknown %s:\n",indent,name); 71 76 KML_Object::DeepEcho(indent); 72 77 73 if (value ) 74 _printf_(flag,"%s value: \"%s\"\n" ,indent,value); 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); 75 93 76 94 return; … … 80 98 void KML_Unknown::Write(FILE* filout,const char* indent){ 81 99 100 <<<<<<< .working 101 ======= 102 char* valuei; 103 char* vtoken; 104 char nl[]={'\n','\0'}; 105 106 >>>>>>> .merge-right.r11410 82 107 fprintf(filout,"%s<%s",indent,name); 83 108 WriteAttrib(filout," "); … … 85 110 WriteCommnt(filout,indent); 86 111 112 <<<<<<< .working 87 113 KML_Object::Write(filout,indent); 88 114 89 115 if (value ) 90 116 fprintf(filout,"%s %s\n",indent,value); 91 117 ======= 118 if (value ) { 119 valuei=(char *) xmalloc((strlen(value)+1)*sizeof(char)); 120 memcpy(valuei,value,(strlen(value)+1)*sizeof(char)); 121 122 vtoken=strtok(valuei,nl); 123 fprintf(filout,"%s %s\n",indent,vtoken); 124 125 while (vtoken=strtok(NULL,nl)) 126 fprintf(filout,"%s %s\n",indent,vtoken); 127 >>>>>>> .merge-right.r11410 128 129 <<<<<<< .working 130 ======= 131 xfree((void**)&valuei); 132 } 133 134 KML_Object::Write(filout,indent); 135 136 >>>>>>> .merge-right.r11410 92 137 fprintf(filout,"%s</%s>\n",indent,name); 93 138 … … 101 146 int ncom=0; 102 147 char** pcom=NULL; 148 char nl[]={'\n','\0'}; 103 149 104 150 /* get object attributes and check for solo tag */ … … 120 166 _error_("KML_Unknown::Read -- Unexpected closing tag %s.\n",kstri); 121 167 168 <<<<<<< .working 122 169 else if (strncmp(kstri,"<",1)) 123 170 KMLFileTokenParse( value ,NULL,0, 124 171 NULL, 125 172 fid); 173 ======= 174 else if (strncmp(kstri,"<",1)) { 175 if (value) { 176 value=(char *) xrealloc(value,(strlen(value)+1+strlen(kstri)+1)*sizeof(char)); 177 strcat(value,nl); 178 strcat(value,kstri); 179 } 180 else { 181 value=(char *) xmalloc((strlen(kstri)+1)*sizeof(char)); 182 memcpy(value,kstri,(strlen(kstri)+1)*sizeof(char)); 183 } 184 } 185 >>>>>>> .merge-right.r11410 126 186 127 187 else if (!strncmp(kstri,"<",1)) -
issm/trunk-jpl-damage/src/c/objects/Loads/Icefront.cpp
r10576 r11417 361 361 } 362 362 /*}}}*/ 363 /*FUNCTION Icefront::CreateJacobianMatrix{{{1*/ 364 void Icefront::CreateJacobianMatrix(Mat Jff){ 365 this->CreateKMatrix(Jff,NULL); 366 } 367 /*}}}1*/ 363 368 /*FUNCTION Icefront::PenaltyCreateKMatrix {{{1*/ 364 369 void Icefront::PenaltyCreateKMatrix(Mat Kff, Mat Kfs, double kmax){ … … 373 378 } 374 379 /*}}}*/ 380 /*FUNCTION Icefront::PenaltyCreateJacobianMatrix{{{1*/ 381 void Icefront::PenaltyCreateJacobianMatrix(Mat Jff,double kmax){ 382 this->PenaltyCreateKMatrix(Jff,NULL,kmax); 383 } 384 /*}}}1*/ 375 385 /*FUNCTION Icefront::InAnalysis{{{1*/ 376 386 bool Icefront::InAnalysis(int in_analysis_type){ -
issm/trunk-jpl-damage/src/c/objects/Loads/Icefront.h
r10576 r11417 76 76 void CreateKMatrix(Mat Kff, Mat Kfs); 77 77 void CreatePVector(Vec pf); 78 <<<<<<< .working 79 ======= 80 void CreateJacobianMatrix(Mat Jff); 81 >>>>>>> .merge-right.r11410 78 82 void PenaltyCreateKMatrix(Mat Kff, Mat kfs, double kmax); 79 83 void PenaltyCreatePVector(Vec pf, double kmax); 84 void PenaltyCreateJacobianMatrix(Mat Jff,double kmax); 80 85 bool InAnalysis(int analysis_type); 81 86 /*}}}*/ -
issm/trunk-jpl-damage/src/c/objects/Loads/Penpair.cpp
r11247 r11417 214 214 } 215 215 /*}}}1*/ 216 <<<<<<< .working 217 ======= 218 /*FUNCTION Penpair::CreateJacobianMatrix{{{1*/ 219 void Penpair::CreateJacobianMatrix(Mat Jff){ 220 this->CreateKMatrix(Jff,NULL); 221 } 222 /*}}}1*/ 223 >>>>>>> .merge-right.r11410 216 224 /*FUNCTION Penpair::PenaltyCreateKMatrix {{{1*/ 217 225 void Penpair::PenaltyCreateKMatrix(Mat Kff, Mat Kfs,double kmax){ -
issm/trunk-jpl-damage/src/c/objects/Materials/Matice.cpp
r11373 r11417 606 606 /*Return: */ 607 607 *pviscosity_complement=viscosity_complement; 608 } 609 /*}}}*/ 610 /*FUNCTION Matice::GetViscosity2dDerivativeEpsSquare{{{1*/ 611 void Matice::GetViscosity2dDerivativeEpsSquare(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; 608 639 } 609 640 /*}}}*/ -
issm/trunk-jpl-damage/src/c/objects/Materials/Matice.h
r11373 r11417 69 69 void GetViscosityComplement(double* pviscosity_complement, double* pepsilon); 70 70 void GetViscosityZComplement(double* pviscosity_complement, double* pepsilon); 71 void GetViscosity2dDerivativeEpsSquare(double* pmu_prime, double* pepsilon); 71 72 double GetB(); 72 73 double GetBbar(); -
issm/trunk-jpl-damage/src/c/objects/Params/BoolParam.h
r11202 r11417 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 l",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));} 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
r11202 r11417 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 l",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));} 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
r11202 r11417 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 l",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));} 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
r11202 r11417 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 l",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));} 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
r11202 r11417 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 string",enum_type,EnumToStringx(enum_type));};57 void GetParameterValue(int** pintarray,int* pM,int* pN){_error_("DoubleVec param of enum %i (%s) cannot return an array of integers",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 l",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));} 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
r11202 r11417 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 l",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));} 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
r11202 r11417 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 l",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));} 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
r11202 r11417 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 l",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));} 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
r11202 r11417 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 l",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));} 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
r11202 r11417 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 l",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));} 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
r11202 r11417 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 l",enum_type,EnumToStringx(enum_type));}60 void GetParameterValue(char*** pstringarray,int* pM){_error_("String param of enum %i (%s) cannot return a string array",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
r9320 r11417 12 12 #include <stdio.h> 13 13 #include <string.h> 14 #include <math.h> 14 15 #include "./objects.h" 15 16 #include "../Container/Container.h" -
issm/trunk-jpl-damage/src/c/shared/Numerics/Synchronize.sh
r9320 r11417 165 165 166 166 verbositylevel = (int)level; 167 return verbositylevel; 167 168 168 169 #else -
issm/trunk-jpl-damage/src/c/shared/Numerics/Verbosity.cpp
r9320 r11417 64 64 65 65 verbositylevel = (int)level; 66 return verbositylevel; 66 67 67 68 #else -
issm/trunk-jpl-damage/src/c/shared/TriMesh/TriMeshUtils.cpp
r9320 r11417 124 124 ******************************************************************************************************************************/ 125 125 126 intRiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel, double* index, int nsegs,double* segments){126 void 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 intIsInPoly(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 //void 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
r9320 r11417 26 26 int IsNeighbor(int el1,int el2,double* index); 27 27 int IsOnRift(int el,int nriftsegs,int* riftsegments); 28 intRiftSegmentsFromSegments(int* pnriftsegs, int** priftsegments, int nel, double* index, int nsegs,double* segments);28 void 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
r10287 r11417 95 95 96 96 case TransientSolutionEnum: 97 numanalyses= 8;97 numanalyses=9; 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]=PrognosticAnalysisEnum; 106 analyses[7]=EnthalpyAnalysisEnum; 107 analyses[8]=PrognosticAnalysisEnum; 107 108 break; 108 109 -
issm/trunk-jpl-damage/src/c/solutions/controltao_core.cpp
r11297 r11417 25 25 26 26 /*TAO*/ 27 <<<<<<< .working 27 28 int ierr,numberofvertices; 28 29 AppCtx user; … … 31 32 Vec XL = NULL; 32 33 Vec XU = NULL; 34 ======= 35 int ierr; 36 int num_controls,solution_type; 37 int nsteps,maxiter; 38 AppCtx user; 39 TaoSolver tao; 40 double *dummy = NULL; 41 int *control_list = NULL; 42 Vec X = NULL; 43 Vec XL = NULL; 44 Vec XU = NULL; 45 >>>>>>> .merge-right.r11410 33 46 34 47 /*Initialize TAO*/ … … 38 51 if(ierr) _error_("Could not initialize Tao"); 39 52 53 <<<<<<< .working 54 ======= 55 /*Recover some parameters*/ 56 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum); 57 femmodel->parameters->FindParam(&num_controls,InversionNumControlParametersEnum); 58 femmodel->parameters->FindParam(&control_list,NULL,InversionControlParametersEnum); 59 femmodel->parameters->FindParam(&nsteps,InversionNstepsEnum); 60 femmodel->parameters->FindParam(&dummy,NULL,NULL,InversionMaxiterPerStepEnum); 61 maxiter=nsteps*(int)dummy[0]; xfree((void**)&dummy); 62 63 >>>>>>> .merge-right.r11410 40 64 /*Initialize TAO*/ 41 65 TaoCreate(PETSC_COMM_WORLD,&tao); … … 45 69 46 70 /*Prepare all TAO parameters*/ 47 TaoSetMaximumFunctionEvaluations(tao, 50);48 TaoSetMaximumIterations(tao, 10);71 TaoSetMaximumFunctionEvaluations(tao,maxiter); 72 TaoSetMaximumIterations(tao,nsteps); 49 73 TaoSetTolerances(tao,10e-28,0.0000,0.0000,0.0000,10e-28); 50 74 … … 66 90 InputUpdateFromVectorx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,X,FrictionCoefficientEnum,VertexEnum); 67 91 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,FrictionCoefficientEnum); 92 93 /*Finalize*/ 94 _printf_(VerboseControl(),"%s\n"," preparing final solution"); 95 femmodel->parameters->SetParam(false,InversionIscontrolEnum); //needed to turn control result output in solutioncore 96 void (*solutioncore)(FemModel*)=NULL; 97 CorePointerFromSolutionEnum(&solutioncore,femmodel->parameters,solution_type); 98 solutioncore(femmodel); 68 99 69 100 /*Clean up and return*/ … … 90 121 VecFree(&gradient); 91 122 CostFunctionx(fcn,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 123 <<<<<<< .working 124 ======= 125 126 /*Compute gradient*/ 127 Gradjx(&gradient,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 128 VecCopy(gradient,G); VecFree(&gradient); 129 VecScale(G,-1.); 130 131 /*Clean-up and return*/ 132 xfree((void**)&cost_functions); 133 xfree((void**)&cost_functionsd); 134 >>>>>>> .merge-right.r11410 92 135 return 0; 93 136 } -
issm/trunk-jpl-damage/src/c/solutions/transient_core.cpp
r11245 r11417 24 24 /*parameters: */ 25 25 double finaltime,dt,yts; 26 bool control_analysis,isdiagnostic,isprognostic,isthermal,isgroundingline ;26 bool control_analysis,isdiagnostic,isprognostic,isthermal,isgroundingline,isenthalpy; 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); 53 54 if(isgroundingline) femmodel->parameters->FindParam(&groundingline_migration,GroundinglineMigrationEnum); 54 55 femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum); … … 91 92 _printf_(VerboseSolution()," computing temperatures:\n"); 92 93 #ifdef _HAVE_THERMAL_ 93 thermal_core_step(femmodel,step,time); 94 if(isenthalpy==0){ 95 thermal_core_step(femmodel,step,time); 96 } 97 else{ 98 enthalpy_core_step(femmodel,step,time); 99 } 94 100 #else 95 101 _error_("ISSM was not compiled with thermal capabilities. Exiting"); … … 135 141 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BedEnum,step,time); 136 142 if(dim==3 && isthermal) InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,TemperatureEnum,step,time); 137 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalforcingsMeltingRateEnum,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); 138 146 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsMassBalanceEnum,step,time); 139 147 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
r11293 r11417 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); 87 90 break; 88 91 } -
issm/trunk-jpl-damage/src/m/classes/clusters/castor.m
r9853 r11417 10 10 % {{{1 11 11 name='castor' 12 login=' larour';13 np =128; %number of processors12 login='username'; 13 np =128; 14 14 port=0; 15 15 queue='shortc'; 16 16 time=180; 17 codepath='/workp/edw/ larour/issm-2.0/bin'18 executionpath='/workp/edw/ larour/Testing/Execution'17 codepath='/workp/edw/issm-2.0/bin' 18 executionpath='/workp/edw/Testing/Execution' 19 19 %}}} 20 20 end -
issm/trunk-jpl-damage/src/m/classes/clusters/cosmos.m
r9853 r11417 10 10 % {{{1 11 11 name='cosmos' 12 login=' larour';12 login='username'; 13 13 np=128; 14 14 port=0; 15 15 queue='shortq'; 16 16 time=3*60; 17 codepath='/work00/edw/ larour/issm-2.0/bin';18 executionpath='/work00/edw/ larour/Execution';17 codepath='/work00/edw/issm-2.0/bin'; 18 executionpath='/work00/edw/Execution'; 19 19 %}}} 20 20 end -
issm/trunk-jpl-damage/src/m/classes/clusters/gemini.m
r9853 r11417 10 10 % {{{1 11 11 name='gemini' 12 login=' larour';12 login='username'; 13 13 np=50; 14 14 port=0; 15 15 queue='debug'; 16 16 time=60; 17 codepath='/workg/edw/ larour/issm-2.0/bin'18 executionpath='/workg/edw/ larour/Testing/Execution'17 codepath='/workg/edw/issm-2.0/bin' 18 executionpath='/workg/edw/Testing/Execution' 19 19 %}}} 20 20 end -
issm/trunk-jpl-damage/src/m/classes/clusters/pollux.m
r9853 r11417 10 10 % {{{1 11 11 name='pollux' 12 login=' larour';12 login='username'; 13 13 np=128; 14 14 port=0; 15 15 queue='shortp'; 16 16 time=180; 17 codepath='/workc/edw/ larour/issm-2.0/bin'18 executionpath='/workc/edw/ larour/Testing/Execution'17 codepath='/workc/edw/issm-2.0/bin' 18 executionpath='/workc/edw/Testing/Execution' 19 19 %}}} 20 20 end -
issm/trunk-jpl-damage/src/m/classes/initialization.m
r11279 r11417 62 62 checkfield(md,'initialization.pressure','NaN',1,'size',[md.mesh.numberofvertices 1]); 63 63 end 64 if ismember(EnthalpyAnalysisEnum,analyses),64 if (ismember(EnthalpyAnalysisEnum,analyses) & md.thermal.isenthalpy), 65 65 checkfield(md,'initialization.waterfraction','>=',0,'size',[md.mesh.numberofvertices 1]); 66 66 end -
issm/trunk-jpl-damage/src/m/classes/solver.m
r11219 r11417 6 6 classdef solver 7 7 properties (SetAccess=public) 8 options= {NoneAnalysisEnum,mumpsoptions};8 options=cell(0,0); 9 9 end 10 10 methods … … 26 26 function obj = setdefaultparameters(obj) % {{{ 27 27 28 %MUMPS is the default solver 29 obj.options={'NoneAnalysis',mumpsoptions}; 30 28 31 end % }}} 29 function obj=addoptions(obj,analysis,solveroptions) % {{{1 32 function obj = addoptions(obj,analysis,solveroptions) % {{{1 33 34 %Convert analysis from enum to string 35 analysis=EnumToString(analysis); 36 30 37 %first, find out if analysis has already been supplied 31 38 found=false; 32 39 for i=1:size(obj.options,1), 33 40 inanalysis=obj.options{i,1}; 34 if inanalysis==analysis,41 if strcmp(inanalysis,analysis), 35 42 found=true; 36 obj.options{i,1} =analysis;37 obj.options{i,2} =solveroptions;43 obj.options{i,1} = analysis; 44 obj.options{i,2} = solveroptions; 38 45 break; 39 46 end 40 47 end 48 41 49 if ~found, 42 obj.options{end+1,1}= analysis;43 obj.options{end,2} =solveroptions;50 obj.options{end+1,1}= analysis; 51 obj.options{end,2} = solveroptions; 44 52 end 45 53 end 46 54 %}}} 47 55 function checkconsistency(obj,md,solution,analyses) % {{{ 48 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 49 61 end % }}} 50 62 function PetscFile(solver,filename) % {{{ … … 70 82 71 83 %first write analysis: 72 fprintf(fid,'\n+%s\n', EnumToString(analysis)); %append a + to recognize it's an analysis enum84 fprintf(fid,'\n+%s\n',analysis); %append a + to recognize it's an analysis enum 73 85 74 86 %now, write options … … 126 138 end 127 139 128 disp(sprintf(' %s -> ''%s''', EnumToString(analysis),string));140 disp(sprintf(' %s -> ''%s''',analysis,string)); 129 141 end 130 142 end -
issm/trunk-jpl-damage/src/m/classes/thermal.m
r11265 r11417 12 12 penalty_lock = 0; 13 13 penalty_factor = 0; 14 isenthalpy = 0; 14 15 end 15 16 methods … … 42 43 %factor used to compute the values of the penalties: kappa=max(stiffness matrix)*10^penalty_factor 43 44 obj.penalty_factor=3; 45 46 %Should we use cold ice (default) or enthalpy formulation 47 obj.isenthalpy=0; 44 48 end % }}} 45 49 function checkconsistency(obj,md,solution,analyses) % {{{ … … 50 54 checkfield(md,'thermal.stabilization','numel',1,'values',[0 1 2]); 51 55 checkfield(md,'thermal.spctemperature','forcing',1); 52 if ismember(EnthalpyAnalysisEnum,analyses),56 if (ismember(EnthalpyAnalysisEnum,analyses) & md.thermal.isenthalpy), 53 57 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]); 54 59 end 55 60 end % }}} … … 62 67 fielddisplay(obj,'penalty_lock','stabilize unstable thermal constraints that keep zigzagging after n iteration (default is 0, no stabilization)'); 63 68 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)'); 64 70 65 71 end % }}} … … 71 77 WriteData(fid,'object',obj,'fieldname','penalty_lock','format','Integer'); 72 78 WriteData(fid,'object',obj,'fieldname','penalty_factor','format','Double'); 79 WriteData(fid,'object',obj,'fieldname','isenthalpy','format','Boolean'); 73 80 end % }}} 74 81 end -
issm/trunk-jpl-damage/src/m/model/collapse.m
r11368 r11417 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; 31 34 if ~isnan(md.surfaceforcings.mass_balance), 32 35 md.surfaceforcings.mass_balance=project2d(md,md.surfaceforcings.mass_balance,md.mesh.numberoflayers); … … 49 52 if ~isnan(md.flowequation.element_equation) 50 53 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); 51 58 end 52 59 … … 55 62 md.diagnostic.spcvy=project2d(md,md.diagnostic.spcvy,md.mesh.numberoflayers); 56 63 md.diagnostic.spcvz=project2d(md,md.diagnostic.spcvz,md.mesh.numberoflayers); 64 md.diagnostic.referential=project2d(md,md.diagnostic.referential,md.mesh.numberoflayers); 57 65 md.prognostic.spcthickness=project2d(md,md.prognostic.spcthickness,md.mesh.numberoflayers); 58 66 md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers); … … 60 68 %Extrusion of Neumann BC 61 69 if ~isnan(md.diagnostic.icefront), 62 numberofneumann2d=size(md.diagnostic.icefront,1)/ md.mesh.numberoflayers;70 numberofneumann2d=size(md.diagnostic.icefront,1)/(md.mesh.numberoflayers-1); 63 71 md.diagnostic.icefront=[md.diagnostic.icefront(1:numberofneumann2d,1:2) md.diagnostic.icefront(1:numberofneumann2d,5:6)]; %Add two columns on the first layer 64 72 end … … 89 97 md.mask.elementongroundedice=project2d(md,md.mask.elementongroundedice,1); 90 98 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); 91 101 92 102 %Initialize with the 2d mesh -
issm/trunk-jpl-damage/src/m/model/loadresultsfromdisk.m
r10538 r11417 12 12 13 13 if ~md.qmu.isdakota, 14 15 %Check that file exists 16 if ~exist(filename,'file'), 17 error(['binary file ' filename ' not found.']); 18 end 14 19 15 20 %initialize md.results if not a structure yet -
issm/trunk-jpl-damage/src/m/model/radarpower.m
r10683 r11417 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
r9762 r11417 10 10 if strcmpi(string,'diagnostic'), 11 11 if md.mesh.dimension==2, 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 12 md.initialization.vx=md.results.DiagnosticSolution.Vx; 13 md.initialization.vy=md.results.DiagnosticSolution.Vy; 22 14 else 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 15 md.initialization.vx=md.results.DiagnosticSolution.Vx; 16 md.initialization.vy=md.results.DiagnosticSolution.Vy; 17 md.initialization.vz=md.results.DiagnosticSolution.Vz; 30 18 end 31 md.initialization.vel= PatchToVec(md.results.DiagnosticSolution.Vel);19 md.initialization.vel=md.results.DiagnosticSolution.Vel; 32 20 33 21 if isfield(md.results.DiagnosticSolution,'Pressure'), 34 md.initialization.pressure= PatchToVec(md.results.DiagnosticSolution.Pressure);22 md.initialization.pressure=md.results.DiagnosticSolution.Pressure; 35 23 end 36 24 if md.rifts.numrifts, … … 42 30 for control_parameters=md.inversion.control_parameters 43 31 %Will need to be updated... good luck ;) 44 md.(EnumToModelField(control_parameters))= PatchToVec(md.results.DiagnosticSolution.(EnumToString(control_parameters)));32 md.(EnumToModelField(control_parameters))=md.results.DiagnosticSolution.(EnumToString(control_parameters)); 45 33 end 46 34 end … … 59 47 for i=1:length(results), 60 48 if ~isempty(md.results.TransientSolution(i).Vel), 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);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; 67 55 results2(count).time=md.results.TransientSolution(i).time; 68 56 results2(count).step=md.results.TransientSolution(i).step; … … 76 64 clear results,results2; 77 65 elseif strcmpi(string,'steadystate'), 78 md.initialization.vx= PatchToVec(md.results.SteadystateSolution.Vx);79 md.initialization.vy= PatchToVec(md.results.SteadystateSolution.Vy);66 md.initialization.vx=md.results.SteadystateSolution.Vx; 67 md.initialization.vy=md.results.SteadystateSolution.Vy; 80 68 if isfield(md.results.SteadystateSolution,'Vz'), 81 md.initialization.vz= PatchToVec(md.results.SteadystateSolution.Vz);69 md.initialization.vz=md.results.SteadystateSolution.Vz; 82 70 end 83 71 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);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; 88 76 89 77 if md.inversion.iscontrol==1, 90 78 for control_parameters=md.inversion.control_parameters 91 md.(EnumToModelField(control_parameters))= PatchToVec(md.results.SteadystateSolution.(EnumToString(control_parameters)));79 md.(EnumToModelField(control_parameters))=md.results.SteadystateSolution.(EnumToString(control_parameters)); 92 80 end 93 81 end 94 82 95 83 elseif strcmpi(string,'thermal'), 96 md.initialization.temperature= PatchToVec(md.results.ThermalSolution.Temperature);97 md.basalforcings.melting_rate= PatchToVec(md.results.ThermalSolution.BasalMeltingRate);84 md.initialization.temperature=md.results.ThermalSolution.Temperature; 85 md.basalforcings.melting_rate=md.results.ThermalSolution.BasalMeltingRate; 98 86 elseif strcmpi(string,'hydrology'), 99 md.initialization.watercolumn= PatchToVec(md.results.HydrologySolution.Watercolumn);87 md.initialization.watercolumn=md.results.HydrologySolution.Watercolumn; 100 88 101 89 else -
issm/trunk-jpl-damage/src/m/qmu/expandresponses.m
r9668 r11417 1 1 function dresp=expandresponses(md,responses) 2 %EXPANDRESPONSES - expand responses 2 3 3 4 fnames=fieldnames(responses); -
issm/trunk-jpl-damage/src/m/solutions/AnalysisConfiguration.m
r10286 r11417 42 42 43 43 case TransientSolutionEnum, 44 numanalyses= 8;45 analyses=[DiagnosticHorizAnalysisEnum;DiagnosticVertAnalysisEnum;DiagnosticHutterAnalysisEnum;SurfaceSlopeAnalysisEnum;BedSlopeAnalysisEnum;ThermalAnalysisEnum;MeltingAnalysisEnum; PrognosticAnalysisEnum];44 numanalyses=9; 45 analyses=[DiagnosticHorizAnalysisEnum;DiagnosticVertAnalysisEnum;DiagnosticHutterAnalysisEnum;SurfaceSlopeAnalysisEnum;BedSlopeAnalysisEnum;ThermalAnalysisEnum;MeltingAnalysisEnum;EnthalpyAnalysisEnum;PrognosticAnalysisEnum]; 46 46 47 47 case FlaimSolutionEnum, -
issm/trunk-jpl-damage/src/m/solutions/diagnostic_core.m
r10649 r11417 15 15 ismacayealpattyn=femmodel.parameters.FlowequationIsmacayealpattyn; 16 16 isstokes=femmodel.parameters.FlowequationIsstokes; 17 isnewton=femmodel.parameters.DiagnosticIsnewton; 17 18 dakota_analysis=femmodel.parameters.QmuIsdakota; 18 19 control_analysis=femmodel.parameters.InversionIscontrol; … … 53 54 issmprintf(VerboseSolution,'\n%s',[' computing horizontal velocities']); 54 55 femmodel=SetCurrentConfiguration(femmodel,DiagnosticHorizAnalysisEnum); 55 femmodel=solver_nonlinear(femmodel,modify_loads); 56 if isnewton, 57 femmodel=solver_newton(femmodel); 58 else 59 femmodel=solver_nonlinear(femmodel,modify_loads); 60 end 56 61 end 57 62 -
issm/trunk-jpl-damage/src/m/solutions/transient_core.m
r10999 r11417 19 19 isthermal=femmodel.parameters.TransientIsthermal; 20 20 isgroundingline=femmodel.parameters.TransientIsgroundingline; 21 isenthalpy=femmodel.parameters.ThermalIsenthalpy; 21 22 groundinglinemigration=femmodel.parameters.GroundinglineMigration; 22 23 … … 57 58 if (isthermal & dim==3) 58 59 issmprintf(VerboseSolution,'\n%s',[' computing temperature']); 59 femmodel=thermal_core_step(femmodel); 60 if (isenthalpy==0), 61 femmodel=thermal_core_step(femmodel); 62 else 63 femmodel=enthalpy_core_step(femmodel); 64 end 60 65 end 61 66 … … 90 95 femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,BedEnum,step,time); 91 96 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);end 98 if (dim==3 & isenthalpy), femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,EnthalpyEnum,step,time);end 92 99 femmodel.elements=InputToResult(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,BasalforcingsMeltingRateEnum,step,time); 93 100 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
r11295 r11417 22 22 CostFunction \ 23 23 CreateNodalConstraints\ 24 CreateJacobianMatrix\ 24 25 Echo\ 25 26 ElementConnectivity\ … … 327 328 SystemMatrices/SystemMatrices.h 328 329 330 331 CreateJacobianMatrix_SOURCES = CreateJacobianMatrix/CreateJacobianMatrix.cpp\ 332 CreateJacobianMatrix/CreateJacobianMatrix.h 333 329 334 SurfaceArea_SOURCES = SurfaceArea/SurfaceArea.cpp\ 330 335 SurfaceArea/SurfaceArea.h
Note:
See TracChangeset
for help on using the changeset viewer.