00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef MD_EL_H
00029 #define MD_EL_H
00030
00031 #include <math.h>
00032
00033 #include <iOPS_Stream.h>
00034 #include <iomanip.h>
00035
00036 #include "EL.h"
00037
00038 class MDEvolutionLaw : public EvolutionLaw
00039 {
00040
00041 public:
00042
00043
00044 double Mc;
00045 double Me;
00046 double Lambda;
00047 double ec_ref;
00048 double p_ref;
00049
00050
00051 double kc_b;
00052 double kc_d;
00053 double ke_b;
00054 double ke_d;
00055
00056
00057
00058 double ho;
00059 double Cm;
00060 double eo;
00061
00062
00063
00064 double Ao;
00065
00066
00067 double Fmax;
00068 double Cf;
00069 double a;
00070
00071 public:
00072
00073
00074 MDEvolutionLaw( double Mcd = 1.14,
00075 double Med = 1.14,
00076 double Lamdad = 0.025,
00077 double ec_refd = 0.8,
00078 double p_refd = 100,
00079 double kc_bd = 3.975,
00080 double kc_dd = 4.200,
00081 double ke_bd = 2.000,
00082 double ke_dd = 0.070,
00083 double hod = 1200.0,
00084 double Cmd = 0.0,
00085
00086 double Aod = 2.64,
00087 double Fmaxd = 100,
00088 double Cfd = 100,
00089 double ad = 0.6) :
00090 Mc (Mcd), Me(Med), Lambda(Lamdad), ec_ref(ec_refd), p_ref(p_refd),
00091 kc_b(kc_bd), kc_d(kc_dd), ke_b(ke_bd), ke_d(ke_dd), ho(hod), Cm(Cmd),
00092 Ao(Aod), Fmax(Fmaxd), Cf(Cfd), a(ad), eo(0.0) {}
00093
00094 MDEvolutionLaw(const MDEvolutionLaw &MDE );
00095
00096 MDEvolutionLaw *newObj();
00097
00098 void InitVars(EPState *EPS);
00099
00100
00101 void setInitD(EPState *EPS);
00102
00103 double getKp( EPState *EPS, double dummy );
00104
00105 void UpdateAllVars( EPState *EPS, double dlamda );
00106
00107
00108 void print();
00109
00110
00111 double getMc() const;
00112 double getMe() const;
00113 double getLambda() const;
00114 double getec_ref() const;
00115 double getp_ref() const;
00116
00117 double getkc_b() const;
00118 double getkc_d() const;
00119 double getke_b() const;
00120 double getke_d() const;
00121
00122 double getho() const;
00123 double getCm() const;
00124 double geteo() const;
00125 void seteo( double eod);
00126
00127
00128 double getAo() const;
00129
00130 double getFmax() const;
00131 double getCf() const;
00132 double geta() const;
00133
00134
00135
00136
00137
00138
00139 friend OPS_Stream& operator<< (OPS_Stream& os, const MDEvolutionLaw & MDEL)
00140 {
00141 os.unsetf( ios::scientific );
00142 os.precision(5);
00143
00144
00145 os << endlnn << "Manzari-Dafalias Evolution Law's parameters:" << endlnn;
00146 os << "Mc = " << MDEL.getMc() << "; ";
00147
00148 os << "Me = " << MDEL.getMe() << "; ";
00149
00150 os << "Lambda = " << MDEL.getLambda() << "; ";
00151
00152 os << "ec_ref = " << MDEL.getec_ref() << "; ";
00153
00154 os << "p_ref = " << MDEL.getp_ref() << "kPa" << "; " << endlnn;
00155
00156
00157 os << "kc_b = " << MDEL.getkc_b() << "; ";
00158
00159 os << "kc_d = " << MDEL.getkc_d() << "; ";
00160
00161 os << "ke_b = " << MDEL.getke_b() << "; ";
00162
00163 os << "ke_d = " << MDEL.getke_d() << "; " << endlnn;
00164
00165
00166
00167
00168 os << "ho = " << MDEL.getho() << "; ";
00169
00170 os << "Cm = " << MDEL.getCm() << "; " << "eo = " << MDEL.geteo() << endlnn;
00171
00172
00173
00174
00175 os << "Ao = " << MDEL.getAo() << "; ";
00176
00177 os << "Fmax = " << MDEL.getFmax() << "; ";
00178
00179 os << "Cf = " << MDEL.getCf() << "; " << endlnn << endlnn;
00180
00181 return os;
00182 }
00183
00184 double g_A(double theta, double e);
00185 double g_WW(double theta, double e);
00186
00187
00188 };
00189
00190
00191 #endif
00192
00193
00194
00195
00196
00197