<aside> 💡 The “time_freq_support_provider” operator provides an analysis' temporal or frequential domain description. For a transient analysis all the time sets cumulatives indeces with their times are described. For a harmonic analysis, the real and imaginary frequencies, the RPMs, the load steps are described.
</aside>
The specification allows to document each operator. For consistency, the specification can be used through different reader plugins.
struct CustomTimeFreqSupportProvider
{
// TO DO: rename "custom_solver" to the real solver name and "custom_extension" to the real file extension
static std::string name() { return "custom_solver::custom_extension::time_freq_support_provider"; }
static void run(ansys::dpf::OperatorMain& main);
static ansys::dpf::OperatorSpecification specification()
{
ansys::dpf::OperatorSpecification spec;
spec.setDocumentation("Read the time freq support from result streams.");
spec.setInputPins(
{
ansys::dpf::PinDefinition(ansys::dpf::eStreamPin)
.setName("streams_container")
.setAcceptedTypes({ ansys::dpf::types::streams })
.setDoc("streams (result file container) (optional)").setOptional(true),
ansys::dpf::PinDefinition(ansys::dpf::eDataSourcesPin)
.setName("data_sources")
.setAcceptedTypes({ ansys::dpf::types::data_sources })
.setDoc("if the stream is null then we need to get the file path from the data sources"),
});
spec.setOutputPins(
{
ansys::dpf::PinDefinition(0)
.setName("time_freq_support")
.setAcceptedTypes({ ansys::dpf::types::time_freq_support })
.setDoc("time_freq_support"),
});
spec.setProperty(ansys::dpf::spec::exposure::sExposure, ansys::dpf::spec::exposure::sPrivate);
return spec;
}
};
For the "run" method implementation, refer to here:
For a template enabling to fill a TimeFreqSupport from a Stream, refer to: