63 : 
Elem(uLabel, fOutput),
 
   64 Genel(uLabel, pDO, fOutput),
 
   67 pdE(pE), pdA(pA), pdB(pB), pdC(pC), dD(D),
 
   75         DEBUGCOUT(
"GenelStateSpaceSISO " << uLabel
 
   76                 << 
", NumDofs: " << 
iNumDofs << std::endl);
 
   89                 std::vector<doublereal> RSCALE(Order);
 
   90                 std::vector<doublereal> LSCALE(Order);
 
   93                         std::vector<doublereal> WORK(6*Order);
 
   95                         (void)__FC_DECL__(dggbal)(&JOB, &N, 
pdA, &LDA,
 
   96                                 pdE, &LDB, &ILO, &IHI,
 
   97                                 &LSCALE[0], &RSCALE[0], &WORK[0], &INFO);
 
  100                         (void)__FC_DECL__(dgebal)(&JOB, &N, 
pdA, &LDA,
 
  101                                 &ILO, &IHI, &RSCALE[0], &INFO);
 
  103                         for (
unsigned i = 0; i < 
Order; i++) {
 
  104                                 LSCALE[i] = 1./RSCALE[i];
 
  109                         silent_cout(
"GenelStateSpaceSISO(" << uLabel << 
"): " 
  110                                 "balancing failed (ignored)" << std::endl);
 
  113                         for (
unsigned i = 0; i < 
Order; i++) {
 
  124         for (
unsigned i = 0; i < 2*
Order; i++) {
 
  129                 for (
unsigned i = 0; i < 
Order; i++) {
 
  134                         for (
unsigned i = 0; i < 
Order; i++) {
 
  186         return out << 
"GenelStateSpaceSISO: not implemented yet!" << std::endl;
 
  197         if (dynamic_cast<ScalarDofValue *>(
SV_u) != 0) {
 
  209         DEBUGCOUT(
"Entering GenelStateSpaceSISO::AssJac()" << std::endl);
 
  241                 for (
unsigned int i = 
iNumDofs; i > 0; i--) {
 
  242                         WM.
PutCoef(i, iIdx_u, pdb[i]*dd);
 
  246         WM.
PutCoef(iNumRows, iNumCols, dCoef);
 
  253                 for (
unsigned int i = iNumDofs; i > 0; i--) {
 
  256                         WM.
PutCoef(iNumRows, i, -pdc[i]*dCoef);
 
  259                         for (
unsigned int j = iNumDofs; j > 0; j--) {
 
  262                                 WM.
PutCoef(i, j, pde[j] - pda[j]*dCoef);
 
  267                 for (
unsigned int i = iNumDofs; i > 0; i--) {
 
  270                         WM.
PutCoef(iNumRows, i, -pdc[i]*dCoef);
 
  272                         for (
unsigned int j = iNumDofs; j > 0; j--) {
 
  275                                 WM.
PutCoef(i, j, -pda[j]*dCoef);
 
  292         DEBUGCOUT(
"Entering GenelStateSpaceSISO::AssRes()" << std::endl);
 
  311         for (
unsigned int i = 
iNumDofs; i > 0; i--) {
 
  313                 pdx[i] = XCurr(iFirstIndex + i);
 
  314                 pdxp[i] = XPrimeCurr(iFirstIndex + i);
 
  326                 for (
unsigned int i = iNumDofs; i-- > 0; ) {
 
  330                         for (
unsigned int j = iNumDofs; j-- > 0; ) {
 
  331                                 d += pda[j]*pdx[j] - pde[j]*pdxp[j];
 
  337                 for (
unsigned int i = iNumDofs; i-- > 0; ) {
 
  338                         d = pdb[i]*u - pdxp[i];
 
  340                         for (
unsigned int j = iNumDofs; j-- > 0; ) {
 
  362                 for (
unsigned int i = iNumDofs; i-- > 0; ) {
 
  365                         for (
unsigned int j = iNumDofs; j-- > 0; ) {
 
  371         for (
unsigned i = 0; i < 
iNumDofs; i++) {
 
  372                 X(iFirstIndex + i) = 
pdX[i];
 
  373                 XP(iFirstIndex + i) = 
pdXP[i];
 
  385                 std::ostream &out(OH.
Genels());
 
  387                 for (
unsigned int i = 0; i < 
iNumDofs; i++) {
 
  388                         out << 
" " << 
pdX[i];
 
  390                 for (
unsigned int i = 0; i < 
iNumDofs; i++) {
 
  391                         out << 
" " << 
pdXP[i];
 
  399         std::vector<const Node *>& connectedNodes)
 const {
 
  401         if (dynamic_cast<NodeDof *>(
SV_u)) {
 
  404         connectedNodes.resize(iNodes);
 
  406         if (dynamic_cast<NodeDof *>(
SV_u)) {
 
  407                 connectedNodes[1] = 
dynamic_cast<NodeDof *
>(
SV_u)->pNode;
 
  418         unsigned int iNumOut,
 
  420         std::vector<ScalarValue *>& u,
 
  431 : 
Elem(uLabel, fOutput),
 
  432 Genel(uLabel, pDO, fOutput),
 
  433 iNumOutputs(iNumOut), iNumInputs(u.size()),
 
  434 pvSD_y(const_cast<
ScalarDof *>(y)), SV_u(u),
 
  436 pdE(pE), pdA(pA), pdB(pB), pdC(pC), pdD(pD),
 
  449         DEBUGCOUT(
"GenelStateSpaceMIMO " << uLabel
 
  450                 << 
", NumDofs: " << 
iNumDofs << std::endl);
 
  464                 std::vector<doublereal> RSCALE(Order);
 
  465                 std::vector<doublereal> LSCALE(Order);
 
  468                         std::vector<doublereal> WORK(6*Order);
 
  470                         rc = __FC_DECL__(dggbal)(&JOB, &N, 
pdA, &LDA,
 
  471                                 pdE, &LDB, &ILO, &IHI,
 
  472                                 &LSCALE[0], &RSCALE[0], &WORK[0], &INFO);
 
  475                         rc = __FC_DECL__(dgebal)(&JOB, &N, 
pdA, &LDA,
 
  476                                 &ILO, &IHI, &RSCALE[0], &INFO);
 
  478                         for (
unsigned i = 0; i < 
Order; i++) {
 
  479                                 LSCALE[i] = 1./RSCALE[i];
 
  484                         silent_cout(
"GenelStateSpaceMIMO(" << uLabel << 
"): " 
  485                                 "balancing failed (ignored)" << std::endl);
 
  490                         for (
unsigned i = 0; i < 
Order; i++) {
 
  499                                 for (
unsigned i = 0; i < 
Order; i++) {
 
  510         for (
unsigned i = 0; i < 2*
Order; i++) {
 
  515                 for (
unsigned i = 0; i < 
Order; i++) {
 
  520                         for (
unsigned i = 0; i < 
Order; i++) {
 
  553         for (std::vector<ScalarValue *>::iterator i = 
SV_u.begin();
 
  554                 i != 
SV_u.end(); ++i)
 
  579         return out << 
"GenelStateSpaceMIMO: not implemented yet!" << std::endl;
 
  590         for (
unsigned int j = 
iNumInputs; j-- > 0; ) {
 
  591                 if (dynamic_cast<ScalarDofValue *>(
SV_u[j]) != 0) {
 
  604         DEBUGCOUT(
"Entering GenelStateSpaceMIMO::AssJac()" << std::endl);
 
  614         for (
unsigned int j = 0; j < 
iNumInputs; j++) {
 
  630                         for (
unsigned int i = 1; i <= 
iNumDofs; i++) {
 
  631                                 WM.
PutCoef(i, iIdx_u, pdb[0]*dd);
 
  639         for (
unsigned int i = iNumOutputs; i > 0; i--) {
 
  646                 WM.
PutCoef(iNumDofs + i, iNumDofs + i, dCoef);
 
  649                 for (
unsigned int j = iNumDofs; j > 0; j--) {
 
  652                         WM.
PutCoef(iNumDofs + i, j, -pdc[j]*dCoef);
 
  660                 for (
unsigned int i = iNumDofs; i > 0; i--) {
 
  665                         for (
unsigned int j = iNumDofs; j > 0; j--) {
 
  669                                 WM.
PutCoef(i, j, pde[j] - pda[j]*dCoef);
 
  674                 for (
unsigned int i = iNumDofs; i > 0; i--) {
 
  678                         for (
unsigned int j = iNumDofs; j > 0; j--) {
 
  682                                 WM.
PutCoef(i, j, -pda[j]*dCoef);
 
  698         DEBUGCOUT(
"Entering GenelStateSpaceMIMO::AssRes()" << std::endl);
 
  709         for (
unsigned int i = 
iNumDofs; i > 0; i--) {
 
  711                 pdx[i] = XCurr(iFirstIndex+i);
 
  712                 pdxp[i] = XPrimeCurr(iFirstIndex+i);
 
  724                         for (
unsigned int j = iNumDofs; j > 0; j--) {
 
  728                         for (
unsigned int j = iNumInputs; j > 0; j--) {
 
  729                                 d += pdd[j]*
SV_u[j - 1]->dGetValue();
 
  731                         WorkVec.
PutCoef(iNumDofs + i, d);
 
  741                         for (
unsigned int j = iNumDofs; j > 0; j--) {
 
  744                         WorkVec.
PutCoef(iNumDofs + i, d);
 
  754                 for (
unsigned int i = iNumDofs; i-- > 0; ) {
 
  757                         for (
unsigned int j = iNumInputs; j-- > 0; ) {
 
  758                                 d += pdb[j]*
SV_u[j]->dGetValue();
 
  762                         for (
unsigned int j = iNumDofs; j-- > 0; ) {
 
  763                                 d += pda[j]*pdx[j] - pde[j]*pdxp[j];
 
  769                 for (
unsigned int i = iNumDofs; i-- > 0; ) {
 
  772                         for (
unsigned int j = iNumInputs; j-- > 0; ) {
 
  773                                 d += pdb[j]*
SV_u[j]->dGetValue();
 
  776                         for (
unsigned int j = iNumDofs; j-- > 0; ) {
 
  797                 for (
unsigned int i = iNumDofs; i-- > 0; ) {
 
  800                         for (
unsigned int j = iNumInputs; j-- > 0; ) {
 
  801                                 pdXP[i] += pdb[j]*
SV_u[j]->dGetValue();
 
  804                         for (
unsigned int j = iNumDofs; j-- > 0; ) {
 
  810         for (
unsigned i = 0; i < 
iNumDofs; i++) {
 
  811                 X(iFirstIndex + i) = 
pdX[i];
 
  812                 XP(iFirstIndex + i) = 
pdXP[i];
 
  820                 std::ostream& out(OH.
Genels());
 
  822                 for (
unsigned int i = 0; i < 
iNumDofs; i++) {
 
  823                         out << 
" " << 
pdX[i];
 
  825                 for (
unsigned int i = 0; i < 
iNumDofs; i++) {
 
  826                         out << 
" " << 
pdXP[i];
 
  834         std::vector<const Node *>& connectedNodes)
 const {
 
  836         for (std::vector<ScalarValue *>::const_iterator u = 
SV_u.begin();
 
  837                 u != 
SV_u.end(); ++u)
 
  839                 if (dynamic_cast<NodeDof *>(*u)) {
 
  844         connectedNodes.resize(iNodes);
 
  849         for (std::vector<ScalarValue *>::const_iterator u = 
SV_u.begin();
 
  850                 u != 
SV_u.end(); ++u)
 
  854                         connectedNodes[i++] = ndp->
pNode;
 
std::ostream & Genels(void) const 
GenelStateSpaceMIMO(unsigned int uLabel, const DofOwner *pDO, unsigned int iNumOut, const ScalarDof *y, std::vector< ScalarValue * > &u, unsigned int Order, doublereal *pE, doublereal *pA, doublereal *pB, doublereal *pC, doublereal *pD, bool bBalance, doublereal *pdX0, doublereal *pdXP0, flag fOutput)
void PutColIndex(integer iSubCol, integer iCol)
virtual doublereal dGetValue(void) const =0
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
virtual bool bToBeOutput(void) const 
virtual void ResizeReset(integer)
FullSubMatrixHandler & SetFull(void)
void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &, const VectorHandler &)
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &, const VectorHandler &)
virtual ~GenelStateSpaceSISO(void)
#define SAFEDELETEARR(pnt)
void PutCoef(integer iRow, integer iCol, const doublereal &dCoef)
virtual const doublereal & dGetX(void) const =0
std::vector< Hint * > Hints
void IncCoef(integer iRow, integer iCol, const doublereal &dCoef)
virtual DofOrder::Order GetDofType(unsigned int i) const 
virtual std::ostream & Restart(std::ostream &out) const 
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const 
virtual void PutRowIndex(integer iSubRow, integer iRow)=0
virtual void Output(OutputHandler &OH) const 
virtual integer iGetFirstRowIndex(void) const 
#define ASSERT(expression)
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const 
virtual void PutCoef(integer iRow, const doublereal &dCoef)=0
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const 
virtual unsigned int iGetNumDof(void) const 
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const 
virtual void ResizeReset(integer, integer)
virtual void Output(OutputHandler &OH) const 
virtual ~GenelStateSpaceMIMO(void)
std::vector< ScalarValue * > SV_u
void PutRowIndex(integer iSubRow, integer iRow)
virtual DofOrder::Order GetDofType(unsigned int i) const 
#define SAFENEWARR(pnt, item, sz)
virtual unsigned int iGetNumDof(void) const 
virtual integer iGetFirstIndex(void) const 
void SetValue(DataManager *pDM, VectorHandler &X, VectorHandler &XP, SimulationEntity::Hints *ph=0)
unsigned int GetLabel(void) const 
virtual SubVectorHandler & AssRes(SubVectorHandler &WorkVec, doublereal, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
GenelStateSpaceSISO(unsigned int uLabel, const DofOwner *pDO, const ScalarDof &y, ScalarValue *u, unsigned int Order, doublereal *pE, doublereal *pA, doublereal *pB, doublereal *pC, doublereal D, bool bBalance, doublereal *pdX0, doublereal *pdXP0, flag fOutput)
virtual std::ostream & Restart(std::ostream &out) const 
virtual integer iGetFirstColIndex(void) const