Free Electron
LinearStrandForce.h
Go to the documentation of this file.
1 /* Copyright (C) 2003-2014 Free Electron Organization
2  Any use of this software requires a license. */
3 
4 /** @file */
5 
6 #ifndef __mechanics_LinearStrandForce_h__
7 #define __mechanics_LinearStrandForce_h__
8 
9 #include "signal/signal.h"
10 #include "datatool/datatool.h"
11 #include "shape/shape.h"
12 #include "solve/solve.h"
13 #include "solve/SemiImplicit.h"
14 #include "mechanicsAS.h"
15 
16 namespace fe
17 {
18 namespace ext
19 {
20 
21 class FE_DL_EXPORT LinearStrandForce : public SemiImplicit::Force
22 {
23  public:
24  LinearStrandForce(sp<SemiImplicit> a_integrator);
25 virtual ~LinearStrandForce(void);
26 virtual void clear(void);
27 virtual void accumulate(void);
28 virtual bool validate(void);
29 
30 virtual void compile( sp<RecordGroup> rg_input,
31  std::vector<SemiImplicit::Particle> &a_particles,
32  SemiImplicit::CompileMatrix &a_compileMatrix);
33 
34  private:
35  class FE_DL_EXPORT Element
36  {
37  public:
38  t_solve_real m_length;
39  t_solve_real m_alpha_A;
40  t_solve_real m_alpha_B;
41  t_solve_real m_alpha_C;
42  t_solve_real m_lambda;
43  t_solve_real m_gamma;
44 
45  t_solve_v3 *m_location[3];
46  t_solve_v3 *m_velocity[3];
47  t_solve_v3 *m_force[3];
48 
49  t_solve_matrix m_dfdxAA;
50  t_solve_matrix m_dfdxAB;
51  t_solve_matrix m_dfdxAC;
52  t_solve_matrix m_dfdxBB;
53  t_solve_matrix m_dfdxBC;
54  t_solve_matrix m_dfdxCC;
55 
56  t_solve_matrix m_dfdvAA;
57  t_solve_matrix m_dfdvAB;
58  t_solve_matrix m_dfdvAC;
59  t_solve_matrix m_dfdvBB;
60  t_solve_matrix m_dfdvBC;
61  t_solve_matrix m_dfdvCC;
62 
63 
64  t_solve_matrix *m_p_dfdxAA;
65  t_solve_matrix *m_p_dfdxAB;
66  t_solve_matrix *m_p_dfdxAC;
67  t_solve_matrix *m_p_dfdxBB;
68  t_solve_matrix *m_p_dfdxBC;
69  t_solve_matrix *m_p_dfdxCC;
70 
71  t_solve_matrix *m_p_dfdvAA;
72  t_solve_matrix *m_p_dfdvAB;
73  t_solve_matrix *m_p_dfdvAC;
74  t_solve_matrix *m_p_dfdvBB;
75  t_solve_matrix *m_p_dfdvBC;
76  t_solve_matrix *m_p_dfdvCC;
77  };
78 
79  hp<SemiImplicit> m_integrator;
80 
81  std::vector<Element> m_elements;
82 
83 };
84 
85 } /* namespace */
86 } /* namespace */
87 
88 
89 #endif /* __mechanics_LinearBendForce_h__ */
90 
kernel
Definition: namespace.dox:3