Pile Group Tool  2.0.3
Educational tool demonstrating behavior of pile groups in layered soil
systemplotsuper.h
1 #ifndef SYSTEMPLOTSUPER_H
2 #define SYSTEMPLOTSUPER_H
3 
4 #include <QWidget>
5 #include <QVector>
6 #include "pilegrouptool_parameters.h"
7 #include "qcp/qcustomplot.h"
8 
9 #define PLOT_DEFORMED
10 //#undef PLOT_DEFORMED
11 
12 namespace Ui {
13 class SystemPlotSuper;
14 }
15 
16 class SystemPlotSuper : public QWidget
17 {
18 public:
19  explicit SystemPlotSuper(QWidget *parent = 0);
20  ~SystemPlotSuper();
21 
23  double delta0;
24  double delta1;
25  double zmax;
26  };
27 
28  virtual void refresh() = 0;
29  virtual void setLoadType(LoadControlType);
30  virtual void updatePiles(QVector<PILE_INFO> &);
31  virtual void updateLoad(double, double, double);
32  virtual void updateSoil(QVector<double> &);
33  virtual void updateGWtable(double);
34  virtual void updateDisplacement(double ux=0.0, double uy=0.0);
35  virtual void updateDispProfile(double surfaceDisp, double percentage12, double percentage23, double percentageBase);
36 
37  virtual void updatePileDeformation(QVector<QVector<double> *> &, QVector<QVector<double> *> &, QVector<QVector<double> *> &);
38  virtual void updateMotionData(void);
39  virtual double shift(double z);
40 
41  virtual void setActivePile(int index) {activePileIdx = index;}
42  virtual int getActivePileIndex() {return activePileIdx;}
43  virtual void setActiveLayer(int index) {activeLayerIdx = index;}
44  virtual int getActiveLayerIndex() {return activeLayerIdx;}
45 
46  virtual void setSystemStable(bool status) { mIsStable = status; };
47 
48  virtual QList<QCPAbstractPlottable *> selectedPlottables();
49 
50 private:
51 
52 protected:
53  LoadControlType loadControlType;
54 
55  double P = 0.0; // lateral force on pile cap
56  double PV = 0.0; // vertical force on pile cap
57  double PMom = 0.0; // applied moment on pile cap
58 
59  double HDisp = 0.0; // prescribed horizontal displacement
60  double VDisp = 0.0; // prescriber vertical displacement
61 
62  double surfaceDisp = 0.0; // prescribed soil surface displacement
63  double percentage12 = 1.0; // percentage of surface displacement at 1st layer interface
64  double percentage23 = 0.0; // percentage of surface displacement at 2nd layer interface
65  double percentageBase = 0.0; // percentage of surface displacement at base of soil column
66 
67  QVector<double> soilMotion = QVector<double>(MAXLAYERS+1, 0.0);
68  QVector<SOIL_MOTION_DATA> motionData = QVector<SOIL_MOTION_DATA>(MAXLAYERS);
69 
70  // get parameters
71  double gwtDepth; // depth of ground water table below the surface
72 
73  int numPileElements;
74  int numPiles;
75 
76  // states
77  bool assumeRigidPileHeadConnection = false;
78 
79  // meshing parameters
80  int minElementsPerLayer = MIN_ELEMENTS_PER_LAYER;
81  int maxElementsPerLayer = MAX_ELEMENTS_PER_LAYER;
82  int numElementsInAir = NUM_ELEMENTS_IN_AIR;
83 
84  double L1; // pile length above ground (all the same)
85  double L2[MAXPILES]; // embedded length of pile
86  double pileDiameter[MAXPILES]; // pile diameter
87  double xOffset[MAXPILES]; // x-offset of pile
88 
89  int numNodePiles;
90  int numNodePile[MAXPILES];
91  int maxLayers[MAXPILES];
92  int nodeIDoffset[MAXPILES];
93  int elemIDoffset[MAXPILES];
94 
95  // others
96  QVector<HEAD_NODE_TYPE> headNodeList = QVector<HEAD_NODE_TYPE>(MAXPILES, {-1,-1,0.0, 1.0, 1.0});
97 
98  int numLoadedNode;
99  QVector<double> depthOfLayer = QVector<double>(4, 0.0);
100 
101  // selection tracking
102  int activePileIdx = 0;
103  int activeLayerIdx = -1;
104 
105  // deformed pile information
106  QVector<QVector<double> *> m_pos;
107  QVector<QVector<double> *> m_dispU;
108  QVector<QVector<double> *> m_dispV;
109 
110  // system status info
111  bool mIsStable = true;
112 };
113 
114 #endif // SYSTEMPLOTSUPER_H
Definition: materialdbinterface.h:6
Definition: systemplotsuper.h:22
Definition: systemplotsuper.h:16