コード例 #1
0
ファイル: ljcos2.c プロジェクト: steinlet/espresso
int ljcos2_set_params(int part_type_a, int part_type_b,
				      double eps, double sig, double offset,
				      double w)
{
  IA_parameters *data = get_ia_param_safe(part_type_a, part_type_b);

  if (!data) return ES_ERROR;

  data->LJCOS2_eps    = eps;
  data->LJCOS2_sig    = sig;
  data->LJCOS2_offset = offset;
  data->LJCOS2_w      = w;

  /* calculate dependent parameters */
  data->LJCOS2_rchange = pow(2,1/6.)*sig;
  data->LJCOS2_cut     = w + data->LJCOS2_rchange;

  /* broadcast interaction parameters */
  mpi_bcast_ia_params(part_type_a, part_type_b);

  if (lj_force_cap != -1.0)
    mpi_lj_cap_forces(lj_force_cap);

  return ES_OK;
}
コード例 #2
0
ファイル: lj.c プロジェクト: steinlet/espresso
int lennard_jones_set_params(int part_type_a, int part_type_b,
				      double eps, double sig, double cut,
				      double shift, double offset,
				      double cap_radius, double min)
{
  IA_parameters *data = get_ia_param_safe(part_type_a, part_type_b);

  if (!data) return ES_ERROR;

  data->LJ_eps    = eps;
  data->LJ_sig    = sig;
  data->LJ_cut    = cut;
  data->LJ_shift  = shift;
  data->LJ_offset = offset;
  if (cap_radius > 0) {
    data->LJ_capradius = cap_radius;
  }
  if (min > 0) {
    data->LJ_min = min;
  }
  
  /* broadcast interaction parameters */
  mpi_bcast_ia_params(part_type_a, part_type_b);

  if (lj_force_cap != -1.0)
    mpi_lj_cap_forces(lj_force_cap);

  return ES_OK;
}
コード例 #3
0
ファイル: ljcos2.c プロジェクト: roehm/cython
int ljcos2_set_params(int part_type_a, int part_type_b,
				      double eps, double sig, double offset,
				      double w)
{
  IA_parameters *data, *data_sym;

  make_particle_type_exist(part_type_a);
  make_particle_type_exist(part_type_b);
    
  data     = get_ia_param(part_type_a, part_type_b);
  data_sym = get_ia_param(part_type_b, part_type_a);

  if (!data || !data_sym) {
    return TCL_ERROR;
  }

  /* lj-cos2 should be symmetrically */
  data->LJCOS2_eps    = data_sym->LJCOS2_eps    = eps;
  data->LJCOS2_sig    = data_sym->LJCOS2_sig    = sig;
  data->LJCOS2_offset = data_sym->LJCOS2_offset = offset;
  data->LJCOS2_w      = data_sym->LJCOS2_w      = w;

  /* calculate dependent parameters */
  data->LJCOS2_rchange = data_sym->LJCOS2_rchange = pow(2,1/6.)*sig;
  data->LJCOS2_cut     = data_sym->LJCOS2_cut     = w + data_sym->LJCOS2_rchange;

  /* broadcast interaction parameters */
  mpi_bcast_ia_params(part_type_a, part_type_b);
  mpi_bcast_ia_params(part_type_b, part_type_a);

  if (lj_force_cap != -1.0)
    mpi_lj_cap_forces(lj_force_cap);

  return TCL_OK;
}
コード例 #4
0
ファイル: lj.c プロジェクト: steinlet/espresso
/** set the force cap for the LJ interaction.
    @param ljforcecap the maximal force, 0 to disable, -1 for individual cutoff
    for each of the interactions.
*/
int ljforcecap_set_params(double ljforcecap)
{
  if (lj_force_cap != -1.0)
    mpi_lj_cap_forces(lj_force_cap);
  
  return ES_OK;
}