Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

LSMDD_Parameters.h

Go to the documentation of this file.
00001 /*
00002  * File:        LSMDD_Parameters.h
00003  * Copyright:   (c) 2005-2007 Princeton University
00004  * Author(s):   Kevin T. Chu
00005  * Revision:    $Revision: 379 $
00006  * Modified:    $Date: 2007-08-07 10:02:34 -0400 (Tue, 07 Aug 2007) $
00007  * Description: Header file for the LSMDD_Parameters class
00008  */
00009 
00010 #ifndef included_LSMDD_Parameters_h
00011 #define included_LSMDD_Parameters_h
00012 
00096 // System Headers
00097 #include <float.h>
00098 #include <string>
00099 #include <vector>
00100 
00101 // SAMRAI Headers
00102 #include "SAMRAI_config.h"
00103 #include "tbox/Database.h"
00104 #include "tbox/Pointer.h"
00105 
00106 // LSMDD Headers
00107 #include "LSMDD_config.h"
00108 #include "BurgersVector.h"
00109 
00110 // namespaces
00111 using namespace std;
00112 using namespace SAMRAI;
00113 using namespace tbox;
00114 
00115 
00116 /******************************************************************
00117  *
00118  * LSMDD_Parameters Class Definition
00119  *
00120  ******************************************************************/
00121 
00122 namespace LSMDD {
00123 
00124 class LSMDD_Parameters
00125 {
00126 public:
00127 
00129 
00143   LSMDD_Parameters() {
00144     d_shear_modulus  = 0.0;
00145     d_poisson_ratio  = 0.0;
00146     d_glide_mobility = 0.0;
00147     d_climb_mobility = 0.0;
00148     d_min_dislocation_segment_length = 0.0;
00149     d_max_angle_for_pure_screw = 0.0;
00150     d_lsmdd_debug_on = false;
00151   }
00152 
00163   LSMDD_Parameters(Pointer<Database> input_db);
00164 
00168   virtual inline ~LSMDD_Parameters(){}
00169 
00178   LSMDD_Parameters( const LSMDD_Parameters& rhs ) {
00179     d_shear_modulus  = rhs.d_shear_modulus;
00180     d_poisson_ratio  = rhs.d_poisson_ratio;
00181     d_glide_mobility = rhs.d_glide_mobility;
00182     d_climb_mobility = rhs.d_climb_mobility;
00183     d_min_dislocation_segment_length = rhs.d_min_dislocation_segment_length;
00184     d_max_angle_for_pure_screw = rhs.d_max_angle_for_pure_screw; 
00185     d_lsmdd_debug_on = rhs.d_lsmdd_debug_on;
00186   }
00187 
00189 
00191 
00208   virtual void initializeParametersFromDatabase(Pointer<Database>);
00209 
00211 
00212 
00214 
00230   virtual inline void setShearModulus(double shear_modulus) {
00231     d_shear_modulus = shear_modulus;
00232   }
00233 
00242   virtual inline double getShearModulus() const {
00243     return d_shear_modulus;
00244   }
00245 
00255   virtual inline void setPoissonRatio(double poisson_ratio) {
00256     d_poisson_ratio = poisson_ratio;
00257   }
00258 
00267   virtual inline double getPoissonRatio() const {
00268     return d_poisson_ratio;
00269   }
00270 
00272 
00273 
00275 
00291   virtual inline void setGlideMobility(double glide_mobility) {
00292     d_glide_mobility = glide_mobility;
00293   }
00294 
00303   virtual inline double getGlideMobility() const {
00304     return d_glide_mobility;
00305   }
00306 
00316   virtual inline void setClimbMobility(double climb_mobility) {
00317     d_climb_mobility = climb_mobility;
00318   }
00319 
00328   virtual inline double getClimbMobility() const {
00329     return d_climb_mobility;
00330   }
00331 
00341   virtual inline void setCoreRadius(double core_radius) {
00342     d_core_radius = core_radius;
00343   }
00344 
00353   virtual inline double getCoreRadius() const {
00354     return d_core_radius;
00355   }
00356 
00358 
00359 
00361 
00376   virtual inline void activateDebugMode() {
00377     d_lsmdd_debug_on = true;
00378   }
00379 
00388   virtual inline void deactivateDebugMode() {
00389     d_lsmdd_debug_on = false;
00390   }
00391 
00401   virtual inline bool debugOn() const {
00402     return d_lsmdd_debug_on;
00403   }
00404 
00417   virtual inline void setMinDislocationSegmentLength(
00418     double min_dislocation_segment_length) {
00419       d_min_dislocation_segment_length = min_dislocation_segment_length;
00420   }
00421 
00432   virtual inline double getMinDislocationSegmentLength() const {
00433     return d_min_dislocation_segment_length;
00434   }
00435 
00448   virtual inline void setMaxAngleForPureScrew(
00449     double max_angle_for_pure_screw) {
00450       d_max_angle_for_pure_screw = max_angle_for_pure_screw;
00451   }
00452 
00463   virtual inline double getMaxAngleForPureScrew() const {
00464     return d_max_angle_for_pure_screw;
00465   }
00466 
00468 
00469 
00471 
00488   virtual void printClassData(ostream& os) const;
00489  
00491 
00492 
00494 
00511   virtual inline const LSMDD_Parameters& operator=( 
00512     const LSMDD_Parameters& rhs ) {
00513 
00514       // check for assignment to self
00515       if (this == &rhs) return *this;
00516       
00517       d_shear_modulus  = rhs.d_shear_modulus;
00518       d_poisson_ratio  = rhs.d_poisson_ratio;
00519       d_glide_mobility = rhs.d_glide_mobility;
00520       d_climb_mobility = rhs.d_climb_mobility;
00521       d_lsmdd_debug_on       = rhs.d_lsmdd_debug_on;
00522       return *this;
00523   }
00524 
00526 
00527 protected:
00528 
00529   /*
00530    * Data Members
00531    */
00532 
00533   // material parameters
00534   double d_shear_modulus;
00535   double d_poisson_ratio;
00536 
00537   // dislocation parameters
00538   double d_glide_mobility;
00539   double d_climb_mobility;
00540   double d_core_radius;       
00541 
00542   // minimum dislocation line segment length for considering the 
00543   // two endpoints of the segment to be numerically distinct
00544   double d_min_dislocation_segment_length;
00545 
00546   // maximum angle for considering a dislocation line segment
00547   // to be mixed vs. pure screw
00548   double d_max_angle_for_pure_screw;
00549 
00550   // simulation parameters
00551   bool d_lsmdd_debug_on;
00552 
00553 };
00554 
00555 } // end LSMDD namespace
00556 
00557 #endif
00558 

Generated on Tue Aug 7 15:43:41 2007 for LSMDD by doxygen 1.3.4