FEDEM Solver  R8.0
Source code of the dynamics solver
Data Types | Modules | Functions/Subroutines
controlStructModule.f90 File Reference

Coupled control system and structure modal analysis. More...

Data Types

type  controlstructmodule::structsensorgradtype
 Data type representing a control input gradient. More...
 
type  controlstructmodule::forcecontrolgradtype
 Data type representing a control output gradient. More...
 
type  controlstructmodule::controlstructtype
 Data type representing the control-system/structure coupling. More...
 
interface  controlstructmodule::writeobject
 Standard routine for writing an object to file. More...
 

Modules

module  controlstructmodule
 Module with data types and subroutines for coupled modal analysis.
 

Functions/Subroutines

subroutine controlstructmodule::writecontrolstructtype (pCS, io, complexity)
 Standard routine for writing an object to io. More...
 
subroutine writestructsensor (idx, ssg)
 Writes out a controlstructmodule::structsensorgradtype object. More...
 
subroutine writeforcecontrol (idx, fcg)
 Writes out a controlstructmodule::forcecontrolgradtype object. More...
 
subroutine controlstructmodule::initiatecontrolstruct (pCS, inputs, triads, joints, forces, numVreg, numNod, ierr)
 Initializes the control struct data type. More...
 
subroutine controlstructmodule::getctrlparamswithstructsensors (ctrlParams, numStructCtrlParams, ctrlParamsWithStructSensors)
 Finds all control input parameters coupled to structural DOFs. More...
 
logical function hasstructsensor (prm, notify)
 Checks if a control parameter is coupled to a structural DOF. More...
 
subroutine controlstructmodule::getctrloutforces (forces, numCtrlOutForces, ctrlOutForces)
 Finds all control out forces. More...
 
logical function isctrloutforce (force)
 Checks if the source of a force is a control system variable. More...
 
subroutine controlstructmodule::buildstructcontroljacobi (pCS, ctrl, sys, msim, ierr)
 Computes the gradient matrices of forces w.r.t. controller inputs. More...
 
subroutine dmmm (Cmat, ctrlProp, ierr)
 Performs the matrix-matrix multiplication Cmat = A*ctrlProp*B. More...
 
integer function isnonsymmetric (A)
 Checks if the matrix A has non-symmetric terms. More...
 
subroutine controlstructmodule::estimatecontrollerproperties01 (sys, ctrl, msim, whichVregIn, whichVregOut, ctrlProps, ierr)
 Estimates the controller gradient properties by perturbation. More...
 
subroutine controlstructmodule::estimatecontrollerproperties02 (sys, ctrl, msim, whichVregIn, whichVregOut, ctrlProps, ierr)
 
subroutine controlstructmodule::estimatecontrollerproperties03 (sys, ctrl, msim, whichVregIn, whichVregOut, ctrlProps, ierr)
 
subroutine controlstructmodule::estimatecontrollerproperties04 (sys, ctrl, msim, whichVregIn, whichVregOut, nStep, ctrlProps, ierr)
 
subroutine controlstructmodule::estimatecontrollerproperties500 (sys, ctrl, msim, whichVregIn, whichVregOut, ctrlProps, ierr)
 Perturbation method without initial perturbation. More...
 
subroutine controlstructmodule::perturbcontroller (sys, ctrl, msim, iPert, dt, dy, numVregOut, whichVregOut, uy, ierr)
 Perturbs one of the inputs of the control system. More...
 
subroutine controlstructmodule::deallocatectrlcopy (ctrl)
 Deallocates a control system copy. More...
 

Detailed Description

Coupled control system and structure modal analysis.

Function/Subroutine Documentation

◆ dmmm()

subroutine buildstructcontroljacobi::dmmm ( real(dp), dimension(:,:), intent(out)  Cmat,
real(dp), dimension(:,:), intent(in)  ctrlProp,
integer, intent(out)  ierr 
)

Performs the matrix-matrix multiplication Cmat = A*ctrlProp*B.

A = pCSGrad_ForceWrtCout and B = pCSGrad_CinWrtSensor. Using LAPACK::DGEMM('N','N',m,n,k,alpha,A,ldA,B,ldB,beta,C,ldC)

◆ hasstructsensor()

logical function getctrlparamswithstructsensors::hasstructsensor ( type(ctrlprm), intent(in)  prm,
logical, intent(in)  notify 
)

Checks if a control parameter is coupled to a structural DOF.

◆ isctrloutforce()

logical function getctrloutforces::isctrloutforce ( type(forcetype), intent(in)  force)

Checks if the source of a force is a control system variable.

◆ isnonsymmetric()

integer function buildstructcontroljacobi::isnonsymmetric ( real(dp), dimension(:,:), intent(in)  A)

Checks if the matrix A has non-symmetric terms.

◆ writeforcecontrol()

subroutine writecontrolstructtype::writeforcecontrol ( integer, intent(in)  idx,
type(forcecontrolgradtype), intent(in)  fcg 
)

◆ writestructsensor()

subroutine writecontrolstructtype::writestructsensor ( integer, intent(in)  idx,
type(structsensorgradtype), intent(in)  ssg 
)