00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef included_DislocationReactionModule_h
00011 #define included_DislocationReactionModule_h
00012
00058
00059 #include <string>
00060
00061
00062 #include "SAMRAI_config.h"
00063 #include "PatchHierarchy.h"
00064 #include "tbox/Array.h"
00065
00066
00067 #include "LSMDD_config.h"
00068 #include "BurgersVector.h"
00069 #include "LSMDD_Parameters.h"
00070
00071
00072 using namespace SAMRAI;
00073 using namespace hier;
00074 using namespace tbox;
00075
00076
00077
00078
00079
00080
00081
00082
00083 namespace LSMDD {
00084
00085 class DislocationReactionModule
00086 {
00087 public:
00088
00111 static void setupReactionData(int& rxn_status_handle,
00112 int& rxn_line_number_handle);
00113
00137 static void allocateReactionData(PatchHierarchy<3>& hierarchy,
00138 int& rxn_status_handle,
00139 int& rxn_line_number_handle);
00140
00164 static void deallocateReactionData(PatchHierarchy<3>& hierarchy,
00165 int& rxn_status_handle,
00166 int& rxn_line_number_handle);
00167
00234 static int computeForceOnDislocationLineWithReactions(
00235 double &force_x,
00236 double &force_y,
00237 double &force_z,
00238 int &rxn_line_num,
00239 double **phi_data,
00240 double **psi_data,
00241 double *tangent_vectors_x,
00242 double *tangent_vectors_y,
00243 double *tangent_vectors_z,
00244 Array< BurgersVector >& burgers_vectors,
00245 double sigma11,
00246 double sigma22,
00247 double sigma33,
00248 double sigma23,
00249 double sigma31,
00250 double sigma12,
00251 int *level_set_fcn_box_dims,
00252 int *level_set_fcn_ghostcell_width,
00253 int idx_x,
00254 int idx_y,
00255 int idx_z,
00256 const double *X,
00257 const double *dX,
00258 const int line_handle,
00259 const LSMDD_Parameters& lsmdd_params,
00260 double interaction_force_strength);
00261
00262
00263 protected:
00264
00335 static int checkForReaction(
00336 int& rxn_line_num,
00337 double& relative_position_x,
00338 double& relative_position_y,
00339 double& relative_position_z,
00340 double **phi_data,
00341 double **psi_data,
00342 double *tangent_vectors_x,
00343 double *tangent_vectors_y,
00344 double *tangent_vectors_z,
00345 Array< BurgersVector >& burgers_vectors,
00346 int *level_set_fcn_box_dims,
00347 int *level_set_fcn_ghostcell_width,
00348 int idx_x,
00349 int idx_y,
00350 int idx_z,
00351 const double *X,
00352 const double *dX,
00353 const int line_handle,
00354 const LSMDD_Parameters& lsmdd_params);
00355
00356
00357 private:
00358
00359
00360
00361
00362
00363
00364
00365 DislocationReactionModule(){}
00366
00367
00368
00369
00370
00371
00372
00373
00374 DislocationReactionModule(const DislocationReactionModule& rhs){}
00375
00376
00377
00378
00379
00380
00381
00382
00383
00384
00385 const DislocationReactionModule& operator=(
00386 const DislocationReactionModule& rhs){ return *this; }
00387
00388 };
00389
00390 }
00391
00392 #endif