xc
YieldSurface.h
1 // -*-c++-*-
2 //----------------------------------------------------------------------------
3 // XC program; finite element analysis code
4 // for structural analysis and design.
5 //
6 // Copyright (C) Luis C. Pérez Tato
7 //
8 // This program derives from OpenSees <http://opensees.berkeley.edu>
9 // developed by the «Pacific earthquake engineering research center».
10 //
11 // Except for the restrictions that may arise from the copyright
12 // of the original program (see copyright_opensees.txt)
13 // XC is free software: you can redistribute it and/or modify
14 // it under the terms of the GNU General Public License as published by
15 // the Free Software Foundation, either version 3 of the License, or
16 // (at your option) any later version.
17 //
18 // This software is distributed in the hope that it will be useful, but
19 // WITHOUT ANY WARRANTY; without even the implied warranty of
20 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 // GNU General Public License for more details.
22 //
23 //
24 // You should have received a copy of the GNU General Public License
25 // along with this program.
26 // If not, see <http://www.gnu.org/licenses/>.
27 //----------------------------------------------------------------------------
28 /*
29 ################################################################################
30 # COPYRIGHT (C): :-)) #
31 # PROJECT: Object Oriented Finite Element Program #
32 # PURPOSE: General platform for elaso-plastic constitutive model #
33 # implementation #
34 # CLASS: YieldSurface (the base class for all yield surfaces) #
35 # #
36 # VERSION: #
37 # LANGUAGE: C++.ver >= 2.0 ( Borland C++ ver=3.00, SUN C++ ver=2.1 ) #
38 # TARGET OS: DOS || UNIX || . . . #
39 # DESIGNER(S): Boris Jeremic, Zhaohui Yang #
40 # PROGRAMMER(S): Boris Jeremic, Zhaohui Yang #
41 # #
42 # #
43 # DATE: 08-03-2000 #
44 # UPDATE HISTORY: #
45 # #
46 # #
47 # #
48 # #
49 # SHORT EXPLANATION: The goal is to create a platform for efficient and easy #
50 # implementation of any elasto-plastic constitutive model! #
51 # #
52 ################################################################################*/
53 
54 #ifndef YieldSurface_H
55 #define YieldSurface_H
56 
57 #include <iostream>
58 #include "utility/kernel/CommandEntity.h"
59 #include "EPState.h"
60 
61 namespace XC {
62  class BJtensor;
63 
66 
70  {
71  public:
72  YieldSurface(void){} //Normal Constructor
73  inline virtual ~YieldSurface(void){}
74  virtual YieldSurface *getCopy(void) const= 0; //create a clone of itself
75 
76  virtual double f( const EPState *EPS ) const = 0; //pure virtual func
77  virtual BJtensor dFods( const EPState *EPS ) const = 0; //pure virtual func
78 
79  // 1st derivative of F over scalar internal variables (at most 4 scalar internal vars allowed currently)
80  virtual double xi_s1( const EPState *EPS ) const;
81  virtual double xi_s2( const EPState *EPS ) const;
82  virtual double xi_s3( const EPState *EPS ) const;
83  virtual double xi_s4( const EPState *EPS ) const;
84 
85  // 1st derivative of F over scalar internal variables (at most 4 tensor internal vars allowed currently)
86  virtual BJtensor xi_t1( const EPState *EPS ) const;
87  virtual BJtensor xi_t2( const EPState *EPS ) const;
88  virtual BJtensor xi_t3( const EPState *EPS ) const;
89  virtual BJtensor xi_t4( const EPState *EPS ) const;
90 
91 
92  virtual void print(std::ostream &os) const;
93  };
94 std::ostream& operator<<(std::ostream &, const YieldSurface &);
95 } // end of XC namespace
96 
97 
98 #endif
99 
virtual BJtensor xi_t4(const EPState *EPS) const
First derivative of F over the 4th scalar var.
Definition: YieldSurface.cpp:134
Boris Jeremic tensor class.
Definition: BJtensor.h:112
Base class for yield surfaces.
Definition: YieldSurface.h:69
Base class for all elasto-plastic states.
Definition: EPState.h:151
Objet that can execute python scripts.
Definition: CommandEntity.h:40
Open source finite element program for structural analysis.
Definition: ContinuaReprComponent.h:35