Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
int ljangle_set_params(int part_type_a, int part_type_b,
				double eps, double sig, double cut,
				int b1p, int b1n, int b2p, int b2n,
				double cap_radius, double z0, double dz, 
				double kappa, double epsprime)
{
  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_ANGLE should be symmetrically */
  data->LJANGLE_eps         = data_sym->LJANGLE_eps         = eps;
  data->LJANGLE_sig         = data_sym->LJANGLE_sig         = sig;
  data->LJANGLE_cut         = data_sym->LJANGLE_cut         = cut;
  data->LJANGLE_bonded1pos  = data_sym->LJANGLE_bonded1pos  = b1p;
  data->LJANGLE_bonded1neg  = data_sym->LJANGLE_bonded1neg  = b1n;
  data->LJANGLE_bonded2pos  = data_sym->LJANGLE_bonded2pos  = b2p;
  data->LJANGLE_bonded2neg  = data_sym->LJANGLE_bonded2neg  = b2n;
  
  data->LJANGLE_bonded1type     =   data_sym->LJANGLE_bonded1type = part_type_a;

  if (cap_radius > 0) {
    data->LJANGLE_capradius = cap_radius;
    data_sym->LJANGLE_capradius = cap_radius;
  }

  if (dz > 0.) {
    data->LJANGLE_z0       = data_sym->LJANGLE_z0       = z0;
    data->LJANGLE_dz       = data_sym->LJANGLE_dz       = dz;
    data->LJANGLE_kappa    = data_sym->LJANGLE_kappa    = kappa;
    data->LJANGLE_epsprime = data_sym->LJANGLE_epsprime = epsprime;
  }

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

  if (ljangle_force_cap != -1.0)
    mpi_ljangle_cap_forces(ljangle_force_cap);
    
  return TCL_OK;
}
Exemplo n.º 3
0
int angledist_set_params(int bond_type, double bend, double phimin, double distmin, double phimax, double distmax)
{
  if(bond_type < 0)
    return ES_ERROR;

  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].p.angledist.bend = bend;
  bonded_ia_params[bond_type].p.angledist.phimin = phimin;
  bonded_ia_params[bond_type].p.angledist.distmin = distmin;
  bonded_ia_params[bond_type].p.angledist.phimax = phimax;
  bonded_ia_params[bond_type].p.angledist.distmax = distmax;
#ifdef BOND_ANGLEDIST_COSINE
#error angledist not implemented for BOND_ANGLEDIST_COSINE
#endif
#ifdef BOND_ANGLEDIST_COSSQUARE
#error angledist not implemented for BOND_ANGLEDIST_COSSQUARE
#endif
  bonded_ia_params[bond_type].type = BONDED_IA_ANGLEDIST;
  bonded_ia_params[bond_type].num = 2;

  /* broadcast interaction parameters */
  mpi_bcast_ia_params(bond_type, -1); 

  return ES_OK;
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
int BMHTF_set_params(int part_type_a, int part_type_b,
		     double A, double B, double C,
		     double D, double sig, double cut)
{
  double shift, dist2, pw6;
  IA_parameters *data = get_ia_param_safe(part_type_a, part_type_b);

  if (!data) return ES_ERROR;

  dist2 = cut*cut;
  pw6 = dist2*dist2*dist2;
  shift = -(A*exp(B*(sig - cut)) - C/pw6 - D/pw6/dist2);

  data->BMHTF_A   = A;
  data->BMHTF_B   = B;
  data->BMHTF_C   = C;
  data->BMHTF_D   = D;
  data->BMHTF_sig = sig;
  data->BMHTF_cut = cut;
  data->BMHTF_computed_shift = shift;
 
  /* broadcast interaction parameters */
  mpi_bcast_ia_params(part_type_a, part_type_b);

  return ES_OK;
}
int IBM_VolumeConservation_SetParams(const int bond_type, const int softID, const double kappaV)
{
  // Create bond
  make_bond_type_exist(bond_type);
  
  // General bond parameters
  bonded_ia_params[bond_type].type = BONDED_IA_IBM_VOLUME_CONSERVATION;
  bonded_ia_params[bond_type].num = 1;        // This means that Espresso requires one bond partner. Here we simply ignore it, but Espresso cannot handle 0.
  
  // Specific stuff
  if ( softID > MaxNumIBM) { printf("Error: softID (%d) is larger than MaxNumIBM (%d)\n", softID, MaxNumIBM); return ES_ERROR; }
  if ( softID < 0) { printf("Error: softID (%d) must be non-negative\n", softID); return ES_ERROR; }
  
  bonded_ia_params[bond_type].p.ibmVolConsParameters.softID = softID;
  bonded_ia_params[bond_type].p.ibmVolConsParameters.kappaV = kappaV;
  bonded_ia_params[bond_type].p.ibmVolConsParameters.volRef = 0;
  // NOTE: We cannot compute the reference volume here because not all interactions are setup
  // and thus we do not know which triangles belong to this softID
  // Calculate it later in the init function
  
  //Communicate this to whoever is interested
  mpi_bcast_ia_params(bond_type, -1);
  
  return ES_OK;
}
Exemplo n.º 7
0
int lj_cos_set_params(int part_type_a, int part_type_b,
		      double eps, double sig, double cut,
		      double offset)
{
  double facsq;
  IA_parameters *data = get_ia_param_safe(part_type_a, part_type_b);
  
  if (!data) return ES_ERROR;

  data->LJCOS_eps    = eps;
  data->LJCOS_sig    = sig;
  data->LJCOS_cut    = cut;
  data->LJCOS_offset = offset;

  /* Calculate dependent parameters */
  facsq = driwu2*SQR(sig);
  data->LJCOS_rmin = sqrt(driwu2)*sig;
  data->LJCOS_alfa = PI/(SQR(data->LJCOS_cut)-facsq);
  data->LJCOS_beta = PI*(1.-(1./(SQR(data->LJCOS_cut)/facsq-1.)));

  /* broadcast interaction parameters */
  mpi_bcast_ia_params(part_type_a, part_type_b);
  
  return ES_OK;
}
Exemplo n.º 8
0
int hydrogen_bond_set_params(int bond_type, DoubleList *params) {
  if(bond_type < 0)
    return ES_ERROR;

  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].p.hydrogen_bond.r0 = params->e[0];
  bonded_ia_params[bond_type].p.hydrogen_bond.alpha = params->e[1];
  bonded_ia_params[bond_type].p.hydrogen_bond.E0 = params->e[2];
  bonded_ia_params[bond_type].p.hydrogen_bond.kd = params->e[3];
  bonded_ia_params[bond_type].p.hydrogen_bond.sigma1 = params->e[4];
  bonded_ia_params[bond_type].p.hydrogen_bond.sigma2 = params->e[5];
  bonded_ia_params[bond_type].p.hydrogen_bond.psi10 = params->e[6];
  bonded_ia_params[bond_type].p.hydrogen_bond.psi20 = params->e[7];
  bonded_ia_params[bond_type].p.hydrogen_bond.E0sb = params->e[8];
  bonded_ia_params[bond_type].p.hydrogen_bond.r0sb = params->e[9];
  bonded_ia_params[bond_type].p.hydrogen_bond.alphasb = params->e[10];
  bonded_ia_params[bond_type].p.hydrogen_bond.f2 = params->e[11];
  bonded_ia_params[bond_type].p.hydrogen_bond.f3 = params->e[12];  

  bonded_ia_params[bond_type].type = BONDED_IA_CG_DNA_BASEPAIR;
  bonded_ia_params[bond_type].num = 3;

  mpi_bcast_ia_params(bond_type, -1);

  return ES_OK;
}
Exemplo n.º 9
0
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);

  mpi_cap_forces(force_cap);

  return ES_OK;
}
Exemplo n.º 10
0
int inter_dpd_set_params(int part_type_a, int part_type_b,
			 double gamma, double r_c, int wf,
			 double tgamma, double tr_c,
			 int twf)
{
  extern double temperature;
  IA_parameters *data = get_ia_param_safe(part_type_a, part_type_b);

  if (!data) return ES_ERROR;

  data->dpd_gamma  = gamma;
  data->dpd_r_cut  = r_c;
  data->dpd_wf     = wf;
  data->dpd_pref1  = gamma/time_step;
  data->dpd_pref2  = sqrt(24.0*temperature*gamma/time_step);
  data->dpd_tgamma = tgamma;
  data->dpd_tr_cut = tr_c;
  data->dpd_twf    = twf;
  data->dpd_pref3  = tgamma/time_step;
  data->dpd_pref4  = sqrt(24.0*temperature*tgamma/time_step);

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

  return ES_OK;
}
Exemplo n.º 11
0
int comfixed_set_params(int part_type_a, int part_type_b, int flag)
{
  Particle *p;
  int i, j, np, c;
  Cell *cell;
  IA_parameters *data = get_ia_param_safe(part_type_a, part_type_b);
  
  if (!data)
    return 1;

  if (n_nodes > 1)
    return 2;

  data->COMFIXED_flag    = flag;

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

  for (c = 0; c < local_cells.n; c++) {
    cell = local_cells.cell[c];
    p  = cell->part;
    np = cell->n;
    for(i = 0; i < np; i++) {
      if(p[i].p.type==part_type_a) {
	for(j = 0; j < 3; j++) {
	  p[i].m.v[j] = 0.;
	  p[i].f.f[j] = 0.;
	}
      }
    }
  }
  
  return ES_OK;
}
Exemplo n.º 12
0
int morse_set_params(int part_type_a, int part_type_b,
		     double eps, double alpha,
		     double rmin, double cut, double cap_radius)
{
  double add1, add2;
  IA_parameters *data = get_ia_param_safe(part_type_a, part_type_b);

  if (!data) return ES_ERROR;

  data->MORSE_eps   = eps;
  data->MORSE_alpha = alpha;
  data->MORSE_rmin  = rmin;
  data->MORSE_cut   = cut;

  /* calculate dependent parameter */
  add1 = exp(-2.0*data->MORSE_alpha*(data->MORSE_cut - data->MORSE_rmin));
  add2 = 2.0*exp(-data->MORSE_alpha*(data->MORSE_cut - data->MORSE_rmin));
  data->MORSE_rest = data->MORSE_eps * (add1 - add2); 
 
  if (cap_radius > 0) {
    data->MORSE_capradius = cap_radius;
  }

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

  mpi_cap_forces(force_cap);

  return ES_OK;
}
Exemplo n.º 13
0
void IBM_InitVolumeConservation()
{
  
  // Check since this function is called at the start of every integrate loop
  // Also check if volume has been set due to reading of a checkpoint
  if ( !VolumeInitDone /*&& VolumesCurrent[0] == 0 */)
  {
    
    // Calculate volumes
    CalcVolumes();
    
    //numWriteCOM = 0;
    
    // Loop through all bonded interactions and check if we need to set the reference volume
    for (int i=0; i < n_bonded_ia; i++)
    {
      if ( bonded_ia_params[i].type == BONDED_IA_IBM_VOLUME_CONSERVATION )
      {
        // This check is important because InitVolumeConservation may be called accidentally
        // during the integration. Then we must not reset the reference
        if ( bonded_ia_params[i].p.ibmVolConsParameters.volRef == 0 )
        {
          const int softID =bonded_ia_params[i].p.ibmVolConsParameters.softID;
          bonded_ia_params[i].p.ibmVolConsParameters.volRef = VolumesCurrent[softID];
          mpi_bcast_ia_params(i, -1);
        }
      }
      
    }
    
  }
  
  VolumeInitDone = true;
  
}
Exemplo n.º 14
0
// set out_direction parameters
int out_direction_set_params(int bond_type)
{
  if(bond_type < 0)
    return ES_ERROR;

  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].type = BONDED_IA_OIF_OUT_DIRECTION;
  bonded_ia_params[bond_type].num  = 3;

  mpi_bcast_ia_params(bond_type, -1); 

  return ES_OK;
}
Exemplo n.º 15
0
int hat_set_params(int part_type_a, int part_type_b,
			   double Fmax, double r)
{
  IA_parameters *data = get_ia_param_safe(part_type_a, part_type_b);

  if (!data) return ES_ERROR;

  data->HAT_Fmax = Fmax;
  data->HAT_r    = r;
 
  /* broadcast interaction parameters */
  mpi_bcast_ia_params(part_type_a, part_type_b);

  return ES_OK;
}
Exemplo n.º 16
0
int IBM_Tribend_ResetParams(const int bond_type, const double kb)
{
  
  // Check if bond exists and is of correct type
  if ( bond_type >= n_bonded_ia ) { printf("bond does not exist while reading tribend checkpoint\n"); return ES_ERROR; }
  if ( bonded_ia_params[bond_type].type != BONDED_IA_IBM_TRIBEND ) { printf("interaction type does not match while reading tribend checkpoint!\n"); return ES_ERROR; }

  // Check if k is correct
  if ( fabs( bonded_ia_params[bond_type].p.ibm_tribend.kb - kb) > 1e-6 ) { printf("kb does not match while reading tribend checkpoint. It is %.12e and read was %.12e\n", bonded_ia_params[bond_type].p.ibm_tribend.kb, kb); return ES_ERROR; }
  
  //Communicate this to whoever is interested
  mpi_bcast_ia_params(bond_type, -1);
  
  return ES_OK;
}
Exemplo n.º 17
0
int virtual_set_params(int bond_type)
{
  if(bond_type < 0)
    return ES_ERROR;

  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].type = BONDED_IA_VIRTUAL_BOND;
  bonded_ia_params[bond_type].num  = 1;

  /* broadcast interaction parameters */
  mpi_bcast_ia_params(bond_type, -1); 

  return ES_OK;
}
Exemplo n.º 18
0
int bonded_coulomb_set_params(int bond_type, double prefactor)
{
  if(bond_type < 0)
    return ES_ERROR;

  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].p.bonded_coulomb.prefactor = prefactor;
  bonded_ia_params[bond_type].type = BONDED_IA_BONDED_COULOMB;
  bonded_ia_params[bond_type].num  = 1;

  /* broadcast interaction parameters */
  mpi_bcast_ia_params(bond_type, -1); 

  return ES_OK;
}
Exemplo n.º 19
0
int IBM_VolumeConservation_ResetParams(const int bond_type, const double volRef)
{
  
  // Check if bond exists and is of correct type
  if ( bond_type >= n_bonded_ia ) return ES_ERROR;
  if ( bonded_ia_params[bond_type].type != BONDED_IA_IBM_VOLUME_CONSERVATION ) return ES_ERROR;
  
  // Specific stuff
  // We need to set this here, since it is not re-calculated at the restarting of a sim as, e.g., triel
  bonded_ia_params[bond_type].p.ibmVolConsParameters.volRef = volRef;
  
  //Communicate this to whoever is interested
  mpi_bcast_ia_params(bond_type, -1);

  return ES_OK;
}
Exemplo n.º 20
0
int gaussian_set_params(int part_type_a, int part_type_b,
			double eps, double sig, double cut)
{
  IA_parameters *data = get_ia_param_safe(part_type_a, part_type_b);
  
  if (!data) return ES_ERROR;
  
  data->Gaussian_eps = eps;
  data->Gaussian_sig = sig;
  data->Gaussian_cut = cut;

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

  return ES_OK;
}
Exemplo n.º 21
0
int soft_sphere_set_params(int part_type_a, int part_type_b,
			   double a, double n, double cut, double offset)
{
  IA_parameters *data = get_ia_param_safe(part_type_a, part_type_b);

  if (!data) return ES_ERROR;

  data->soft_a      = a;
  data->soft_n      = n;
  data->soft_cut    = cut;
  data->soft_offset = offset;
 
  /* broadcast interaction parameters */
  mpi_bcast_ia_params(part_type_a, part_type_b);

  return ES_OK;
}
Exemplo n.º 22
0
int subt_lj_set_params(int bond_type, double k, double r)
{
  if(bond_type < 0)
    return ES_ERROR;
  
  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].p.subt_lj.k = k;
  bonded_ia_params[bond_type].p.subt_lj.r = r;
  bonded_ia_params[bond_type].type = BONDED_IA_SUBT_LJ;  
  bonded_ia_params[bond_type].p.subt_lj.r2 = SQR(bonded_ia_params[bond_type].p.subt_lj.r);
  bonded_ia_params[bond_type].num = 1;

  mpi_bcast_ia_params(bond_type, -1); 

  return ES_OK;
}
Exemplo n.º 23
0
/// set dihedral parameters
int dihedral_set_params(int bond_type, int mult, double bend, double phase)
{
  if(bond_type < 0)
    return ES_ERROR;

  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].type = BONDED_IA_DIHEDRAL;
  bonded_ia_params[bond_type].num  = 3;
  bonded_ia_params[bond_type].p.dihedral.mult = mult;
  bonded_ia_params[bond_type].p.dihedral.bend = bend;
  bonded_ia_params[bond_type].p.dihedral.phase = phase;

  mpi_bcast_ia_params(bond_type, -1); 

  return ES_OK;
}
Exemplo n.º 24
0
/*****************************************************************************
 *   setting parameters
 *****************************************************************************/
int rigid_bond_set_params(int bond_type, double d, double p_tol, double v_tol)
{
  if(bond_type < 0)
    return ES_ERROR;

  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].p.rigid_bond.d2 = d*d;
  bonded_ia_params[bond_type].p.rigid_bond.p_tol = 2.0*p_tol;
  bonded_ia_params[bond_type].p.rigid_bond.v_tol = v_tol*time_step;
  bonded_ia_params[bond_type].type = BONDED_IA_RIGID_BOND;
  bonded_ia_params[bond_type].num = 1;
  n_rigidbonds += 1;
  mpi_bcast_ia_params(bond_type, -1);
  mpi_bcast_parameter(FIELD_RIGIDBONDS);

  return ES_OK;
}
Exemplo n.º 25
0
/** set parameters for the angle potential.

    \todo The type of the angle potential
    is chosen via config.hpp and cannot be changed at runtime.
*/
int angle_cossquare_set_params(int bond_type, double bend, double phi0)
{
  if(bond_type < 0)
    return ES_ERROR;

  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].p.angle_cossquare.bend = bend;
  bonded_ia_params[bond_type].p.angle_cossquare.phi0 = phi0;
  bonded_ia_params[bond_type].p.angle_cossquare.cos_phi0 = cos(phi0);
  bonded_ia_params[bond_type].type = BONDED_IA_ANGLE_COSSQUARE;
  bonded_ia_params[bond_type].num = 2;
 
  /* broadcast interaction parameters */
  mpi_bcast_ia_params(bond_type, -1); 

  return ES_OK;
}
Exemplo n.º 26
0
/// set the parameters for the stretching_force potential
int stretching_force_set_params(int bond_type, double r0, double ks)
{
  if(bond_type < 0)
    return ES_ERROR;

  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].p.stretching_force.ks = ks;
  bonded_ia_params[bond_type].p.stretching_force.r0 = r0;
  
  bonded_ia_params[bond_type].type = BONDED_IA_STRETCHING_FORCE;
  bonded_ia_params[bond_type].num  = 1;

  /* broadcast interaction parameters */
  mpi_bcast_ia_params(bond_type, -1); 
  
  return ES_OK;
}
Exemplo n.º 27
0
int harmonic_set_params(int bond_type, double k, double r,double r_cut)
{
  if(bond_type < 0)
    return ES_ERROR;

  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].p.harmonic.k = k;
  bonded_ia_params[bond_type].p.harmonic.r = r;
  bonded_ia_params[bond_type].p.harmonic.r_cut = r_cut;
  bonded_ia_params[bond_type].type = BONDED_IA_HARMONIC;
  bonded_ia_params[bond_type].num  = 1;

  /* broadcast interaction parameters */
  mpi_bcast_ia_params(bond_type, -1); 

  return ES_OK;
}
Exemplo n.º 28
0
/** set parameters for the AREA_FORCE_GLOBAL potential. 
*/
int area_force_global_set_params(int bond_type, double A0_g, double ka_g)
{
  if(bond_type < 0)
    return ES_ERROR;

  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].p.area_force_global.ka_g = ka_g;
  bonded_ia_params[bond_type].p.area_force_global.A0_g = A0_g;

  bonded_ia_params[bond_type].type = BONDED_IA_AREA_FORCE_GLOBAL;
  bonded_ia_params[bond_type].num = 2;				
 
  /* broadcast interaction parameters */
  mpi_bcast_ia_params(bond_type, -1); 

  return ES_OK;
}
Exemplo n.º 29
0
/** set parameters for the angle potential.

    \todo The type of the angle potential
    is chosen via config.hpp and cannot be changed at runtime.
*/
int angle_harmonic_set_params(int bond_type, double bend, double phi0)
{
  if(bond_type < 0)
    return ES_ERROR;

  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].p.angle_harmonic.bend = bend;
  bonded_ia_params[bond_type].p.angle_harmonic.phi0 = phi0;

  bonded_ia_params[bond_type].type = BONDED_IA_ANGLE_HARMONIC;
  bonded_ia_params[bond_type].num = 2;
 
  /* broadcast interaction parameters */
  mpi_bcast_ia_params(bond_type, -1); 

  return ES_OK;
}
Exemplo n.º 30
0
/** set parameters for the OIF_GLOBAL_FORCES potential. 
*/
int oif_global_forces_set_params(int bond_type, double A0_g, double ka_g, double V0, double kv)
{
  if(bond_type < 0)
    return ES_ERROR;

  make_bond_type_exist(bond_type);

  bonded_ia_params[bond_type].p.oif_global_forces.ka_g = ka_g;
  bonded_ia_params[bond_type].p.oif_global_forces.A0_g = A0_g;
  bonded_ia_params[bond_type].p.oif_global_forces.V0 = V0;
  bonded_ia_params[bond_type].p.oif_global_forces.kv = kv;

  bonded_ia_params[bond_type].type = BONDED_IA_OIF_GLOBAL_FORCES;
  bonded_ia_params[bond_type].num = 2;				
 
  /* broadcast interaction parameters */
  mpi_bcast_ia_params(bond_type, -1); 

  return ES_OK;
}