Often, several criteria may require the same preprocessing steps before performing their margin checks.
When criteria are grouped into the same 'Pre-Processing Set', the set's 'Preprocessing' function is guaranteed to be called before any of the AnalyzeFuncs of the criteria in the set. The result of the preprocessing step is available to each criterion.
The following code demonstrates how two or more criterion might share the same preprocessing step.
namespace Solver.Criteria.Sample;
{
{
.
WithUid(
"00000000-0000-0000-0000-REPLACEME001")
.
WithUid(
"00000000-0000-0000-0000-REPLACEME002")
_ = config.AddSet([definition1, definition2], PreProcess);
return config;
}
{
_ = input.
Details.
Add(
"Module", $
"From {nameof(PreProcessSample)}");
_ = input.
Details.
Add(
"Analyzable", $
"{input.Analyzable}");
_ = input.
Details.
Add(
"Scenario", $
"{input.Analyzable.LoadId}");
Dictionary<CriterionId, AnalysisResult> results = new()
{
{ CriterionId.Second,
new AnalysisResult(0.07, input.
Details) },
};
outData.
AddData(
"results", results);
}
private static AnalysisResult Compute(ICriterionInput input, CriterionId id)
{
if (data.GetData("results") is not Dictionary<CriterionId, AnalysisResult> results)
{
throw new InvalidOperationException("No preprocessed results found");
}
var result = results[id];
_ = result.SingleLoadResult?.Details.Add("criterion scenario", $"{input.Analyzable.LoadId}");
return result;
}
}
internal enum CriterionId
{
First,
Second,
}
A single analysis result. Use this to return the analysis result from a criterion that does not use b...
Definition Public.cs:3509
Definition Public.cs:3315
Definition Public.cs:4389
CriterionDefinitionConfig WithVersion(Version version)
Definition Public.cs:4484
CriterionDefinitionConfig WithAnalyzeFunc(Func< ICriterionInput, ICriterionResult > analyzeFunc)
Definition Public.cs:4694
CriterionDefinitionConfig WithUid(Guid uid)
Definition Public.cs:4497
CriterionDefinitionConfig WithReferenceId(int referenceId)
Definition Public.cs:4523
CriterionDefinitionConfig WithName(string name)
Definition Public.cs:4470
ENTRY POINT.
Definition Public.cs:3189
ILoadScenarioId LoadId
The load scenario id.
Definition Public.cs:1665
IDetailTree Add(string name, double value, Unit unit)
Captures a value as a detail. The 'unit' field allows HyperX to convert this number to display units ...
Definition Public.cs:3291
void AddData(string key, object value)
Store data for later use by a criterion.