00001 /* ****************************************************************** ** 00002 ** OpenSees - Open System for Earthquake Engineering Simulation ** 00003 ** Pacific Earthquake Engineering Research Center ** 00004 ** ** 00005 ** ** 00006 ** (C) Copyright 1999, The Regents of the University of California ** 00007 ** All Rights Reserved. ** 00008 ** ** 00009 ** Commercial use of this program without express permission of the ** 00010 ** University of California, Berkeley, is strictly prohibited. See ** 00011 ** file 'COPYRIGHT' in main directory for information on usage and ** 00012 ** redistribution, and for a DISCLAIMER OF ALL WARRANTIES. ** 00013 ** ** 00014 ** Developed by: ** 00015 ** Frank McKenna (fmckenna@ce.berkeley.edu) ** 00016 ** Gregory L. Fenves (fenves@ce.berkeley.edu) ** 00017 ** Filip C. Filippou (filippou@ce.berkeley.edu) ** 00018 ** ** 00019 ** ****************************************************************** */ 00020 00021 // $Revision: 1.1.1.1 $ 00022 // $Date: 2000/09/15 08:23:16 $ 00023 // $Source: /usr/local/cvs/OpenSees/SRC/analysis/dof_grp/LagrangeDOF_Group.cpp,v $ 00024 00025 00026 // File: ~/analysis/dof_grp/LagrangeDOF_Group.h 00027 // 00028 // Written: fmk 00029 // Created: 02/99 00030 // Revision: A 00031 // 00032 // Purpose: This file contains the code for implementing the methods 00033 // of the LagrangeDOF_Group class interface. 00034 // 00035 // What: "@(#) LagrangeDOF_Group.C, revA" 00036 00037 00038 #include <LagrangeDOF_Group.h> 00039 #include <stdlib.h> 00040 00041 #include <Node.h> 00042 #include <Vector.h> 00043 #include <Matrix.h> 00044 #include <TransientIntegrator.h> 00045 #include <SP_Constraint.h> 00046 #include <MP_Constraint.h> 00047 00048 LagrangeDOF_Group::LagrangeDOF_Group(int tag, SP_Constraint &spPtr) 00049 :DOF_Group(tag, 1) 00050 { 00051 00052 } 00053 00054 LagrangeDOF_Group::LagrangeDOF_Group(int tag, MP_Constraint &mpPtr) 00055 :DOF_Group(tag, (mpPtr.getRetainedDOFs()).Size()) 00056 { 00057 00058 } 00059 00060 00061 // ~LagrangeDOF_Group(); 00062 // destructor. 00063 00064 LagrangeDOF_Group::~LagrangeDOF_Group() 00065 { 00066 00067 } 00068 00069 const Matrix & 00070 LagrangeDOF_Group::getTangent(Integrator *theIntegrator) 00071 { 00072 // does nothing - the Lagrange FE_Elements provide coeffs to tangent 00073 if (tangent == 0) { 00074 int numDOF = this->getNumDOF(); 00075 tangent = new Matrix(numDOF,numDOF); 00076 00077 if (tangent == 0) { 00078 cerr << "FATAL LagrangeDOF_Group::getTangent() "; 00079 cerr << " ranout of memory\n"; 00080 exit(-1); 00081 } 00082 } 00083 00084 tangent->Zero(); 00085 return *tangent; 00086 00087 } 00088 00089 const Vector & 00090 LagrangeDOF_Group::getUnbalance(Integrator *theIntegrator) 00091 { 00092 // does nothing - the Lagrange FE_Elements provide residual 00093 unbalance->Zero(); 00094 return *unbalance; 00095 } 00096 00097 // void setNodeDisp(const Vector &u); 00098 // Method to set the corresponding nodes displacements to the 00099 // values in u, components identified by myID; 00100 00101 void 00102 LagrangeDOF_Group::setNodeDisp(const Vector &u) 00103 { 00104 return; 00105 } 00106 00107 00108 // void setNodeVel(const Vector &udot); 00109 // Method to set the corresponding nodes velocities to the 00110 // values in udot, components identified by myID; 00111 00112 void 00113 LagrangeDOF_Group::setNodeVel(const Vector &udot) 00114 { 00115 return; 00116 } 00117 00118 00119 00120 // void setNodeAccel(const Vector &udotdot); 00121 // Method to set the corresponding nodes accelerations to the 00122 // values in udotdot, components identified by myID; 00123 00124 void 00125 LagrangeDOF_Group::setNodeAccel(const Vector &udotdot) 00126 { 00127 return; 00128 } 00129 00130 00131 // void setNodeIncrDisp(const Vector &u); 00132 // Method to set the corresponding nodes displacements to the 00133 // values in u, components identified by myID; 00134 00135 void 00136 LagrangeDOF_Group::incrNodeDisp(const Vector &u) 00137 { 00138 return; 00139 } 00140 00141 00142 // void setNodeincrVel(const Vector &udot); 00143 // Method to set the corresponding nodes velocities to the 00144 // values in udot, components identified by myID; 00145 00146 void 00147 LagrangeDOF_Group::incrNodeVel(const Vector &udot) 00148 { 00149 return; 00150 } 00151 00152 00153 00154 // void setNodeIncrAccel(const Vector &udotdot); 00155 // Method to set the corresponding nodes accelerations to the 00156 // values in udotdot, components identified by myID; 00157 00158 void 00159 LagrangeDOF_Group::incrNodeAccel(const Vector &udotdot) 00160 { 00161 return; 00162 } 00163 00164 00165 const Vector & 00166 LagrangeDOF_Group::getCommittedDisp(void) 00167 { 00168 unbalance->Zero(); 00169 return *unbalance; 00170 } 00171 00172 const Vector & 00173 LagrangeDOF_Group::getCommittedVel(void) 00174 { 00175 unbalance->Zero(); 00176 return *unbalance; 00177 } 00178 00179 const Vector & 00180 LagrangeDOF_Group::getCommittedAccel(void) 00181 { 00182 unbalance->Zero(); 00183 return *unbalance; 00184 } 00185 00186 void 00187 LagrangeDOF_Group::addMtoTang(double fact) 00188 { 00189 } 00190 00191 void 00192 LagrangeDOF_Group::zeroUnbalance(void) 00193 { 00194 } 00195 00196 void 00197 LagrangeDOF_Group::zeroTangent(void) 00198 { 00199 } 00200 00201 void 00202 LagrangeDOF_Group::addPtoUnbalance(double fact) 00203 { 00204 00205 } 00206 00207 void 00208 LagrangeDOF_Group::addPIncInertiaToUnbalance(double fact) 00209 { 00210 00211 } 00212 00213 void 00214 LagrangeDOF_Group::addM_Force(const Vector &Udotdot, double fact) 00215 { 00216 00217 }