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