Subversion Repositories OpenSees

Rev

Rev 3427 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1877 fmk 1
/* ****************************************************************** **
2
**    OpenSees - Open System for Earthquake Engineering Simulation    **
3
**          Pacific Earthquake Engineering Research Center            **
4
**                                                                    **
5
**                                                                    **
6
** (C) Copyright 1999, The Regents of the University of California    **
7
** All Rights Reserved.                                               **
8
**                                                                    **
9
** Commercial use of this program without express permission of the   **
10
** University of California, Berkeley, is strictly prohibited.  See   **
11
** file 'COPYRIGHT'  in main directory for information on usage and   **
12
** redistribution,  and for a DISCLAIMER OF ALL WARRANTIES.           **
13
**                                                                    **
14
** Developed by:                                                      **
15
**   Frank McKenna (fmckenna@ce.berkeley.edu)                         **
16
**   Gregory L. Fenves (fenves@ce.berkeley.edu)                       **
17
**   Filip C. Filippou (filippou@ce.berkeley.edu)                     **
18
**                                                                    **
19
** ****************************************************************** */
20
 
21
 
3436 fmk 22
// $Revision: 1.3 $
23
// $Date: 2008-04-14 22:38:26 $
1877 fmk 24
// $Source: /usr/local/cvs/OpenSees/SRC/damage/DamageModel.h,v $
25
 
26
#ifndef DamageModel_h
27
#define DamageModel_h         
28
 
29
// Written: Arash Altoontash, Gregory Deierlein
30
// Created: 08/02
31
// Revision: AA
32
//
33
// Description: This file contains the class definition for 
34
// damage model Damage modelis a base class and 
35
// thus no objects of it's type can be instantiated. It has pure virtual 
36
// functions which must be implemented in it's derived classes. 
37
 
38
#include <DomainComponent.h>
39
#include <MovableObject.h>
40
#include <TaggedObject.h>
41
#include <Vector.h>
42
 
43
class Response;
44
class DamageResponse;
45
 
46
enum DamageType {
47
        NotSpecified,
48
        Force,
49
        Deformation,
50
        PlasticDefo,
51
        TotalEnergy,
52
        PlasticEnergy,
53
};
54
 
55
class DamageModel :  public TaggedObject, public MovableObject
56
{
3427 fmk 57
 public:
1877 fmk 58
    DamageModel(int tag, int classTag);    
59
    virtual ~DamageModel();
60
 
3436 fmk 61
    virtual int setTrial(const Vector &trialVector) = 0;
1877 fmk 62
    virtual double getDamage (void) = 0;
63
    virtual double getPosDamage (void) = 0;
64
    virtual double getNegDamage (void) = 0;
65
 
66
    virtual int commitState (void) = 0;
67
    virtual int revertToLastCommit (void) = 0;    
68
    virtual int revertToStart (void) = 0;        
69
 
70
    virtual DamageModel *getCopy (void) = 0;
71
 
3436 fmk 72
    virtual Response *setResponse(const char **argv, int argc, OPS_Stream &theOutputStream);
73
    virtual int getResponse(int responseID, Information &info);
1877 fmk 74
 
75
    virtual int sendSelf(int commitTag, Channel &theChannel) = 0;  
76
    virtual int recvSelf(int commitTag, Channel &theChannel,
77
                         FEM_ObjectBroker &theBroker) = 0;
78
    virtual void Print(OPS_Stream &s, int flag =0) =0;
79
 
80
  protected:
81
 
82
  private:
83
 
84
};
85
 
86
 
87
#endif