Changeset 26747
- Timestamp:
- 12/22/21 12:12:27 (3 years ago)
- Location:
- issm/trunk-jpl
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/SamplingAnalysis.cpp
r26047 r26747 76 76 iomodel->FetchDataToInput(inputs,elements,"md.sampling.kappa",SamplingKappaEnum); 77 77 iomodel->FetchDataToInput(inputs,elements,"md.sampling.beta",SamplingBetaEnum,0.); 78 iomodel->FetchDataToInput(inputs,elements,"md.sampling.tau",SamplingTauEnum); 78 79 iomodel->FetchDataToInput(inputs,elements,"md.initialization.sample",SampleEnum,0.); 80 iomodel->FetchDataToInput(inputs,elements,"md.initialization.sample",SampleNoiseEnum,0.); 81 if(iomodel->solution_enum==TransientSolutionEnum) iomodel->FetchDataToInput(inputs,elements,"md.sampling.phi",SamplingPhiEnum,0.); 79 82 80 83 }/*}}}*/ … … 84 87 char** requestedoutputs = NULL; 85 88 86 parameters->AddObject(iomodel->CopyConstantObject("md.sampling.tau",SamplingTauEnum));87 89 parameters->AddObject(iomodel->CopyConstantObject("md.sampling.alpha",SamplingAlphaEnum)); 88 90 parameters->AddObject(iomodel->CopyConstantObject("md.sampling.robin",SamplingRobinEnum)); 89 if(solution_enum==TransientSolutionEnum) parameters->AddObject(iomodel->CopyConstantObject("md.sampling.phi",SamplingPhiEnum));90 91 parameters->AddObject(iomodel->CopyConstantObject("md.sampling.seed",SamplingSeedEnum)); 91 92 … … 273 274 element->GetDofListLocal(&doflist,NoneApproximationEnum,GsetEnum); 274 275 IssmDouble* newsample = xNew<IssmDouble>(numnodes); 276 IssmDouble* tau = xNew<IssmDouble>(numnodes); 277 element->GetInputListOnNodes(&tau[0],SamplingTauEnum); 275 278 276 279 /*Use the dof list to index into the solution vector: */ 277 280 for(int i=0;i<numnodes;i++){ 278 newsample[i]=solution[doflist[i]]; 281 newsample[i]=solution[doflist[i]] / tau[i]; // new 282 279 283 /*Check solution*/ 280 284 if(xIsNan<IssmDouble>(newsample[i])) _error_("NaN found in solution vector"); … … 287 291 /*Free ressources:*/ 288 292 xDelete<IssmDouble>(newsample); 293 xDelete<IssmDouble>(tau); 289 294 xDelete<int>(doflist); 290 295 }/*}}}*/ … … 418 423 *pMff=Mff; 419 424 }/*}}}*/ 425 void SamplingAnalysis::UpdateTransientSample(FemModel * femmodel){ 426 427 for(int j=0;j<femmodel->elements->Size();j++){ 428 Element* element=(Element*)femmodel->elements->GetObjectByOffset(j); 429 UpdateTransientSample(element); 430 } 431 432 } 433 void SamplingAnalysis::UpdateTransientSample(Element * element){ 434 435 /*Intermediaries */ 436 IssmDouble phi, sample, noise; 437 438 /*Fetch number vertices for this element*/ 439 int numvertices = element->GetNumberOfVertices(); 440 441 /*Initialize new sample*/ 442 IssmDouble* sample_new = xNew<IssmDouble>(numvertices); 443 444 /*Retrieve all inputs and parameters*/ 445 Input* sample_input=element->GetInput(SampleOldEnum); _assert_(sample_input); 446 Input* noise_input=element->GetInput(SampleNoiseEnum); _assert_(noise_input); 447 Input* phi_input=element->GetInput(SamplingPhiEnum); _assert_(phi_input); 448 449 /* Start looping on the number of gaussian points: */ 450 Gauss* gauss=element->NewGauss(); 451 for(int iv=0;iv<numvertices;iv++){ 452 gauss->GaussVertex(iv); 453 454 /*Get input values at gauss points*/ 455 sample_input->GetInputValue(&sample,gauss); 456 noise_input->GetInputValue(&noise,gauss); 457 phi_input->GetInputValue(&phi,gauss); 458 459 /*Get new sample*/ 460 sample_new[iv] = phi*sample + noise; 461 462 } 463 464 element->AddInput(SampleEnum,sample_new,element->GetElementType()); 465 466 /*Clean up and return*/ 467 xDelete<IssmDouble>(sample_new); 468 delete gauss; 469 470 } -
issm/trunk-jpl/src/c/analyses/SamplingAnalysis.h
r26047 r26747 40 40 void MassMatrix(Matrix<IssmDouble>** pMff,FemModel* femmodel); 41 41 42 void UpdateTransientSample(FemModel* femmodel); 43 void UpdateTransientSample(Element * element); 44 42 45 }; 43 46 #endif -
issm/trunk-jpl/src/c/cores/sampling_core.cpp
r26004 r26747 5 5 #include "../classes/classes.h" 6 6 #include "../solutionsequences/solutionsequences.h" 7 #include "../analyses/analyses.h" // new 8 #include "../modules/modules.h" 7 9 8 10 void sampling_core(FemModel* femmodel){ … … 30 32 /*Generate random sample*/ 31 33 if(VerboseSolution()) _printf0_(" call computational core\n"); 34 SamplingAnalysis* analysis = new SamplingAnalysis(); 32 35 femmodel->SetCurrentConfiguration(SamplingAnalysisEnum); 36 37 if(solution_type==TransientSolutionEnum){ 38 InputDuplicatex(femmodel,SampleEnum,SampleOldEnum); 39 40 int seed; 41 femmodel->parameters->FindParam(&seed,SamplingSeedEnum); 42 if(seed>=0){ 43 int step; 44 femmodel->parameters->FindParam(&step,StepEnum); 45 seed = seed + 13923272*step; // change default seed for transient simulations (by considering an arbitrary shift based on the step number) 46 femmodel->parameters->SetParam(seed,SamplingSeedEnum); 47 } 48 49 } 50 33 51 solutionsequence_sampling(femmodel); 52 53 if(solution_type==TransientSolutionEnum){ 54 55 InputDuplicatex(femmodel,SampleEnum,SampleNoiseEnum); 56 57 analysis->UpdateTransientSample(femmodel); 58 59 } 60 61 delete analysis; 34 62 35 63 if(save_results){ … … 46 74 /*profiler*/ 47 75 femmodel->profiler->Stop(SAMPLINGCORE); 76 77 48 78 } -
issm/trunk-jpl/src/c/cores/transient_core.cpp
r26556 r26747 150 150 femmodel->parameters->FindParam(&issampling,TransientIssamplingEnum); 151 151 femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum); 152 femmodel->parameters->FindParam(&isstochasticforcing,StochasticForcingIsStochasticForcingEnum); 152 femmodel->parameters->FindParam(&isstochasticforcing,StochasticForcingIsStochasticForcingEnum); 153 153 154 154 #if defined(_HAVE_OCEAN_ ) -
issm/trunk-jpl/src/c/shared/Enum/Enum.vim
r26676 r26747 352 352 syn keyword cConstant ModelnameEnum 353 353 syn keyword cConstant SamplingAlphaEnum 354 syn keyword cConstant SamplingPhiEnum355 354 syn keyword cConstant SamplingNumRequestedOutputsEnum 356 355 syn keyword cConstant SamplingRequestedOutputsEnum 357 356 syn keyword cConstant SamplingRobinEnum 358 357 syn keyword cConstant SamplingSeedEnum 359 syn keyword cConstant SamplingTauEnum360 358 syn keyword cConstant SaveResultsEnum 361 359 syn keyword cConstant SolidearthPartitionIceEnum … … 803 801 syn keyword cConstant RheologyBbarAbsGradientEnum 804 802 syn keyword cConstant SampleEnum 803 syn keyword cConstant SampleOldEnum 804 syn keyword cConstant SampleNoiseEnum 805 805 syn keyword cConstant SamplingBetaEnum 806 806 syn keyword cConstant SamplingKappaEnum 807 syn keyword cConstant SamplingPhiEnum 808 syn keyword cConstant SamplingTauEnum 807 809 syn keyword cConstant SealevelEnum 808 810 syn keyword cConstant SealevelGRDEnum … … 1580 1582 syn keyword cType Cfsurfacesquare 1581 1583 syn keyword cType Channel 1582 syn keyword cType classes1583 1584 syn keyword cType Constraint 1584 1585 syn keyword cType Constraints … … 1587 1588 syn keyword cType ControlInput 1588 1589 syn keyword cType Covertree 1590 syn keyword cType DataSetParam 1589 1591 syn keyword cType DatasetInput 1590 syn keyword cType DataSetParam1591 1592 syn keyword cType Definition 1592 1593 syn keyword cType DependentObject … … 1601 1602 syn keyword cType ElementInput 1602 1603 syn keyword cType ElementMatrix 1604 syn keyword cType ElementVector 1603 1605 syn keyword cType Elements 1604 syn keyword cType ElementVector1605 1606 syn keyword cType ExponentialVariogram 1606 1607 syn keyword cType ExternalResult … … 1609 1610 syn keyword cType Friction 1610 1611 syn keyword cType Gauss 1611 syn keyword cType GaussianVariogram1612 syn keyword cType gaussobjects1613 1612 syn keyword cType GaussPenta 1614 1613 syn keyword cType GaussSeg 1615 1614 syn keyword cType GaussTetra 1616 1615 syn keyword cType GaussTria 1616 syn keyword cType GaussianVariogram 1617 1617 syn keyword cType GenericExternalResult 1618 1618 syn keyword cType GenericOption … … 1630 1630 syn keyword cType IssmDirectApplicInterface 1631 1631 syn keyword cType IssmParallelDirectApplicInterface 1632 syn keyword cType krigingobjects1633 1632 syn keyword cType Load 1634 1633 syn keyword cType Loads … … 1641 1640 syn keyword cType Matice 1642 1641 syn keyword cType Matlitho 1643 syn keyword cType matrixobjects1644 1642 syn keyword cType MatrixParam 1645 1643 syn keyword cType Misfit … … 1654 1652 syn keyword cType Observations 1655 1653 syn keyword cType Option 1654 syn keyword cType OptionUtilities 1656 1655 syn keyword cType Options 1657 syn keyword cType OptionUtilities1658 1656 syn keyword cType Param 1659 1657 syn keyword cType Parameters … … 1669 1667 syn keyword cType Regionaloutput 1670 1668 syn keyword cType Results 1669 syn keyword cType RiftStruct 1671 1670 syn keyword cType Riftfront 1672 syn keyword cType RiftStruct1673 1671 syn keyword cType SealevelGeometry 1674 1672 syn keyword cType Seg 1675 1673 syn keyword cType SegInput 1674 syn keyword cType SegRef 1676 1675 syn keyword cType Segment 1677 syn keyword cType SegRef1678 1676 syn keyword cType SpcDynamic 1679 1677 syn keyword cType SpcStatic … … 1694 1692 syn keyword cType Vertex 1695 1693 syn keyword cType Vertices 1694 syn keyword cType classes 1695 syn keyword cType gaussobjects 1696 syn keyword cType krigingobjects 1697 syn keyword cType matrixobjects 1696 1698 syn keyword cType AdjointBalancethickness2Analysis 1697 1699 syn keyword cType AdjointBalancethicknessAnalysis -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r26676 r26747 346 346 ModelnameEnum, 347 347 SamplingAlphaEnum, 348 SamplingPhiEnum,349 348 SamplingNumRequestedOutputsEnum, 350 349 SamplingRequestedOutputsEnum, 351 350 SamplingRobinEnum, 352 351 SamplingSeedEnum, 353 SamplingTauEnum,354 352 SaveResultsEnum, 355 353 SolidearthPartitionIceEnum, … … 534 532 TransientIsgroundinglineEnum, 535 533 TransientIshydrologyEnum, 536 TransientIsmasstransportEnum, 534 TransientIsmasstransportEnum, 537 535 TransientIsoceantransportEnum, 538 536 TransientIsmovingfrontEnum, … … 799 797 RheologyBbarAbsGradientEnum, 800 798 SampleEnum, 799 SampleOldEnum, 800 SampleNoiseEnum, 801 801 SamplingBetaEnum, 802 802 SamplingKappaEnum, 803 SamplingPhiEnum, 804 SamplingTauEnum, 803 805 SealevelEnum, 804 806 SealevelGRDEnum, … … 1036 1038 TemperatureSEMICEnum, 1037 1039 ThermalforcingAutoregressionNoiseEnum, 1038 ThermalforcingValuesAutoregressionEnum, 1040 ThermalforcingValuesAutoregressionEnum, 1039 1041 ThermalSpctemperatureEnum, 1040 1042 ThicknessAbsGradientEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r26676 r26747 354 354 case ModelnameEnum : return "Modelname"; 355 355 case SamplingAlphaEnum : return "SamplingAlpha"; 356 case SamplingPhiEnum : return "SamplingPhi";357 356 case SamplingNumRequestedOutputsEnum : return "SamplingNumRequestedOutputs"; 358 357 case SamplingRequestedOutputsEnum : return "SamplingRequestedOutputs"; 359 358 case SamplingRobinEnum : return "SamplingRobin"; 360 359 case SamplingSeedEnum : return "SamplingSeed"; 361 case SamplingTauEnum : return "SamplingTau";362 360 case SaveResultsEnum : return "SaveResults"; 363 361 case SolidearthPartitionIceEnum : return "SolidearthPartitionIce"; … … 805 803 case RheologyBbarAbsGradientEnum : return "RheologyBbarAbsGradient"; 806 804 case SampleEnum : return "Sample"; 805 case SampleOldEnum : return "SampleOld"; 806 case SampleNoiseEnum : return "SampleNoise"; 807 807 case SamplingBetaEnum : return "SamplingBeta"; 808 808 case SamplingKappaEnum : return "SamplingKappa"; 809 case SamplingPhiEnum : return "SamplingPhi"; 810 case SamplingTauEnum : return "SamplingTau"; 809 811 case SealevelEnum : return "Sealevel"; 810 812 case SealevelGRDEnum : return "SealevelGRD"; -
issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
r26676 r26747 345 345 syn keyword juliaConstC ModelnameEnum 346 346 syn keyword juliaConstC SamplingAlphaEnum 347 syn keyword juliaConstC SamplingPhiEnum348 347 syn keyword juliaConstC SamplingNumRequestedOutputsEnum 349 348 syn keyword juliaConstC SamplingRequestedOutputsEnum 350 349 syn keyword juliaConstC SamplingRobinEnum 351 350 syn keyword juliaConstC SamplingSeedEnum 352 syn keyword juliaConstC SamplingTauEnum353 351 syn keyword juliaConstC SaveResultsEnum 354 352 syn keyword juliaConstC SolidearthPartitionIceEnum … … 796 794 syn keyword juliaConstC RheologyBbarAbsGradientEnum 797 795 syn keyword juliaConstC SampleEnum 796 syn keyword juliaConstC SampleOldEnum 797 syn keyword juliaConstC SampleNoiseEnum 798 798 syn keyword juliaConstC SamplingBetaEnum 799 799 syn keyword juliaConstC SamplingKappaEnum 800 syn keyword juliaConstC SamplingPhiEnum 801 syn keyword juliaConstC SamplingTauEnum 800 802 syn keyword juliaConstC SealevelEnum 801 803 syn keyword juliaConstC SealevelGRDEnum -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r26676 r26747 360 360 else if (strcmp(name,"Modelname")==0) return ModelnameEnum; 361 361 else if (strcmp(name,"SamplingAlpha")==0) return SamplingAlphaEnum; 362 else if (strcmp(name,"SamplingPhi")==0) return SamplingPhiEnum;363 362 else if (strcmp(name,"SamplingNumRequestedOutputs")==0) return SamplingNumRequestedOutputsEnum; 364 363 else if (strcmp(name,"SamplingRequestedOutputs")==0) return SamplingRequestedOutputsEnum; 365 364 else if (strcmp(name,"SamplingRobin")==0) return SamplingRobinEnum; 366 365 else if (strcmp(name,"SamplingSeed")==0) return SamplingSeedEnum; 367 else if (strcmp(name,"SamplingTau")==0) return SamplingTauEnum;368 366 else if (strcmp(name,"SaveResults")==0) return SaveResultsEnum; 369 367 else if (strcmp(name,"SolidearthPartitionIce")==0) return SolidearthPartitionIceEnum; … … 383 381 else if (strcmp(name,"SealevelchangeViscousNumSteps")==0) return SealevelchangeViscousNumStepsEnum; 384 382 else if (strcmp(name,"SealevelchangeViscousTimes")==0) return SealevelchangeViscousTimesEnum; 383 else if (strcmp(name,"SealevelchangeViscousIndex")==0) return SealevelchangeViscousIndexEnum; 384 else if (strcmp(name,"RotationalEquatorialMoi")==0) return RotationalEquatorialMoiEnum; 385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SealevelchangeViscousIndex")==0) return SealevelchangeViscousIndexEnum; 389 else if (strcmp(name,"RotationalEquatorialMoi")==0) return RotationalEquatorialMoiEnum; 390 else if (strcmp(name,"TidalLoveH")==0) return TidalLoveHEnum; 388 if (strcmp(name,"TidalLoveH")==0) return TidalLoveHEnum; 391 389 else if (strcmp(name,"TidalLoveK")==0) return TidalLoveKEnum; 392 390 else if (strcmp(name,"TidalLoveL")==0) return TidalLoveLEnum; … … 506 504 else if (strcmp(name,"Step")==0) return StepEnum; 507 505 else if (strcmp(name,"Steps")==0) return StepsEnum; 506 else if (strcmp(name,"StressbalanceAbstol")==0) return StressbalanceAbstolEnum; 507 else if (strcmp(name,"StressbalanceFSreconditioning")==0) return StressbalanceFSreconditioningEnum; 508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"StressbalanceAbstol")==0) return StressbalanceAbstolEnum; 512 else if (strcmp(name,"StressbalanceFSreconditioning")==0) return StressbalanceFSreconditioningEnum; 513 else if (strcmp(name,"StressbalanceIsnewton")==0) return StressbalanceIsnewtonEnum; 511 if (strcmp(name,"StressbalanceIsnewton")==0) return StressbalanceIsnewtonEnum; 514 512 else if (strcmp(name,"StressbalanceMaxiter")==0) return StressbalanceMaxiterEnum; 515 513 else if (strcmp(name,"StressbalanceNumRequestedOutputs")==0) return StressbalanceNumRequestedOutputsEnum; … … 629 627 else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum; 630 628 else if (strcmp(name,"BottomPressure")==0) return BottomPressureEnum; 629 else if (strcmp(name,"BottomPressureOld")==0) return BottomPressureOldEnum; 630 else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum; 631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"BottomPressureOld")==0) return BottomPressureOldEnum; 635 else if (strcmp(name,"CalvingCalvingrate")==0) return CalvingCalvingrateEnum; 636 else if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum; 634 if (strcmp(name,"CalvingHabFraction")==0) return CalvingHabFractionEnum; 637 635 else if (strcmp(name,"CalvingMeltingrate")==0) return CalvingMeltingrateEnum; 638 636 else if (strcmp(name,"CalvingStressThresholdFloatingice")==0) return CalvingStressThresholdFloatingiceEnum; … … 752 750 else if (strcmp(name,"HydrologyHeadOld")==0) return HydrologyHeadOldEnum; 753 751 else if (strcmp(name,"HydrologyMoulinInput")==0) return HydrologyMoulinInputEnum; 752 else if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum; 753 else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum; 754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"HydrologyNeumannflux")==0) return HydrologyNeumannfluxEnum; 758 else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum; 759 else if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum; 757 if (strcmp(name,"HydrologySheetConductivity")==0) return HydrologySheetConductivityEnum; 760 758 else if (strcmp(name,"HydrologySheetThickness")==0) return HydrologySheetThicknessEnum; 761 759 else if (strcmp(name,"HydrologySheetThicknessOld")==0) return HydrologySheetThicknessOldEnum; … … 823 821 else if (strcmp(name,"RheologyBbarAbsGradient")==0) return RheologyBbarAbsGradientEnum; 824 822 else if (strcmp(name,"Sample")==0) return SampleEnum; 823 else if (strcmp(name,"SampleOld")==0) return SampleOldEnum; 824 else if (strcmp(name,"SampleNoise")==0) return SampleNoiseEnum; 825 825 else if (strcmp(name,"SamplingBeta")==0) return SamplingBetaEnum; 826 826 else if (strcmp(name,"SamplingKappa")==0) return SamplingKappaEnum; 827 else if (strcmp(name,"SamplingPhi")==0) return SamplingPhiEnum; 828 else if (strcmp(name,"SamplingTau")==0) return SamplingTauEnum; 827 829 else if (strcmp(name,"Sealevel")==0) return SealevelEnum; 828 830 else if (strcmp(name,"SealevelGRD")==0) return SealevelGRDEnum; … … 873 875 else if (strcmp(name,"SealevelRSLBarystatic")==0) return SealevelRSLBarystaticEnum; 874 876 else if (strcmp(name,"SealevelRSLRate")==0) return SealevelRSLRateEnum; 875 else if (strcmp(name,"SealevelUGrd")==0) return SealevelUGrdEnum;876 else if (strcmp(name,"SealevelNGrd")==0) return SealevelNGrdEnum;877 877 else stage=8; 878 878 } 879 879 if(stage==8){ 880 if (strcmp(name,"SealevelUEastEsa")==0) return SealevelUEastEsaEnum; 880 if (strcmp(name,"SealevelUGrd")==0) return SealevelUGrdEnum; 881 else if (strcmp(name,"SealevelNGrd")==0) return SealevelNGrdEnum; 882 else if (strcmp(name,"SealevelUEastEsa")==0) return SealevelUEastEsaEnum; 881 883 else if (strcmp(name,"SealevelUNorthEsa")==0) return SealevelUNorthEsaEnum; 882 884 else if (strcmp(name,"SealevelchangeIndices")==0) return SealevelchangeIndicesEnum; … … 996 998 else if (strcmp(name,"SmbS0p")==0) return SmbS0pEnum; 997 999 else if (strcmp(name,"SmbS0t")==0) return SmbS0tEnum; 998 else if (strcmp(name,"SmbSizeini")==0) return SmbSizeiniEnum;999 else if (strcmp(name,"SmbSmbCorr")==0) return SmbSmbCorrEnum;1000 1000 else stage=9; 1001 1001 } 1002 1002 if(stage==9){ 1003 if (strcmp(name,"SmbSmbref")==0) return SmbSmbrefEnum; 1003 if (strcmp(name,"SmbSizeini")==0) return SmbSizeiniEnum; 1004 else if (strcmp(name,"SmbSmbCorr")==0) return SmbSmbCorrEnum; 1005 else if (strcmp(name,"SmbSmbref")==0) return SmbSmbrefEnum; 1004 1006 else if (strcmp(name,"SmbSzaValue")==0) return SmbSzaValueEnum; 1005 1007 else if (strcmp(name,"SmbT")==0) return SmbTEnum; … … 1119 1121 else if (strcmp(name,"Outputdefinition17")==0) return Outputdefinition17Enum; 1120 1122 else if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum; 1121 else if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum;1122 else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum;1123 1123 else stage=10; 1124 1124 } 1125 1125 if(stage==10){ 1126 if (strcmp(name,"Outputdefinition21")==0) return Outputdefinition21Enum; 1126 if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum; 1127 else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum; 1128 else if (strcmp(name,"Outputdefinition21")==0) return Outputdefinition21Enum; 1127 1129 else if (strcmp(name,"Outputdefinition22")==0) return Outputdefinition22Enum; 1128 1130 else if (strcmp(name,"Outputdefinition23")==0) return Outputdefinition23Enum; … … 1242 1244 else if (strcmp(name,"DoubleInput")==0) return DoubleInputEnum; 1243 1245 else if (strcmp(name,"BoolParam")==0) return BoolParamEnum; 1244 else if (strcmp(name,"Boundary")==0) return BoundaryEnum;1245 else if (strcmp(name,"BuddJacka")==0) return BuddJackaEnum;1246 1246 else stage=11; 1247 1247 } 1248 1248 if(stage==11){ 1249 if (strcmp(name,"CalvingDev2")==0) return CalvingDev2Enum; 1249 if (strcmp(name,"Boundary")==0) return BoundaryEnum; 1250 else if (strcmp(name,"BuddJacka")==0) return BuddJackaEnum; 1251 else if (strcmp(name,"CalvingDev2")==0) return CalvingDev2Enum; 1250 1252 else if (strcmp(name,"CalvingHab")==0) return CalvingHabEnum; 1251 1253 else if (strcmp(name,"CalvingLevermann")==0) return CalvingLevermannEnum; … … 1365 1367 else if (strcmp(name,"IcefrontMassFluxLevelset")==0) return IcefrontMassFluxLevelsetEnum; 1366 1368 else if (strcmp(name,"Incremental")==0) return IncrementalEnum; 1367 else if (strcmp(name,"Indexed")==0) return IndexedEnum;1368 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;1369 1369 else stage=12; 1370 1370 } 1371 1371 if(stage==12){ 1372 if (strcmp(name,"ElementInput")==0) return ElementInputEnum; 1372 if (strcmp(name,"Indexed")==0) return IndexedEnum; 1373 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 1374 else if (strcmp(name,"ElementInput")==0) return ElementInputEnum; 1373 1375 else if (strcmp(name,"IntMatExternalResult")==0) return IntMatExternalResultEnum; 1374 1376 else if (strcmp(name,"IntMatParam")==0) return IntMatParamEnum; … … 1488 1490 else if (strcmp(name,"Regular")==0) return RegularEnum; 1489 1491 else if (strcmp(name,"RecoveryAnalysis")==0) return RecoveryAnalysisEnum; 1490 else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;1491 else if (strcmp(name,"SamplingAnalysis")==0) return SamplingAnalysisEnum;1492 1492 else stage=13; 1493 1493 } 1494 1494 if(stage==13){ 1495 if (strcmp(name,"SamplingSolution")==0) return SamplingSolutionEnum; 1495 if (strcmp(name,"Riftfront")==0) return RiftfrontEnum; 1496 else if (strcmp(name,"SamplingAnalysis")==0) return SamplingAnalysisEnum; 1497 else if (strcmp(name,"SamplingSolution")==0) return SamplingSolutionEnum; 1496 1498 else if (strcmp(name,"SIAApproximation")==0) return SIAApproximationEnum; 1497 1499 else if (strcmp(name,"SMBautoregression")==0) return SMBautoregressionEnum; -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_sampling.cpp
r26612 r26747 51 51 Vector<IssmDouble>* ug = NULL; 52 52 Vector<IssmDouble>* uf = NULL; 53 Vector<IssmDouble>* old_uf = NULL; // previous solution vector (for transient) 54 Vector<IssmDouble>* pf = NULL; 53 Vector<IssmDouble>* pf = NULL; 55 54 Vector<IssmDouble>* df = NULL; 56 55 Vector<IssmDouble>* ys=NULL; … … 62 61 63 62 /*parameters:*/ 64 int solution_type, alpha, step, seed, nsize; 65 IssmDouble phi, tau; 63 int alpha, seed, nsize; 66 64 67 65 /*Recover parameters: */ 68 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);69 66 femmodel->parameters->FindParam(&seed,SamplingSeedEnum); 70 67 femmodel->parameters->FindParam(&alpha,SamplingAlphaEnum); 71 femmodel->parameters->FindParam(&tau,SamplingTauEnum);72 73 /*Recover parameters for transient simulation: */74 if(solution_type==TransientSolutionEnum)75 {76 femmodel->parameters->FindParam(&step,StepEnum);77 femmodel->parameters->FindParam(&phi,SamplingPhiEnum);78 if(seed>=0) seed = seed + 13923272*step; // change default seed for transient simulations (by considering an arbitrary shif based on the step number)79 80 GetSolutionFromInputsx(&ug,femmodel);81 Reducevectorgtofx(&uf, ug, femmodel->nodes,femmodel->parameters);82 old_uf=uf->Duplicate();83 }84 68 85 69 /*CreateAnalysis*/ … … 101 85 Reduceloadx(pf, Kfs, ys); 102 86 delete Kfs; 103 104 /*Copy old solution for transient run */105 if(solution_type==TransientSolutionEnum) uf->Copy(old_uf);106 87 107 88 /* Generate random RHS */ … … 130 111 } 131 112 132 /* Divide results by tau */133 uf->Scale(1.0/tau);134 135 /* Update solution x_{t+1} = phi x_{t} + noise for transient */136 if(solution_type==TransientSolutionEnum) uf->AXPY(old_uf,phi);137 138 113 /* Update input */ 139 114 Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters); … … 141 116 142 117 /*clean-up*/ 143 delete Kff; delete pf; delete df; delete uf; delete ys; delete old_uf;118 delete Kff; delete pf; delete df; delete uf; delete ys; 144 119 delete Ml; delete Mscale; 145 120 delete analysis; -
issm/trunk-jpl/src/m/classes/sampling.m
r26301 r26747 9 9 tau = 0; 10 10 beta = NaN; 11 phi = 0;11 phi = NaN; 12 12 alpha = 0; 13 13 robin = 0; … … 30 30 disp(sprintf('\n %s','Parameters of PDE operator (kappa^2 I-Laplacian)^(alpha/2)(tau):')); 31 31 fielddisplay(self,'kappa','coefficient of the identity operator'); 32 fielddisplay(self,'tau','scaling coefficient of the solution (default: 1.0)');32 fielddisplay(self,'tau','scaling coefficient of the solution'); 33 33 fielddisplay(self,'alpha','exponent in PDE operator, (default: 2.0, BiLaplacian covariance operator)'); 34 34 … … 47 47 function self = setdefaultparameters(self) % {{{ 48 48 49 %Scaling coefficient50 self.tau=1;51 52 49 %Apply Robin boundary conditions 53 50 self.robin=0; 54 55 %Temporal correlation factor56 self.phi=0;57 51 58 52 %Exponent in fraction SPDE (default: 2, biLaplacian covariance … … 77 71 78 72 md = checkfield(md,'fieldname','sampling.kappa','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0); 79 md = checkfield(md,'fieldname','sampling.tau','NaN',1,'Inf',1,' numel',1,'>',0);73 md = checkfield(md,'fieldname','sampling.tau','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0); 80 74 md = checkfield(md,'fieldname','sampling.robin','numel',1,'values',[0 1]); 81 75 if(md.sampling.robin) 82 76 md = checkfield(md,'fieldname','sampling.beta','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1],'>',0); 83 end 84 md = checkfield(md,'fieldname','sampling.phi','NaN',1,'Inf',1,'numel',1,'>=',0); 77 end 85 78 md = checkfield(md,'fieldname','sampling.alpha','NaN',1,'Inf',1,'numel',1,'>',0); 86 79 md = checkfield(md,'fieldname','sampling.seed','NaN',1,'Inf',1,'numel',1); … … 91 84 92 85 WriteData(fid,prefix,'object',self,'fieldname','kappa','format','DoubleMat','mattype',1); 93 WriteData(fid,prefix,'object',self,'fieldname','tau','format','Double ');86 WriteData(fid,prefix,'object',self,'fieldname','tau','format','DoubleMat','mattype',1); 94 87 WriteData(fid,prefix,'object',self,'fieldname','beta','format','DoubleMat','mattype',1); 95 WriteData(fid,prefix,'object',self,'fieldname','phi','format','Double ');88 WriteData(fid,prefix,'object',self,'fieldname','phi','format','DoubleMat','mattype',1); 96 89 WriteData(fid,prefix,'object',self,'fieldname','alpha','format','Integer'); 97 90 WriteData(fid,prefix,'object',self,'fieldname','robin','format','Boolean'); … … 110 103 111 104 nu = self.alpha-1; 112 KAPPA = sqrt(8*nu) /lc;113 TAU = sqrt(gamma(nu) /(gamma(self.alpha)*(4*pi)*KAPPA^(2*nu)*sigma^2));114 md.sampling.kappa = KAPPA *ones(md.mesh.numberofvertices,1);115 md.sampling.tau = TAU ;105 KAPPA = sqrt(8*nu)./lc; 106 TAU = sqrt(gamma(nu)./(gamma(self.alpha)*(4*pi)*KAPPA.^(2*nu).*sigma.^2)); 107 md.sampling.kappa = KAPPA.*ones(md.mesh.numberofvertices,1); 108 md.sampling.tau = TAU.*ones(md.mesh.numberofvertices,1); 116 109 117 110 end % }}} … … 121 114 writejsdouble(fid,[modelname '.sampling.tau'],self.tau); 122 115 writejsdouble(fid,[modelname '.sampling.beta'],self.beta); 123 writejsdouble(fid,[modelname '.sampling.phi'],self. beta);116 writejsdouble(fid,[modelname '.sampling.phi'],self.phi); 124 117 writejsdouble(fid,[modelname '.sampling.alpha'],self.alpha); 125 118 writejsdouble(fid,[modelname '.sampling.robin'],self.robin); -
issm/trunk-jpl/test/NightlyRun/test134.m
r26520 r26747 5 5 md = md.sampling.setparameters(md,2e5,1); 6 6 md.sampling.seed = 100; 7 md.sampling.phi = zeros(md.mesh.numberofvertices,1); 7 8 md.cluster=generic('name',oshostname(),'np',1); 9 md.cluster.np=1; 8 10 md=solve(md,'smp'); 9 11
Note:
See TracChangeset
for help on using the changeset viewer.