forked from SAP-archive/fedem-mdb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
FmDamperBase.H
76 lines (57 loc) · 2.24 KB
/
FmDamperBase.H
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// SPDX-FileCopyrightText: 2023 SAP SE
//
// SPDX-License-Identifier: Apache-2.0
//
// This file is part of FEDEM - https://openfedem.org
////////////////////////////////////////////////////////////////////////////////
/*******************************************************************************
* CLASS: FmDamperBase
* AUTHOR: Jens LIEN
* LAST MODIFIED: 14 jun 1995
*
* DESCRIPTION:
* Parent class for the database entries.
* Has an additional element for the Damper ring.
******************************************************************************/
#ifndef FM_DAMPER_BASE_H
#define FM_DAMPER_BASE_H
#include "vpmDB/FmIsControlledBase.H"
#include "vpmDB/FmMathFuncBase.H"
class FmDamperBase : public FmIsControlledBase
{
Fmd_DB_HEADER_INIT();
protected:
FmDamperBase();
virtual ~FmDamperBase() {}
virtual bool cloneLocal(FmBase* obj, int depth);
static bool localParse(const char* keyWord, std::istream& activeStatement,
FmDamperBase* obj);
public:
// The constant damping coefficient, used only if damperFunction is none
double getInitDamp() const { return myDampCoeff.getValue(); }
bool setInitDamp(double d) { return myDampCoeff.setValue(d); }
// The damper function, used only in fedem >= v3.0
FmMathFuncBase* getFunction() const { return damperFunction.getPointer(); }
void setFunction(FmMathFuncBase* func) { damperFunction.setRef(func); }
// The scale engine that scales the damper force/coefficient.
// In fedem < v3.0 : The damper coefficient function directly
// In fedem >= v3.0: A scale engine
FmEngine* getDampEngine() const { return this->getEngine(); }
void setDampEngine(FmEngine* func) { this->setEngine(func); }
bool isForceFunc() const;
// This is accessed by FmMathFuncBase only
std::pair<bool,bool> isForceFuncFromFile() const;
virtual int getDOF() const { return 1; }
virtual int printSolverEntry(FILE* fp);
private:
FFaField<double> myDampCoeff;
FFaField<FFaReferenceBase*> damperFunctionField;
FFaReference<FmMathFuncBase> damperFunction;
public:
// Indicator for whether the damper velocity is associated with
// the deformational velocity of a matching spring
FFaField<bool> isDefDamper;
private:
FFaObsoleteField<bool> isForceFunction;
};
#endif