![]() |
JEMRIS 2.9.0
open-source MRI simulations
|
The Sample is the object to simulate. It contains the spins. More...
#include <Sample.h>
Public Member Functions | |
Sample () | |
Sample (const string &file, const int multiple=1) | |
Sample (const size_t size) | |
virtual | ~Sample () |
virtual void | Prepare (const std::string &fname="") |
void | ClearSpins () |
delete the spin structure | |
void | CreateSpins (const size_t size) |
create the spin structure More... | |
void | CreateSpins (const size_t nprops, const size_t size) |
create the spin structure More... | |
size_t | GetSize () const |
size_t | GetNProps () const |
vector< size_t > | GetSampleDims () const |
void | SetSampleDims (vector< size_t > d) |
const int | GetSampleDimsSize () const |
Dimensions. More... | |
Sample * | GetSubSample (const int n, const size_t size) |
void | GetValues (const size_t l, double *val) |
Get values for spin l and deliver them in val. More... | |
double * | GetResolution () |
Get grid resolution. More... | |
void | InitRandGenerator (int val=1) |
Initialize the randome number generator. More... | |
void | SetR2Prime (double val) |
Set the random local field fluctuations. More... | |
void | SetPositionRandomness (double val) |
Set the position randomness in per cent of the cartesian resolution. More... | |
double | GetDeltaB (size_t pos=-1) |
Get off-resonance of a specific spin. More... | |
virtual IO::Status | Populate (const string &file) |
double * | GetSpinsData () |
void | SetReorderStrategy (string strat) |
void | ReorderSample () |
void | DumpRestartInfo (CoilArray *RxCA) |
Utility function for restart: dump information to restart jemris after crash. | |
void | ReportSpin (int beg, int end, int value) |
Utility function for restart: mark spins which have been calculated. | |
int | ReadSpinsState () |
Utility function for restart: Read restart file after crash. | |
void | ClearSpinsState () |
Utility function for restart: mark all spins as not simulated. | |
void | GetScatterVectors (int *sendcount, int *displ, int size) |
utility function to send sample in parallel mode: initial samples are send via mpi_scatterv; get needed vectors to scatter data. | |
void | GetNextPacket (int &noSpins, int &NextSpinToSend, int SlaveId) |
utility function to send sample in parallel mode: get next spin packet to be sent. (beginning index + no_spins to send) | |
int | SpinsLeft () |
Returns No spins which still needs to be calculated. | |
void | SetTimeInterval (double val) |
Set Time interval in seconds after which new spins are sent (approx. value.) | |
bool | IsRestart () |
true if simulation run is from a restart | |
void | GetHelper (double *target) |
double * | GetHelper () |
size_t | GetHelperSize () |
int | GetNoSpinCompartments () |
void | SetNoSpinCompartments (int n) |
void | CreateHelper (const size_t l) |
void | CreateDims (const size_t l) |
void | CopyHelper (double *out) |
virtual void | CropEnumerate () |
Protected Member Functions | |
void | MultiplySample (int multiple) |
Protected Attributes | |
Ensemble< double > | m_ensemble |
vector< size_t > | m_index |
vector< double > | m_res |
vector< double > | m_offset |
RNG | m_rng |
double | m_r2prime |
double | m_pos_rand_perc |
SampleReorderStrategyInterface * | m_reorder_strategy |
int | m_max_paket_size |
int | m_min_paket_size |
int | m_next_spin_to_send |
vector< char > | m_spin_state |
bool | m_is_restart |
vector< int > | m_spins_sent |
vector< int > | m_last_offset_sent |
vector< timeval > | m_last_time |
double | m_sent_interval |
double | m_total_cpu_time |
double | m_no_spins_done |
vector< double > | m_helper |
int | m_no_spin_compartments |
The Sample is the object to simulate. It contains the spins.
Sample::Sample | ( | ) |
Constructor
Sample::Sample | ( | const string & | file, |
const int | multiple = 1 |
||
) |
Constructor
Create a container from binary file
file | Sample binary file |
Sample::Sample | ( | const size_t | size | ) |
Constructor
Create a container of requested size initialized with zeros
size | Size of the sample |
|
virtual |
Destructor
void Sample::CreateSpins | ( | const size_t | nprops, |
const size_t | size | ||
) |
create the spin structure
size | Size of the spin structure to create |
void Sample::CreateSpins | ( | const size_t | size | ) |
create the spin structure
size | Size of the spin structure to create |
double Sample::GetDeltaB | ( | size_t | pos = -1 | ) |
Get off-resonance of a specific spin.
The off-resonance is given by the deterministic value, read by Populate from the binary file, plus the random field fluctuation specified by SetR2Prime.
pos | Position of the spin. If negative, last acquired spin by GetValues is used. |
|
inline |
Get number of spin properties including spatial
|
inline |
Get grid resolution.
|
inline |
Get number of sample dimensions
|
inline |
Dimensions.
size_t Sample::GetSize | ( | ) | const |
Get size of the sample
|
inline |
returns pointer to sample data (needed for MPI send/receive)
Sample * Sample::GetSubSample | ( | const int | n, |
const size_t | size | ||
) |
Get a subset of this sample
n | N-th subset |
size | Size of the subset |
void Sample::GetValues | ( | const size_t | l, |
double * | val | ||
) |
Get values for spin l and deliver them in val.
l | Spin number |
val | Output container |
|
inline |
Initialize the randome number generator.
val | any integer |
|
virtual |
Create a container from binary file
file | Sample binary file |
|
virtual |
init variables which are same for all constructors
Reimplemented in MultiPoolSample.
void Sample::ReorderSample | ( | ) |
executes sample reordering
|
inline |
Set the position randomness in per cent of the cartesian resolution.
val | Percentage width of the Gaussian distribution. |
|
inline |
Set the random local field fluctuations.
val | R2Prime (Shaping parameter of the Lorentz distribution in kHz). |
void Sample::SetReorderStrategy | ( | string | strat | ) |
can set a method to reorder the sample (do nothing, shuffle sample,... )
|
inline |
Get number of sample dimensions
|
protected |
clones sample 'multiple'-times, e.g. for diffusion simulation
|
protected |
keeps track whether spin is not touched (==0), sent (==1) or calculated (==2)
|
protected |
no of spins last sent to each slave
|
protected |
offset to the last spins sent
|
protected |
maximal no of spins to send
|
protected |
minimal no of spins to send
|
protected |
< Sample resolution [mm]
|
protected |
< R2-Prime == shaping parameter of the Lorentzian distribution
|
protected |
< random number generator
|
protected |
< Percantage (of cartesian resolution) randomness in spin position .
|
protected |
< Sample dimensions
|
protected |
< Sample offeset to {0,0,0} origin
|
protected |
last timepoint at which spins were sent
|
protected |
true if simulation run is from a restart
|
protected |
approx. time in seconds after which new spins are sent
-- last change 10.02.2022 |
Tony Stoecker |
Imprint |
Data Protection --