Skip to content

Commit a21e707

Browse files
committed
small fov bug fixed
1 parent 8be42c8 commit a21e707

File tree

5 files changed

+12
-7
lines changed

5 files changed

+12
-7
lines changed

src/file_utils.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ bool file_utils::read_phantom(std::string phantom_filename, std::vector<float> &
327327
std::copy(fov.begin() , fov.end() , param->fov);
328328
std::copy(dims.begin(), dims.end(), param->fieldmap_size);
329329
BOOST_LOG_TRIVIAL(info) << "Size = " << dims[0] << " x " << dims[1] << " x " << dims[2] << std::endl;
330-
BOOST_LOG_TRIVIAL(info) << "FoV = " << fov[0]*1e6 << " x " << fov[1]*1e6 << " x " << fov[2]*1e6 << " um^3" << std::endl;
330+
BOOST_LOG_TRIVIAL(info) << "FoV = " << param->fov[0]*1e6 << " x " << param->fov[1]*1e6 << " x " << param->fov[2]*1e6 << " um^3" << std::endl;
331331

332332
int n_tissue = find_max(mask) + 1;
333333
if (n_tissue > param->n_tissue_type)

src/kernels.cu

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,16 +127,16 @@ void sim(const simulation_parameters *param, const float *pFieldMap, const uint8
127127
rnd_wlk = dist_random_walk_xyz(gen_r) * diffusivity_scale;
128128
xyz_new[i] = xyz_old[i] + rnd_wlk; // new spin position after random-walk
129129
if (xyz_new[i] < 0)
130-
xyz_new[i] += (param->enCrossFOV ? param->fov[i] : 2*ABS(rnd_wlk)); // rnd_wlk is negative here
130+
xyz_new[i] += (param->enCrossFOV ? param->fov[i] : 2*std::abs(rnd_wlk)); // rnd_wlk is negative here
131131
else if (xyz_new[i] >= param->fov[i])
132-
xyz_new[i] -= (param->enCrossFOV ? param->fov[i] : 2*ABS(rnd_wlk)); // rnd_wlk is positive here
132+
xyz_new[i] -= (param->enCrossFOV ? param->fov[i] : 2*std::abs(rnd_wlk)); // rnd_wlk is positive here
133133
}
134134

135135
// ------ subscripts to linear indices ------
136136
ind = sub2ind(xyz_new[0]*param->scale2grid[0], xyz_new[1]*param->scale2grid[1], xyz_new[2]*param->scale2grid[2], param->fieldmap_size[0], param->fieldmap_size[1], param->fieldmap_size[2]);
137137
if(ind >= param->matrix_length || ind < 0)
138138
{
139-
printf("Error:spin=%d, ind=%" PRId64 ", %d,\n\tscale=(%.10f, %.10f, %.10f)\n\txyz=(%.10f, %.10f, %.10f)\n\tscale*xyz(%.10f, %.10f, %.10f)\n\tFoV=(%.10f, %.10f, %.10f)\n\t(%d, %d, %d)\n",spin_no, ind, current_timepoint, param->scale2grid[0], param->scale2grid[1], param->scale2grid[2], xyz_new[0], xyz_new[1], xyz_new[2], param->scale2grid[0]*xyz_new[0], param->scale2grid[1]*xyz_new[1], param->scale2grid[2]*xyz_new[2], param->fov[0], param->fov[1], param->fov[2], xyz_new[0] >= param->fov[0], xyz_new[1] >= param->fov[1], xyz_new[2] >= param->fov[2]);
139+
printf("Error:spin=%d, ind=%" PRId64 ", %d,\n\tscale2grid=(%.10f, %.10f, %.10f)\n\txyz=(%.10f, %.10f, %.10f)\n\txyz_old=(%.10f, %.10f, %.10f)\n\tscale2grid*xyz(%.10f, %.10f, %.10f)\n\tPhantomSize=(%d, %d, %d)\n\tFoV=(%.10f, %.10f, %.10f)\n\tError?(%d, %d, %d)\n",spin_no, ind, current_timepoint, param->scale2grid[0], param->scale2grid[1], param->scale2grid[2], xyz_new[0], xyz_new[1], xyz_new[2], xyz_old[0], xyz_old[1], xyz_old[2], param->scale2grid[0]*xyz_new[0], param->scale2grid[1]*xyz_new[1], param->scale2grid[2]*xyz_new[2], param->fieldmap_size[0], param->fieldmap_size[1], param->fieldmap_size[2], param->fov[0], param->fov[1], param->fov[2], xyz_new[0] >= param->fov[0], xyz_new[1] >= param->fov[1], xyz_new[2] >= param->fov[2]);
140140
return;
141141
}
142142
// ------ accumulate phase ------

src/simulation_parameters.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ typedef struct simulation_parameters
102102
ss<<"TE = "; for(int i=0; i<n_TE; i++) ss<<TE_us[i]*timestep_us/1000.<<' '; ss<<"ms.\n";
103103
ss<<"T2 = "; for(int i=0; i<n_tissue_type; i++) ss<<T2_ms[i]<<' '; ss<<"ms.\n";
104104
ss<<"T1 = "; for(int i=0; i<n_tissue_type; i++) ss<<T1_ms[i]<<' '; ss<<"ms.\n";
105-
ss<<"Diffusivity = "; for(int i=0; i<n_tissue_type; i++) ss<<diffusivity[i]<<' '; ss<<"\n";
105+
ss<<"sqrt(2*diffusivity*timestep) = "; for(int i=0; i<n_tissue_type; i++) ss<<diffusivity[i]<<' '; ss<<"\n";
106106
ss<<"Cross Tissue Probability =\n"; for(int i=0; i<n_tissue_type; i++) {for(int j=0; j<n_tissue_type; j++) ss<<pXY[j+i*n_tissue_type]<<' '; ss<<'\n';};
107107
ss<<"RF flip-angle = "; for(int i=0; i<n_RF; i++) ss<<RF_FA_deg[i]<<' '; ss<<"deg.\n";
108108
ss<<"RF phase = "; for(int i=0; i<n_RF; i++) ss<<RF_PH_deg[i]<<' '; ss<<"deg.\n";

src/spinwalk.cu

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@ bool run(simulation_parameters param, std::map<std::string, std::vector<std::str
168168
// tqdm bar;
169169
using namespace indicators;
170170
ProgressBar bar{option::ShowPercentage{true}, option::Start{"["}, option::Fill{"="}, option::Lead{">"}, option::End{"]"}};
171-
bar.set_progress(0);
172171
simulation_parameters param_local;
173172
memcpy(&param_local, &param, sizeof(simulation_parameters));
174173
std::vector<uint32_t> v(param_local.n_spins);
@@ -179,6 +178,12 @@ bool run(simulation_parameters param, std::map<std::string, std::vector<std::str
179178
{
180179
param_local.fov[i] = fov_scale[sl] * param.fov[i];
181180
param_local.scale2grid[i] = param_local.fieldmap_size[i] / param_local.fov[i];
181+
for (int n = 0; n < param.n_tissue_type; i++)
182+
if(param_local.fov[i] < 100 * param.diffusivity[n])
183+
{
184+
BOOST_LOG_TRIVIAL(error) << "FoV (= " << param_local.fov[i] << ") must be 100x larger than sqrt(2*diffusivity*timestep) (= " << param.diffusivity[n] << ")!";
185+
return false;
186+
}
182187
}
183188

184189
if(param.no_gpu)

src/version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
#define SPINWALK_VERSION_MAJOR 1
88
#define SPINWALK_VERSION_MINOR 13
9-
#define SPINWALK_VERSION_PATCH 5
9+
#define SPINWALK_VERSION_PATCH 6
1010

1111
//---------------------------------------------------------------------------------------------
1212
//

0 commit comments

Comments
 (0)