4.8.3.99. SHF
Language type |
Subroutine |
FORTRAN |
call rd_shf(x, x0, a, w, phi, b, order, value, errflg) or shf(x, x0, a, w, phi, b, order, value, errflg) |
C/C++ |
rd_shf(x, x0, a, w, phi, b, order, &value, &errflg) or shf(x, x0, a, w, phi, b, order, &value, &errflg) |
Variable Name |
Size |
Description |
x |
double |
Independent variable in the function. |
x0 |
double |
Offset in the independent variable x. |
a |
double |
Amplitude of the harmonic function. |
\((\omega )\) |
|
The frequency of the harmonic function. |
\((\Phi )\) |
|
Phase shift in the harmonic function. |
b |
double |
Average displacement of the harmonic function. |
order |
int |
|
value |
double |
|
errflg |
logical |
If an error is encountered in invoking Predefined subroutine, this variable becomes true. This variable must be declared as a logical variable. |
C---- SUB. MOTION_USUB
SUBROUTINE MOTION_USUB
& (TIME,UPAR,NPAR,IORD,IFLAG,RESULT)
C---- TO EXPORT * SUBROUTINE
!DEC$ ATTRIBUTES DLLEXPORT,C::MOTION_USUB
C---- INCLUDE SYSTEM CALL
INCLUDE 'SYSCAL.F'
C---- DEFINE VARIABLES
C Parameter Information
C TIME : Simulation time of RD/Solver. (Input)
C UPAR : Parameters defined by user. (Input)
C NPAR : Number of user parameters. (Input)
C IORD : Integrator order. (Input)
C IFLAG : When RD/Solver initializes arrays, the flag is true. (Input)
C RESULT : Returned value. (Output)
DOUBLE PRECISION TIME, UPAR(*)
INTEGER NPAR, IORD
LOGICAL IFLAG
DOUBLE PRECISION RESULT[REFERENCE]
C---- USER STATEMENT
C---- LOCAL VARIABLE DEFINITIONS
DOUBLE PRECISION OFFSET, AMP, OMEGA, PHI, AVERAGE
DOUBLE PRECISION VALUE
INTEGER ORDER
LOGICAL ERRFLG
C---- ASSIGN IMPACT PARAMETER
OFFSET = UPAR(1)
AMP = UPAR(2)
OMEGA = UPAR(3)
PHI = UPAR(4)
AVERAGER = UPAR(5)
ORDER = (INT)UPAR(6)
C---- CALL THE SHF TO COLLECT INFORMATION FOR CALCULATION
CALL RD_SHF(TIME,OFFSET,AMP,OMEGA,PHI,AVERAGE,ORDER,VALUE,ERRFLG)
RESULT = VALUE
RETURN
END
#include "stdafx.h"
#include "DllFunc.h"
SHF_API void __cdecl motion_usub
(double time, double upar[], int npar, int iord, int iflag, double* result)
{
using namespace rd_syscall;
// Parameter Information
// time : Simulation time of RD/Solver. (Input)
// upar : Parameters defined by user. (Input)
// npar : Number of user parameters. (Input)
// iord : Integrator order. (Input)
// iflag : When RD/Solver initializes arrays, the flag is true. (Input)
// result : Returned value. (Output)
// User Statement
// Local Variable Definitions
double offset, amp, omega, phi, average;
double value;
int order, errflg;
// Assign Impact Parameter
offset = upar[0];
amp = upar[1];
omega = upar[2];
phi = upar[3];
average = upar[4];
order = (int)upar[5];
//call the SHF to collect Information for Calculation
rd_shf(time, offset, amp, omega, phi, average, order, &value, &errflg);
// Return the Value
*result = value;
}