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

LSMDD::PeriodicDislocationArrayElasticStressModule Class Reference

The PeriodicDislocationArrayElasticStressModule class provides functionality to compute the elastic stress field due to periodic arrays of dislocation lines. The elastic stress field is computed using the Fourier transform technique discussed in Xiang et. al. (2003). More...

#include <PeriodicDislocationArrayElasticStressModule.h>

Inheritance diagram for LSMDD::PeriodicDislocationArrayElasticStressModule:

LSMDD::ElasticStressStrategy List of all members.

Public Member Functions

Constructor and destructor
 PeriodicDislocationArrayElasticStressModule (Pointer< Database > input_db, Pointer< PatchHierarchy< 3 > > patch_hierarchy)
virtual ~PeriodicDislocationArrayElasticStressModule ()
Methods for accessing elastic stress field data
virtual int getStressFieldHandle ()
Methods for computing elastic stress field
virtual void setStressFieldToZero ()
virtual void addStressFieldForDislocationLine (const int dislocation_line_handle, const BurgersVector &burgers_vector, const LSMDD_Parameters &lsmdd_params)
virtual void addAuxiliaryStressField (const int auxiliary_stress_field_handle, const LSMDD_Parameters &lsmdd_params)
virtual void addAuxiliaryStressFieldComponent (const int auxiliary_stress_field_handle, const LSMDD_Parameters &lsmdd_params, const int component)
Accessor methods for object state
virtual void printClassData (ostream &os) const

Protected Member Functions

Utility methods
virtual void getFromInput (Pointer< Database > input_db)
virtual void computeStressOnPatchTimeEfficient (Pointer< Patch< 3 > > patch, const int dislocation_line_handle, const BurgersVector &burgers_vector, const LSMDD_Parameters &lsmdd_params)
virtual void computeStressOnPatchMemoryEfficient (Pointer< Patch< 3 > > patch, LSMDD::STRESS_COMPONENT_TYPE stress_field_component, FFT_DATA *stress_field_fft_data, const int dislocation_line_handle, const BurgersVector &burgers_vector, const LSMDD_Parameters &lsmdd_params)
virtual void allocateFFTData ()
virtual void deallocateFFTData ()
virtual void addStressFieldToSAMRAIPatchData (Pointer< Patch< 3 > > patch, const LSMDD_Parameters &lsmdd_params)
virtual void addStressFieldComponentToSAMRAIPatchData (Pointer< Patch< 3 > > patch, FFT_DATA *stress_field_fft_data, const LSMDD::STRESS_COMPONENT_TYPE stress_component, const LSMDD_Parameters &lsmdd_params)
virtual void initializeElasticStressModule ()

Protected Attributes

Pointer< PatchHierarchy< 3 > > d_patch_hierarchy
bool d_conserve_memory
bool d_use_dynamic_memory_allocation
int d_stress_field_handle
Box< 3 > d_global_box
Box< 3 > d_local_box
FFT_DATA * d_dislocation_line_fft_data [3]
FFT_DATA * d_stress_field_fft_data [6]
bool d_fft_data_allocated
fft_plan_3d * d_fft_plan
double d_fft_scale_factor
bool d_initialization_complete

Detailed Description

The PeriodicDislocationArrayElasticStressModule class provides functionality to compute the elastic stress field due to periodic arrays of dislocation lines. The elastic stress field is computed using the Fourier transform technique discussed in Xiang et. al. (2003).

User-specified parameters (input database field)

When using the PeriodicDislocationArrayElasticStressModule, it is possible to modify the behavior of the module through an input file. The input data parameters available for the user are described below.

PeriodicDislocationArrayElasticStressModule Input Database Parameters

Sample Input File

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

PeriodicDislocationArrayElasticStressModule { conserve_memory = TRUE use_dynamic_memory_allocation = FALSE }

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

NOTES

USAGE


Constructor & Destructor Documentation

LSMDD::PeriodicDislocationArrayElasticStressModule::PeriodicDislocationArrayElasticStressModule Pointer< Database >  input_db,
Pointer< PatchHierarchy< 3 > >  patch_hierarchy
 

The constructor for the PeriodicDislocationArrayElasticStressModule sets up the elastic stress calculation using parameters read from the input database.

Arguments:

  • input_db (in): input database containing user-defined parameters
  • patch_hierarchy (in): PatchHierarchy for computation

virtual LSMDD::PeriodicDislocationArrayElasticStressModule::~PeriodicDislocationArrayElasticStressModule  )  [virtual]
 

The destructor for PeriodicDislocationArrayElasticStressModule frees memory used to store the stress field, the FFT data, and the plan used by S. Plimpton's parallel FFT software.


Member Function Documentation

virtual void LSMDD::PeriodicDislocationArrayElasticStressModule::addAuxiliaryStressField const int  auxiliary_stress_field_handle,
const LSMDD_Parameters lsmdd_params
[virtual]
 

addAuxiliaryStressField() adds specified auxiliary stress field to the total elastic stress field.

Arguments:

  • auxiliary_stress_field_handle (in): PatchData handle for auxiliary stress field
  • lsmdd_params (in): parameters for dislocation dynamics simulation

Return value: none

Implements LSMDD::ElasticStressStrategy.

virtual void LSMDD::PeriodicDislocationArrayElasticStressModule::addAuxiliaryStressFieldComponent const int  auxiliary_stress_field_handle,
const LSMDD_Parameters lsmdd_params,
const int  component
[virtual]
 

addAuxiliaryStressFieldComponent() adds the component of the specified auxiliary stress field to the total elastic stress field.

Arguments:

  • auxiliary_stress_field_handle (in): PatchData handle for auxiliary stress field
  • lsmdd_params (in): parameters for dislocation dynamics simulation
  • component (in): component of auxiliary stress field to update

Return value: none

NOTES:

  • component is the component of stress field to add to

  • auxiliary stress data is assumed to be contained in the component of PatchData corresponding to auxiliary_stress_field_handle

Implements LSMDD::ElasticStressStrategy.

virtual void LSMDD::PeriodicDislocationArrayElasticStressModule::addStressFieldComponentToSAMRAIPatchData Pointer< Patch< 3 > >  patch,
FFT_DATA *  stress_field_fft_data,
const LSMDD::STRESS_COMPONENT_TYPE  stress_component,
const LSMDD_Parameters lsmdd_params
[protected, virtual]
 

addStressFieldComponentToSAMRAIPatchData() adds the current elastic stress field stored in the d_stress_field_fft_data FFT_DATA structures to the stress field stored in the SAMRAI PatchData associated with d_stress_field_handle.

Arguments:

  • patch (in): patch on which to accumulate stress field data
  • stress_field_fft_data (in): pointer to FFT_DATA that holds the contribution to the stress field
  • stress_component (in): component of stress field to accumulate
  • lsmdd_params (in): parameters for dislocation dynamics simulation

Return value: none

virtual void LSMDD::PeriodicDislocationArrayElasticStressModule::addStressFieldForDislocationLine const int  dislocation_line_handle,
const BurgersVector burgers_vector,
const LSMDD_Parameters lsmdd_params
[virtual]
 

addStressFieldForDislocationLine() adds the stress field due to the specified dislocation line to the total elastic stress field.

Arguments:

  • dislocation_line_field_handle (in): PatchData handle for dislocation line for which to compute stress field contribution
  • burgers_vector (in): Burgers vector of dislocation line
  • lsmdd_params (in): parameters for dislocation dynamics simulation

Return value: none

Implements LSMDD::ElasticStressStrategy.

virtual void LSMDD::PeriodicDislocationArrayElasticStressModule::addStressFieldToSAMRAIPatchData Pointer< Patch< 3 > >  patch,
const LSMDD_Parameters lsmdd_params
[protected, virtual]
 

addStressFieldToSAMRAIPatchData() adds the current elastic stress field stored in the d_stress_field_fft_data FFT_DATA structures to the stress field stored in the SAMRAI PatchData associated with d_stress_field_handle.

Arguments:

  • patch (in): patch on which to accumulate stress field data
  • lsmdd_params (in): parameters for dislocation dynamics simulation

Return value: none

NOTES:

  • This method should only be used when memory conservation is NOT being used (i.e. the FFT data of each stress component has its own memory).

virtual void LSMDD::PeriodicDislocationArrayElasticStressModule::allocateFFTData  )  [protected, virtual]
 

allocateFFTData() allocates FFT_DATA that stores the dislocation line field and stress field in frequency space.

Arguments: none

Return value: none

virtual void LSMDD::PeriodicDislocationArrayElasticStressModule::computeStressOnPatchMemoryEfficient Pointer< Patch< 3 > >  patch,
LSMDD::STRESS_COMPONENT_TYPE  stress_field_component,
FFT_DATA *  stress_field_fft_data,
const int  dislocation_line_handle,
const BurgersVector burgers_vector,
const LSMDD_Parameters lsmdd_params
[protected, virtual]
 

computeStressOnPatchMemoryEfficient() computes the stress fields (in frequency space) on the specified patch. This function trades-off greater computation time for more efficient memory usage in the calculation of the stress fields.

Arguments:

  • patch (in): reference to Patch on which to compute stress fields
  • stress_field_component (in): component of stress field to compute
  • dislocation_line_field_handle (in): PatchData handle for dislocation line for which to compute stress field contribution
  • burgers_vector (in): Burgers vector of dislocation line
  • lsmdd_params (in): parameters for dislocation dynamics simulation

Return value: none

virtual void LSMDD::PeriodicDislocationArrayElasticStressModule::computeStressOnPatchTimeEfficient Pointer< Patch< 3 > >  patch,
const int  dislocation_line_handle,
const BurgersVector burgers_vector,
const LSMDD_Parameters lsmdd_params
[protected, virtual]
 

computeStressOnPatchTimeEfficient() computes the stress fields (in frequency space) on the specified patch. This function trades-off greater memory usage for more time efficiency in the computation of the stress fields.

Arguments:

  • patch (in): reference to Patch on which to compute stress fields
  • dislocation_line_field_handle (in): PatchData handle for dislocation line for which to compute stress field contribution
  • burgers_vector (in): Burgers vector of dislocation line
  • lsmdd_params (in): parameters for dislocation dynamics simulation

Return value: none

virtual void LSMDD::PeriodicDislocationArrayElasticStressModule::deallocateFFTData  )  [protected, virtual]
 

deallocateFFTData() deallocates FFT_DATA that stores the dislocation line field and stress field in frequency space.

Arguments: none

Return value: none

virtual void LSMDD::PeriodicDislocationArrayElasticStressModule::getFromInput Pointer< Database >  input_db  )  [protected, virtual]
 

getFromInput() configures the PeriodicDislocationArrayElasticStressModule object from parameters in the specified input database.

Arguments:

  • db (in): input database from which to take parameter values

Return value: none

virtual int LSMDD::PeriodicDislocationArrayElasticStressModule::getStressFieldHandle  )  [inline, virtual]
 

getStressFieldHandle() returns the PatchData handle for the elastic stress field.

Arguments: none

Return value: PatchData handle for stress field

Implements LSMDD::ElasticStressStrategy.

virtual void LSMDD::PeriodicDislocationArrayElasticStressModule::initializeElasticStressModule  )  [protected, virtual]
 

initializeElasticStressModule() completes the initialization of the PeriodicDislocationArrayElasticStressModule before any elastic stress fields are calculated.

Arguments: none

Return value: none

virtual void LSMDD::PeriodicDislocationArrayElasticStressModule::printClassData ostream &  os  )  const [virtual]
 

printClassData() prints the current state of the ElasticStressStrategy object to the specified output stream.

Arguments:

  • os (in): output stream for class data

Return value: none

Implements LSMDD::ElasticStressStrategy.

virtual void LSMDD::PeriodicDislocationArrayElasticStressModule::setStressFieldToZero  )  [virtual]
 

setStressFieldToZero() sets the stress field equal to zero everywhere.

Arguments: none

Return value: none

Implements LSMDD::ElasticStressStrategy.


Member Data Documentation

bool LSMDD::PeriodicDislocationArrayElasticStressModule::d_conserve_memory [protected]
 

FFT_DATA* LSMDD::PeriodicDislocationArrayElasticStressModule::d_dislocation_line_fft_data[3] [protected]
 

bool LSMDD::PeriodicDislocationArrayElasticStressModule::d_fft_data_allocated [protected]
 

struct fft_plan_3d* LSMDD::PeriodicDislocationArrayElasticStressModule::d_fft_plan [protected]
 

double LSMDD::PeriodicDislocationArrayElasticStressModule::d_fft_scale_factor [protected]
 

Box<3> LSMDD::PeriodicDislocationArrayElasticStressModule::d_global_box [protected]
 

bool LSMDD::PeriodicDislocationArrayElasticStressModule::d_initialization_complete [protected]
 

Box<3> LSMDD::PeriodicDislocationArrayElasticStressModule::d_local_box [protected]
 

Pointer< PatchHierarchy<3> > LSMDD::PeriodicDislocationArrayElasticStressModule::d_patch_hierarchy [protected]
 

FFT_DATA* LSMDD::PeriodicDislocationArrayElasticStressModule::d_stress_field_fft_data[6] [protected]
 

int LSMDD::PeriodicDislocationArrayElasticStressModule::d_stress_field_handle [protected]
 

bool LSMDD::PeriodicDislocationArrayElasticStressModule::d_use_dynamic_memory_allocation [protected]
 


The documentation for this class was generated from the following file:
Generated on Tue Aug 7 15:43:41 2007 for LSMDD by doxygen 1.3.4