PyLiq1.h

Go to the documentation of this file.
00001 /* *********************************************************************
00002 **    Module:   PyLiq1.h 
00003 **
00004 **    Purpose:  Provide a p-y material that gets pore pressure from a
00005 **                              specified element that contains a PorousFluidSolid.
00006 **              
00007 **
00008 **    Developed by Ross W. Boulanger
00009 **    (C) Copyright 2002, All Rights Reserved.
00010 **
00011 ** ****************************************************************** */
00012 
00013 // $Revision: 1.0
00014 // $Date: 2002/5/15
00015 // $Source: /OpenSees/SRC/material/uniaxial/PyLiq1.h
00016 
00017 #ifndef PYLIQ1_H
00018 #define PYLIQ1_H
00019 
00020 // Written: RWB
00021 // Created: May 2002
00022 //
00023 // Description: This file contains the class definition for PyLiq1.
00024 // 
00025 
00026 #include <UniaxialMaterial.h>
00027 #include <Domain.h>
00028 #include <FourNodeQuad.h>
00029 #include <FluidSolidPorousMaterial.h>
00030 #include <PySimple1.h>
00031 #include <iostream>
00032 #include <string>
00033 
00034 class PyLiq1 : public PySimple1
00035 {
00036   public:
00037     PyLiq1(int tag, int classtag, int soilType, double pult, double y50, double drag,
00038            double dashpot, double pRes, int solidElem1, int solidElem2, Domain *theDomain);
00039     PyLiq1();
00040     ~PyLiq1();
00041 
00042     const char *getClassType(void) const {return "PyLiq1";};
00043 
00044     int setTrialStrain(double y, double yRate); 
00045     double getStrain(void);          
00046     double getStress(void);
00047     double getTangent(void);
00048     double getStrainRate(void);
00049     double getDampTangent(void);
00050     double getInitialTangent(void);
00051     
00052     int commitState(void);
00053     int revertToLastCommit(void);    
00054     int revertToStart(void);        
00055 
00056     UniaxialMaterial *getCopy(void);
00057     
00058     int sendSelf(int commitTag, Channel &theChannel);  
00059     int recvSelf(int commitTag, Channel &theChannel, 
00060                  FEM_ObjectBroker &theBroker);
00061     
00062     //  Command for initiating vertConsolStress from TclUpdateMaterialStageCommand
00063     int updateParameter(int snum, Information &eleInformation);
00064     
00065     void Print(OPS_Stream &s, int flag =0);
00066     
00067   protected:
00068     
00069   private:
00070 
00071         // Residual p (other parameters in PySimple1 base class)
00072         double pRes;
00073 
00074         // Committed and trial values for p, y, and ru
00075         double Ty;
00076         double Cy;
00077         double Tp;
00078         double Cp;
00079         double Tangent;
00080         double maxTangent;
00081         double Tru;
00082         double Cru;
00083         double Hru;
00084 
00085         // Solid element from which pore pressures are obtained, domain pointer
00086         // and stage information to get the initial vertical effective stress.
00087         int solidElem1;
00088         int solidElem2;
00089         double meanConsolStress;
00090     static int loadStage;
00091         int lastLoadStage;
00092         std::string elemFlag; 
00093         Domain *theDomain;
00094         FourNodeQuad *theQuad1;
00095         FourNodeQuad *theQuad2;
00096 
00097         // Initial tangent
00098         double initialTangent;
00099         
00100         // Function for obtaining effective stresses from adjoining solid soil elements
00101         double getEffectiveStress(void);
00102         static Vector stressV3;
00103         
00104 };
00105 
00106 #endif // PYLIQ1_H

Generated on Mon Oct 23 15:05:21 2006 for OpenSees by doxygen 1.5.0