<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>

Untitled

Document it

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;
		}
	};

Implementation

For the "run" method implementation, refer to here:

For a template enabling to fill a TimeFreqSupport from a Stream, refer to: