Fast Methods for Cosmological Simulations
FastSim serves as a tool for quick N-body simulations in modified gravity.
params.cpp File Reference

: various parameter classes definitions More...

#include <omp.h>
#include "config.h"
#include "params.hpp"
#include "core_cmd.h"
#include "core_out.h"
#include "core_mesh.h"
#include "core_power.h"
#include <ccl_error.h>
#include <json.hpp>
#include <iomanip>
Include dependency graph for params.cpp:

Go to the source code of this file.

Namespaces

 anonymous_namespace{params.cpp}
 

Typedefs

using json = nlohmann::json
 

Functions

template<typename T , typename U >
anonymous_namespace{params.cpp}::find_value (const std::map< T, U > &map, const U &value)
 
size_t anonymous_namespace{params.cpp}::get_seed ()
 
void to_json (json &j, const Cosmo_Param &cosmo)
 < end of anonymous namespace (private definitions) More...
 
void from_json (const json &j, Cosmo_Param &cosmo)
 
void to_json (json &j, const Box_Opt &box_opt)
 
void from_json (const json &j, Box_Opt &box_opt)
 
void to_json (json &j, const Integ_Opt &integ_opt)
 
void from_json (const json &j, Integ_Opt &integ_opt)
 
void to_json (json &j, const App_Opt &app_opt)
 
void from_json (const json &j, App_Opt &app_op)
 
void to_json (json &j, const Run_Opt &run_opt)
 
void from_json (const json &j, Run_Opt &run_opt)
 
void to_json (json &j, const Out_Opt &out_opt)
 
void from_json (const json &j, Out_Opt &out_opt)
 
void to_json (json &j, const Chi_Opt &chi_opt)
 
void from_json (const json &j, Chi_Opt &chi_opt)
 
void to_json (json &j, const Test_Opt &test_opt)
 
void from_json (const json &j, Test_Opt &test_opt)
 
static ccl_cosmologyccl_cosmology_create_flat_lcdm (double Omega_c, double Omega_b, double h, double norm_pk, double n_s, ccl_configuration config, int *status)
 

Variables

const std::map< std::string, transfer_function_tanonymous_namespace{params.cpp}::transfer_function_method
 
const std::map< std::string, matter_power_spectrum_tanonymous_namespace{params.cpp}::matter_power_spectrum_method
 
const std::map< std::string, mass_function_tanonymous_namespace{params.cpp}::mass_function_method
 
const std::map< std::string, baryons_power_spectrum_tanonymous_namespace{params.cpp}::baryons_power_spectrum_method
 

Detailed Description

: various parameter classes definitions

Definition in file params.cpp.

Typedef Documentation

Definition at line 17 of file params.cpp.

Function Documentation

static ccl_cosmology* ccl_cosmology_create_flat_lcdm ( double  Omega_c,
double  Omega_b,
double  h,
double  norm_pk,
double  n_s,
ccl_configuration  config,
int *  status 
)
static

Definition at line 280 of file params.cpp.

References ccl_cosmology_create(), ccl_mnu_sum, ccl_parameters_create(), cl_cmbl_bm::cosmo, ccl_test_distances::mnu, ccl_test_distances::Neff, and halomod_bm::params.

Referenced by Cosmo_Param::init().

283 {
284  double Omega_k = 0.0;
285  double Neff = 3.04;
286  double w0 = -1.0;
287  double wa = 0.0;
288  double *mnu;
289  double mnuval = 0.; // a pointer to the variable is not kept past the lifetime of this function
290  mnu = &mnuval;
291  ccl_mnu_convention mnu_type = ccl_mnu_sum;
292 
294  mnu, mnu_type, w0, wa, h, norm_pk, n_s, -1, -1, -1, -1, NULL, NULL, status);
295 
296  ccl_cosmology * cosmo = ccl_cosmology_create(params, config);
297  return cosmo;
298 }
ccl_cosmology * ccl_cosmology_create(ccl_parameters params, ccl_configuration config)
Definition: ccl_core.c:173
ccl_mnu_convention
Definition: ccl_core.h:142
dictionary params
Definition: halomod_bm.py:27
ccl_parameters ccl_parameters_create(double Omega_c, double Omega_b, double Omega_k, double Neff, double *mnu, ccl_mnu_convention mnu_type, double w0, double wa, double h, double norm_pk, double n_s, double bcm_log10Mc, double bcm_etab, double bcm_ks, int nz_mgrowth, double *zarr_mgrowth, double *dfarr_mgrowth, int *status)
Definition: ccl_core.c:294
void from_json ( const json j,
Cosmo_Param cosmo 
)

Definition at line 109 of file params.cpp.

References nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::at(), anonymous_namespace{params.cpp}::baryons_power_spectrum_method, ccl_configuration::baryons_power_spectrum_method, ccl_boltzmann_class, ccl_halofit, ccl_nobaryons, ccl_tinker10, Cosmo_Param::config, nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::get(), Cosmo_Param::h, Cosmo_Param::H0, Cosmo_Param::init(), Cosmo_Param::k2_G, anonymous_namespace{params.cpp}::mass_function_method, ccl_configuration::mass_function_method, anonymous_namespace{params.cpp}::matter_power_spectrum_method, ccl_configuration::matter_power_spectrum_method, Cosmo_Param::ns, Cosmo_Param::Omega_b, Cosmo_Param::Omega_m, Cosmo_Param::sigma8, anonymous_namespace{params.cpp}::transfer_function_method, and ccl_configuration::transfer_function_method.

Referenced by Sim_Param::Sim_Param().

110 {
111  cosmo.ns = j.at("index").get<FTYPE_t>();
112  cosmo.sigma8 = j.at("sigma8").get<FTYPE_t>();
113  cosmo.k2_G = j.at("smoothing_k").get<FTYPE_t>();
114  cosmo.Omega_b = j.at("Omega_b").get<FTYPE_t>();
115  cosmo.Omega_m = j.at("Omega_m").get<FTYPE_t>();
116  cosmo.h = j.at("h").get<FTYPE_t>();
117  cosmo.H0 = cosmo.h * 100;
118 
119  std::string tmp;
120  try{
121  tmp = j.at("transfer_function_method").get<std::string>();
123  }catch(const json::out_of_range& oor){
125  }
126  try{
127  tmp = j.at("matter_power_spectrum_method").get<std::string>();
129  }catch(const json::out_of_range& oor){
131  }
132  try{
133  tmp = j.at("mass_function_method").get<std::string>();
135  }catch(const json::out_of_range& oor){
137  }
138  try{
139  tmp = j.at("baryons_power_spectrum_method").get<std::string>();
141  }catch(const json::out_of_range& oor){
143  }
144  cosmo.init();
145 }
double h
Definition: params.hpp:36
matter_power_spectrum_t matter_power_spectrum_method
Definition: ccl_config.h:112
const std::map< std::string, transfer_function_t > transfer_function_method
Definition: params.cpp:25
ccl_configuration config
Definition: params.hpp:31
exception indicating access out of the defined range
Definition: json.hpp:1067
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:15167
double Omega_b
Definition: params.hpp:36
transfer_function_t transfer_function_method
Definition: ccl_config.h:111
basic_json get() const
get special-case overload
Definition: json.hpp:14762
const std::map< std::string, matter_power_spectrum_t > matter_power_spectrum_method
Definition: params.cpp:33
double H0
Definition: params.hpp:36
void init()
lazy constructor
Definition: params.cpp:305
const std::map< std::string, baryons_power_spectrum_t > baryons_power_spectrum_method
Definition: params.cpp:48
baryons_power_spectrum_t baryons_power_spectrum_method
Definition: ccl_config.h:113
double k2_G
Definition: params.hpp:35
double ns
Definition: params.hpp:35
mass_function_t mass_function_method
Definition: ccl_config.h:114
double Omega_m
Definition: params.hpp:36
const std::map< std::string, mass_function_t > mass_function_method
Definition: params.cpp:40
double sigma8
Definition: params.hpp:35
void from_json ( const json j,
Box_Opt box_opt 
)

Definition at line 159 of file params.cpp.

References nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::at(), Box_Opt::box_size, nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::get(), Box_Opt::mesh_num, Box_Opt::mesh_num_pwr, and Box_Opt::par_num_1d.

160 {
161  box_opt.mesh_num = j.at("mesh_num").get<size_t>();
162  box_opt.mesh_num_pwr = j.at("mesh_num_pwr").get<size_t>();
163  box_opt.par_num_1d = j.at("par_num").get<size_t>();
164  box_opt.box_size = j.at("box_size").get<FTYPE_t>();
165 }
double box_size
Definition: params.hpp:59
size_t mesh_num_pwr
Definition: params.hpp:58
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:15167
size_t par_num_1d
Definition: params.hpp:58
basic_json get() const
get special-case overload
Definition: json.hpp:14762
size_t mesh_num
Definition: params.hpp:58
void from_json ( const json j,
Integ_Opt integ_opt 
)

Definition at line 176 of file params.cpp.

References nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::at(), Integ_Opt::db, nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::get(), Integ_Opt::init(), Integ_Opt::z_in, and Integ_Opt::z_out.

177 {
178  integ_opt.z_in = j.at("redshift").get<FTYPE_t>();
179  integ_opt.z_out = j.at("redshift_0").get<FTYPE_t>();
180  integ_opt.db = j.at("time_step").get<FTYPE_t>();
181 
182  integ_opt.init();
183 }
double z_in
Definition: params.hpp:72
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:15167
basic_json get() const
get special-case overload
Definition: json.hpp:14762
void init()
Definition: params.cpp:384
double z_out
Definition: params.hpp:72
double db
cmd args
Definition: params.hpp:72
void from_json ( const json j,
App_Opt app_op 
)

Definition at line 193 of file params.cpp.

References nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::at(), nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::get(), App_Opt::nu, App_Opt::nu_dim, and App_Opt::rs.

194 {
195  app_op.nu_dim = j.at("viscosity").get<FTYPE_t>();
196  app_op.nu = app_op.nu_dim;
197  app_op.rs = j.at("cut_radius").get<FTYPE_t>();
198 }
double nu
Definition: params.hpp:116
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:15167
double nu_dim
Definition: params.hpp:118
basic_json get() const
get special-case overload
Definition: json.hpp:14762
double rs
Definition: params.hpp:116
void from_json ( const json j,
Run_Opt run_opt 
)

Definition at line 210 of file params.cpp.

References nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::at(), nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::get(), Run_Opt::init(), Run_Opt::nt, Run_Opt::phase, and Run_Opt::seed.

211 {
212  run_opt.nt = j.at("num_thread").get<size_t>();
213  run_opt.seed = j.at("seed").get<size_t>();
214  run_opt.phase = j.at("phase").get<bool>();
215  run_opt.init();
216 }
bool phase
Definition: params.hpp:138
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:15167
basic_json get() const
get special-case overload
Definition: json.hpp:14762
void init()
Definition: params.cpp:344
size_t nt
Definition: params.hpp:134
size_t seed
Definition: params.hpp:135
void from_json ( const json j,
Out_Opt out_opt 
)

Definition at line 227 of file params.cpp.

References nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::at(), Out_Opt::bins_per_decade, nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::get(), Out_Opt::out_dir, and Out_Opt::points_per_10_Mpc.

228 {
229  out_opt.bins_per_decade = j.at("bins_per_decade").get<size_t>();
230  out_opt.points_per_10_Mpc = j.at("points_per_10_Mpc").get<size_t>();
231  out_opt.out_dir = j.at("out_dir").get<std::string>();
232 }
size_t points_per_10_Mpc
Definition: params.hpp:85
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:15167
basic_json get() const
get special-case overload
Definition: json.hpp:14762
size_t bins_per_decade
Definition: params.hpp:85
std::string out_dir
Definition: params.hpp:86
void from_json ( const json j,
Chi_Opt chi_opt 
)

Definition at line 244 of file params.cpp.

References nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::at(), Chi_Opt::beta, nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::get(), Chi_Opt::linear, Chi_Opt::n, and Chi_Opt::phi.

245 {
246  chi_opt.beta = j.at("beta").get<FTYPE_t>();
247  chi_opt.n = j.at("n").get<FTYPE_t>();
248  chi_opt.phi = j.at("phi").get<FTYPE_t>();
249 
250  // optional parameters (old runs do not have everything)
251  try {chi_opt.linear = j.at("linear").get<bool>();}
252  catch (const json::out_of_range& oor){chi_opt.linear = false;}
253 }
exception indicating access out of the defined range
Definition: json.hpp:1067
bool linear
Definition: params.hpp:186
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:15167
double n
Definition: params.hpp:185
basic_json get() const
get special-case overload
Definition: json.hpp:14762
double phi
Definition: params.hpp:185
double beta
Definition: params.hpp:185
void from_json ( const json j,
Test_Opt test_opt 
)

Definition at line 266 of file params.cpp.

References nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::at(), nlohmann::basic_json< ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer >::get(), Test_Opt::N_grid, Test_Opt::N_min, Test_Opt::R_sphere, Test_Opt::rho_b, and Test_Opt::rho_sphere.

267 {
268  test_opt.R_sphere = j.at("R_sphere").get<FTYPE_t>();
269  test_opt.rho_sphere = j.at("rho_sphere").get<FTYPE_t>();
270  test_opt.N_grid = j.at("N_grid").get<size_t>();
271  test_opt.N_min = j.at("N_min").get<size_t>();
272  test_opt.rho_b = j.at("rho_b").get<FTYPE_t>();
273 }
double R_sphere
Definition: params.hpp:148
reference at(size_type idx)
access specified array element with bounds checking
Definition: json.hpp:15167
double rho_sphere
Definition: params.hpp:148
basic_json get() const
get special-case overload
Definition: json.hpp:14762
size_t N_grid
Definition: params.hpp:150
double rho_b
Definition: params.hpp:154
size_t N_min
Definition: params.hpp:150
void to_json ( json j,
const Cosmo_Param cosmo 
)

< end of anonymous namespace (private definitions)

PUBLIC FUNCTIONS DEFINITIONS *

Definition at line 91 of file params.cpp.

References anonymous_namespace{params.cpp}::baryons_power_spectrum_method, ccl_configuration::baryons_power_spectrum_method, Cosmo_Param::config, anonymous_namespace{params.cpp}::find_value(), Cosmo_Param::h, Cosmo_Param::k2_G, anonymous_namespace{params.cpp}::mass_function_method, ccl_configuration::mass_function_method, anonymous_namespace{params.cpp}::matter_power_spectrum_method, ccl_configuration::matter_power_spectrum_method, Cosmo_Param::ns, Cosmo_Param::Omega_b, Cosmo_Param::Omega_c(), Cosmo_Param::Omega_m, Cosmo_Param::sigma8, anonymous_namespace{params.cpp}::transfer_function_method, and ccl_configuration::transfer_function_method.

92 {
93  j = json{
94  {"index", cosmo.ns},
95  {"sigma8", cosmo.sigma8},
96  {"smoothing_k", cosmo.k2_G},
97  {"Omega_c", cosmo.Omega_c()},
98  {"Omega_b", cosmo.Omega_b},
99  {"Omega_m", cosmo.Omega_m},
100  {"h", cosmo.h}
101  };
102 
103  j["transfer_function_method"] = find_value(transfer_function_method, cosmo.config.transfer_function_method);
104  j["matter_power_spectrum_method"] = find_value(matter_power_spectrum_method, cosmo.config.matter_power_spectrum_method);
105  j["mass_function_method"] = find_value(mass_function_method, cosmo.config.mass_function_method);
106  j["baryons_power_spectrum_method"] = find_value(baryons_power_spectrum_method, cosmo.config.baryons_power_spectrum_method);
107 }
double h
Definition: params.hpp:36
a class to store JSON values
Definition: json.hpp:86
matter_power_spectrum_t matter_power_spectrum_method
Definition: ccl_config.h:112
const std::map< std::string, transfer_function_t > transfer_function_method
Definition: params.cpp:25
ccl_configuration config
Definition: params.hpp:31
T find_value(const std::map< T, U > &map, const U &value)
Definition: params.cpp:57
double Omega_b
Definition: params.hpp:36
transfer_function_t transfer_function_method
Definition: ccl_config.h:111
const std::map< std::string, matter_power_spectrum_t > matter_power_spectrum_method
Definition: params.cpp:33
const std::map< std::string, baryons_power_spectrum_t > baryons_power_spectrum_method
Definition: params.cpp:48
double Omega_c() const
Definition: params.hpp:37
baryons_power_spectrum_t baryons_power_spectrum_method
Definition: ccl_config.h:113
double k2_G
Definition: params.hpp:35
double ns
Definition: params.hpp:35
mass_function_t mass_function_method
Definition: ccl_config.h:114
double Omega_m
Definition: params.hpp:36
const std::map< std::string, mass_function_t > mass_function_method
Definition: params.cpp:40
double sigma8
Definition: params.hpp:35
void to_json ( json j,
const Box_Opt box_opt 
)

Definition at line 147 of file params.cpp.

References Box_Opt::box_size, Box_Opt::mass_p_log, Box_Opt::mesh_num, Box_Opt::mesh_num_pwr, Box_Opt::Ng, and Box_Opt::par_num_1d.

148 {
149  j = json{
150  {"mesh_num", box_opt.mesh_num},
151  {"mesh_num_pwr", box_opt.mesh_num_pwr},
152  {"Ng", box_opt.Ng},
153  {"par_num", box_opt.par_num_1d},
154  {"box_size", box_opt.box_size},
155  {"mass_p_log", box_opt.mass_p_log}
156  };
157 }
double box_size
Definition: params.hpp:59
a class to store JSON values
Definition: json.hpp:86
size_t mesh_num_pwr
Definition: params.hpp:58
size_t Ng
Definition: params.hpp:61
size_t par_num_1d
Definition: params.hpp:58
double mass_p_log
logarithm of particle mass in
Definition: params.hpp:62
size_t mesh_num
Definition: params.hpp:58
void to_json ( json j,
const Integ_Opt integ_opt 
)

Definition at line 167 of file params.cpp.

References Integ_Opt::db, Integ_Opt::z_in, and Integ_Opt::z_out.

168 {
169  j = json{
170  {"redshift", integ_opt.z_in},
171  {"redshift_0", integ_opt.z_out},
172  {"time_step", integ_opt.db}
173  };
174 }
a class to store JSON values
Definition: json.hpp:86
double z_in
Definition: params.hpp:72
double z_out
Definition: params.hpp:72
double db
cmd args
Definition: params.hpp:72
void to_json ( json j,
const App_Opt app_opt 
)

Definition at line 185 of file params.cpp.

References App_Opt::nu_dim, and App_Opt::rs.

186 {
187  j = json{
188  {"viscosity", app_opt.nu_dim},
189  {"cut_radius", app_opt.rs}
190  };
191 }
a class to store JSON values
Definition: json.hpp:86
double nu_dim
Definition: params.hpp:118
double rs
Definition: params.hpp:116
void to_json ( json j,
const Run_Opt run_opt 
)

Definition at line 200 of file params.cpp.

References Run_Opt::nt, Run_Opt::phase, PROJECT_VERSION, and Run_Opt::seed.

201 {
202  j = json{
203  {"num_thread", run_opt.nt},
204  {"seed", run_opt.seed},
205  {"phase", run_opt.phase},
206  {"version", PROJECT_VERSION}
207  };
208 }
#define PROJECT_VERSION
Definition: config.h:4
a class to store JSON values
Definition: json.hpp:86
bool phase
Definition: params.hpp:138
size_t nt
Definition: params.hpp:134
size_t seed
Definition: params.hpp:135
void to_json ( json j,
const Out_Opt out_opt 
)

Definition at line 218 of file params.cpp.

References Out_Opt::bins_per_decade, Out_Opt::out_dir, and Out_Opt::points_per_10_Mpc.

219 {
220  j = json{
221  {"bins_per_decade", out_opt.bins_per_decade},
222  {"points_per_10_Mpc", out_opt.points_per_10_Mpc},
223  {"out_dir", out_opt.out_dir}
224  };
225 }
a class to store JSON values
Definition: json.hpp:86
size_t points_per_10_Mpc
Definition: params.hpp:85
size_t bins_per_decade
Definition: params.hpp:85
std::string out_dir
Definition: params.hpp:86
void to_json ( json j,
const Chi_Opt chi_opt 
)

Definition at line 234 of file params.cpp.

References Chi_Opt::beta, Chi_Opt::linear, Chi_Opt::n, and Chi_Opt::phi.

235 {
236  j = json{
237  {"beta", chi_opt.beta},
238  {"n", chi_opt.n},
239  {"phi", chi_opt.phi},
240  {"linear", chi_opt.linear},
241  };
242 }
a class to store JSON values
Definition: json.hpp:86
bool linear
Definition: params.hpp:186
double n
Definition: params.hpp:185
double phi
Definition: params.hpp:185
double beta
Definition: params.hpp:185
void to_json ( json j,
const Test_Opt test_opt 
)

Definition at line 255 of file params.cpp.

References Test_Opt::N_grid, Test_Opt::N_min, Test_Opt::R_sphere, Test_Opt::rho_b, and Test_Opt::rho_sphere.

256 {
257  j = json{
258  {"R_sphere", test_opt.R_sphere},
259  {"rho_sphere", test_opt.rho_sphere},
260  {"N_grid", test_opt.N_grid},
261  {"N_min", test_opt.N_min},
262  {"rho_b", test_opt.rho_b}
263  };
264 }
a class to store JSON values
Definition: json.hpp:86
double R_sphere
Definition: params.hpp:148
double rho_sphere
Definition: params.hpp:148
size_t N_grid
Definition: params.hpp:150
double rho_b
Definition: params.hpp:154
size_t N_min
Definition: params.hpp:150