21 h5_size_t grid_dims[3];
24 h5_size_t len_name = 20;
28 h5_prop_t props = H5CreateFileProp ();
30 h5err = H5SetPropFileMPIOCollective (props, &comm);
31 assert (h5err != H5_ERR);
32 h5_file_t file = H5OpenFile (aFilename.c_str(), H5_O_RDONLY, props);
33 assert (file != (h5_file_t)H5_ERR);
36 h5_int64_t last_step = H5GetNumSteps(file) - 1;
37 assert (last_step >= 0);
38 h5err = H5SetStep(file, last_step);
39 assert (h5err != H5_ERR);
41 h5_int64_t num_fields = H5BlockGetNumFields(file);
42 assert (num_fields != H5_ERR);
44 for(h5_ssize_t i = 0; i < num_fields; ++ i) {
46 h5err = H5BlockGetFieldInfo(file, (h5_size_t)i, name, len_name, &grid_rank, grid_dims, &field_dims, &ftype);
47 assert (h5err != H5_ERR);
48 if(strcmp(name,
"Efield") == 0) {
54 h5err = H5Block3dGetFieldSpacing(file,
"Efield", &
hx_m, &
hy_m, &
hz_m);
55 assert (h5err != H5_ERR);
58 assert (h5err != H5_ERR);
68 h5err = H5ReadFileAttribFloat64(file,
"Resonance Frequency(Hz)", &
frequency_m);
69 assert (h5err != H5_ERR);
73 h5err = H5CloseFile(file);
74 assert (h5err != H5_ERR);
90 h5_prop_t props = H5CreateFileProp ();
92 h5err = H5SetPropFileMPIOCollective (props, &comm);
93 assert (h5err != H5_ERR);
94 h5_file_t file = H5OpenFile (
Filename_m.c_str(), H5_O_RDONLY, props);
95 assert (file != (h5_file_t)H5_ERR);
102 int signNz = Nz_diff > 0 ? 1 : -1;
109 h5_int64_t last_step = H5GetNumSteps(file) - 1;
110 h5err = H5SetStep(file, last_step);
111 assert (h5err != H5_ERR);
113 for(
int i = 0; i <
abs(Nz_diff); ++ i) {
114 Nz_read_length[i] = Nz_avrg - signNz;
115 Nz_read_start[i] = start;
116 start += Nz_read_length[i];
118 for(
int i =
abs(Nz_diff); i < Nnodes; ++ i) {
119 Nz_read_length[i] = Nz_avrg;
120 Nz_read_start[i] = start;
121 start += Nz_read_length[i];
124 Nz_read_length[i] = 0;
125 Nz_read_start[i] = start;
134 h5err = H5Block3dSetView(file,
138 assert (h5err != H5_ERR);
148 h5err = H5Block3dReadVector3dFieldFloat64 (
153 assert (h5err != H5_ERR);
155 h5err = H5Block3dReadVector3dFieldFloat64 (
160 assert (h5err != H5_ERR);
162 for(
int i = 0; i < Nnodes; ++ i) {
173 h5err = H5CloseFile(file);
174 assert (h5err != H5_ERR);
175 delete[] Nz_read_start;
176 delete[] Nz_read_length;
222 if(index_x < 0 || index_y < 0) {
228 E(0) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEx_m[index1]
237 E(1) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEy_m[index1]
246 E(2) += (1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthEz_m[index1]
255 B(0) += ((1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthHx_m[index1]
264 B(1) += ((1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthHy_m[index1]
273 B(2) += ((1.0 - lever_x) * (1.0 - lever_y) * (1.0 - lever_z) *
FieldstrengthHz_m[index1]
332 if(
fabs(F[i].second) > Ez_max) {
333 Ez_max =
fabs(F[i].second);
339 F[i].second /= Ez_max;
virtual void getOnaxisEz(std::vector< std::pair< double, double > > &F)
PETE_TUTree< FnAbs, typename T::PETE_Expr_t > abs(const PETE_Expr< T > &l)
std::vector< h5_float64_t > FieldstrengthEx_m
PETE_TUTree< FnFabs, typename T::PETE_Expr_t > fabs(const PETE_Expr< T > &l)
constexpr double two_pi
The value of .
virtual void getInfo(Inform *msg)
FM3DH5Block_nonscale(std::string aFilename)
virtual double getFrequency() const
static std::string typeset_msg(const std::string &msg, const std::string &title)
std::vector< h5_float64_t > FieldstrengthHz_m
std::vector< h5_float64_t > FieldstrengthHy_m
std::vector< h5_float64_t > FieldstrengthEz_m
constexpr double mu_0
The permeability of vacuum in Vs/Am.
virtual bool getFieldDerivative(const Vector_t &R, Vector_t &E, Vector_t &B, const DiffDirection &dir) const
virtual bool getFieldstrength(const Vector_t &R, Vector_t &E, Vector_t &B) const
static MPI_Comm getComm()
std::vector< h5_float64_t > FieldstrengthHx_m
virtual void setFrequency(double freq)
std::vector< h5_float64_t > FieldstrengthEy_m
Inform & level3(Inform &inf)
PETE_TUTree< FnFloor, typename T::PETE_Expr_t > floor(const PETE_Expr< T > &l)
Inform & endl(Inform &inf)
virtual void getFieldDimensions(double &zBegin, double &zEnd, double &rBegin, double &rEnd) const