Artifact 2920b2304041909cec1e5801a3ef42d69bb8666e1258d01e317ef58eaa454d63:


#ifndef SQUARELAW_HH
#define SQUARELAW_HH

#include <cmath
#include "sign.hh"

#include "causality.hh"

inline double squarelaw(const double gain,
			const causality_t causality, const int port,
			const double input, const causality_t in_causality, const int in_port)
  /*
   * implements P = R Q^2
   * direction of flow is retained
   */
{
  if (causality == effort) {
    return pow(input, 2) * gain * sign(input * gain);
  } else {
    return sqrt(fabs(input / gain)) * sign(input / gain);
  }
}

#endif // SQUARELAE_HH


MTT: Model Transformation Tools
GitHub | SourceHut | Sourceforge | Fossil RSS ]