本文整理汇总了C++中ERROR_SPRINTF函数的典型用法代码示例。如果您正苦于以下问题:C++ ERROR_SPRINTF函数的具体用法?C++ ERROR_SPRINTF怎么用?C++ ERROR_SPRINTF使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了ERROR_SPRINTF函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: runtime_error
Particle *get_mol_com_particle(Particle *calling_p) {
int mol_id;
int i;
Particle *p;
mol_id=calling_p->p.mol_id;
for (i=0; i<topology[mol_id].part.n; i++) {
p=local_particles[topology[mol_id].part.e[i]];
#ifdef VIRTUAL_SITES_DEBUG
if (p==NULL) {
char *errtxt = runtime_error(128 + 3*TCL_INTEGER_SPACE);
ERROR_SPRINTF(errtxt,"Particle does not exist in put_mol_force_on_parts! id=%i\n",topology[mol_id].part.e[i]);
return NULL;
}
#endif
if (ifParticleIsVirtual(p)) {
return p;
}
}
#ifdef VIRTUAL_SITES_DEBUG
char *errtxt = runtime_error(128 + 3*TCL_INTEGER_SPACE);
ERROR_SPRINTF(errtxt,"No com found in get_mol_com_particleParticle does not exist in put_mol_force_on_parts! pnr=%i\n",calling_p->p.identity);
return NULL;
#endif
return calling_p;
}
开发者ID:adolfom,项目名称:espresso,代码行数:26,代码来源:virtual_sites_com.c
示例2: updatePartCfg
int updatePartCfg(int bonds_flag)
{
int j;
if(partCfg)
return 1;
partCfg = (Particle*)malloc(n_part*sizeof(Particle));
if (bonds_flag != WITH_BONDS)
mpi_get_particles(partCfg, NULL);
else
mpi_get_particles(partCfg,&partCfg_bl);
for(j=0; j<n_part; j++)
unfold_position(partCfg[j].r.p,partCfg[j].l.i);
partCfgSorted = 0;
#ifdef VIRTUAL_SITES
if (!sortPartCfg()) {
char *errtxt = runtime_error(128);
ERROR_SPRINTF(errtxt,"{094 could not sort partCfg} ");
return 0;
}
if (!updatePartCfg(bonds_flag)) {
char *errtxt = runtime_error(128);
ERROR_SPRINTF(errtxt,"{094 could not update positions of virtual sites in partcfg } ");
return 0;
}
#endif
return 1;
}
开发者ID:dawuweijun,项目名称:espresso_cpp,代码行数:31,代码来源:particle_data.cpp
示例3: runtime_error
Particle *get_mol_com_particle(Particle *calling_p){
int mol_id;
int i;
Particle *p;
mol_id=calling_p->p.mol_id;
if (mol_id < 0) {
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt,"Particle does not have a mol id! pnr=%i\n",
calling_p->p.identity);
return NULL;
}
for (i=0;i<topology[mol_id].part.n;i++){
p=local_particles[topology[mol_id].part.e[i]];
if (p==NULL){
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt,"Particle does not exist in put_mol_force_on_parts! id=%i\n",topology[mol_id].part.e[i]);
return NULL;
}
if (ifParticleIsVirtual(p)) {
return p;
}
}
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt,"No com found in get_mol_com_particleParticle does not exist in put_mol_force_on_parts! pnr=%i\n",calling_p->p.identity);
return NULL;
return calling_p;
}
开发者ID:dawuweijun,项目名称:espresso_cpp,代码行数:33,代码来源:virtual_sites_com.cpp
示例4: getintersection
int getintersection(double pos1[3], double pos2[3],int given, int get, double value, double *answer, double box_size[3])
{
/*pos1 and pos2 are two particle positions. */
/*given and get are integers from 0 to 2. 0 = x direction. 1 = y direction. 2 = z direction */
/*there is a point on the line between the two particles p1 and p2 such that r[given]=value */
/*this procedure returns the value of r[get] at that point */
double p2r[3];
int i;
for (i=0;i<3;i++) {
p2r[i] = drem_down((pos2[i]-pos1[i])+box_size[i]/2.0,box_size[i])-box_size[i]/2.0;
}
value = drem_down((value-pos1[given])+box_size[given]/2.0,box_size[given])-box_size[given]/2.0;
//PTENSOR_TRACE(fprintf(stderr,"%d: getintersection: p1 is %f %f %f p2 is %f %f %f p2r is %f %f %f newvalue is %f\n",this_node,pos1[0],pos1[1],pos1[2],pos2[0],pos2[1],pos2[2],p2r[0],p2r[1],p2r[2],value););
if ((value)*(p2r[given]) < -0.0001) {
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt, "{analyze stress_profile: getintersection: intersection is not between the two given particles - %e is not between %e and %e and box size is %e, given is %d\n ",value,0.0,p2r[given],box_size[given],given);
return 0;
} else if (given == get) {
*answer = drem_down(value + pos1[given],box_size[given]);;
} else if (0==p2r[given]) {
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt, "{analyze stress_profile: getintersection: intersection is a line, not a point - value is %g same as %g and %g\n",value,0.0,p2r[given]);
return 0;
} else {
*answer = drem_down(pos1[get]+p2r[get]/p2r[given]*value,box_size[get]);
}
return 1;
}
开发者ID:rafaelbordin,项目名称:espresso,代码行数:31,代码来源:pressure.c
示例5: map_to_2dgrid
/** This function takes a given grid supplied by the user and
determines the correct orientation in which to do the fourier
transform. In this regard one of the grid dimensions must be 0
and the other two must be integer multiples of two and equal to
each other. The dimension that is 0 will be assigned an internal
reference called zdir and will be used to calculate the height
function used in the fft
*/
void map_to_2dgrid() {
int i;
STAT_TRACE(fprintf(stderr,"%d,executing map_to_2dgrid \n",this_node));
/* Reset values of mapping */
xdir = -1;
ydir = -1;
zdir = -1;
/* Find the grid normal */
for ( i = 0 ; i < 3 ; i++) {
if ( mode_grid_3d[i] == 0 ) {
if (zdir != -1 ) { /* grid normal must be unique */
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt, "{029 fft_modes_init: grid dimensions are <%d,%d,%d>, but one and only one must be = 0} ",
mode_grid_3d[0],mode_grid_3d[1],mode_grid_3d[2]);
return;
} else {
zdir = i;
}
}
else if ( mode_grid_3d[i] < 0 ) {
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt, "{030 fft_modes_init: grid dimensions are <%d,%d,%d>, but all must be >= 0} ",
mode_grid_3d[0],mode_grid_3d[1],mode_grid_3d[2]);
return;
}
else {
if ( xdir == -1 ) {xdir = i;}
else {ydir = i;}
}
}
/* Check that grid normal was found */
if ( zdir == -1 ) {
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt, "{031 fft_modes_init: grid dimensions are <%d,%d,%d>, but one and only one must be = 0} ",
mode_grid_3d[0],mode_grid_3d[1],mode_grid_3d[2]);
return;
}
STAT_TRACE(fprintf(stderr,
"%d,map_to_2dgrid found the following mapping: xdir = %d, ydir = %d, zdir = %d \n",
this_node, xdir, ydir, zdir));
/* Now that we know the grid normal check that the other two dimensions are equal and multiples of 2 */
if ( mode_grid_3d[xdir] != mode_grid_3d[ydir] ) {
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt, "{032 fft_modes_init: grid dimensions are <%d,%d,%d>, but two must be equal and the other 0} ",
mode_grid_3d[xdir],mode_grid_3d[ydir],mode_grid_3d[zdir]);
return;
}
if ( (mode_grid_3d[xdir]/2.0 - floor(mode_grid_3d[xdir]/2.0) > MODES2D_NUM_TOL)
|| (mode_grid_3d[ydir]/2.0 - floor(mode_grid_3d[ydir]/2.0) > MODES2D_NUM_TOL) ) {
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt, "{033 fft_modes_init: grid dimensions are <%d,%d,%d>. All non zero values must be integer multiples of 2} ",
mode_grid_3d[xdir],mode_grid_3d[ydir],mode_grid_3d[zdir]);
return;
}
}
开发者ID:Petr-Melenev,项目名称:espresso-dev,代码行数:67,代码来源:modes.cpp
示例6: put_mol_force_on_parts
void put_mol_force_on_parts(Particle *p_com){
int i,j,mol_id;
Particle *p;
double force[3],M;
#ifdef VIRTUAL_SITES_DEBUG
int count=0;
#endif
mol_id=p_com->p.mol_id;
for (i=0;i<3;i++){
force[i]=p_com->f.f[i];
p_com->f.f[i]=0.0;
}
#ifdef MASS
M=0;
for (i=0;i<topology[mol_id].part.n;i++){
p=local_particles[topology[mol_id].part.e[i]];
#ifdef VIRTUAL_SITES_DEBUG
if (p==NULL){
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt,"Particle does not exist in put_mol_force_on_parts! id=%i\n",topology[mol_id].part.e[i]);
return;
}
#endif
if (ifParticleIsVirtual(p)) continue;
M+=PMASS(*p);
}
#else
M=topology[mol_id].part.n-1;
#endif
for (i=0;i<topology[mol_id].part.n;i++){
p=local_particles[topology[mol_id].part.e[i]];
#ifdef VIRTUAL_SITES_DEBUG
if (p==NULL){
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt,"Particle does not exist in put_mol_force_on_parts! id=%i\n",topology[mol_id].part.e[i]);
return;
}
#endif
if (!ifParticleIsVirtual(p)) {
for (j=0;j<3;j++){
p->f.f[j]+=PMASS(*p)*force[j]/M;
}
#ifdef VIRTUAL_SITES_DEBUG
count++;
#endif
}
}
#ifdef VIRTUAL_SITES_DEBUG
if (count!=topology[mol_id].part.n-1){
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt,"There is more than one COM input_mol_force_on_parts! mol_id=%i\n",mol_id);
return;
}
#endif
}
开发者ID:dawuweijun,项目名称:espresso_cpp,代码行数:55,代码来源:virtual_sites_com.cpp
示例7: get_lipid_orients
/* Get a complete list of the orientations of every lipid assuming a
bilayer structure. Requires grid*/
int get_lipid_orients(IntList* l_orient) {
int i,gi,gj, atom;
double zreflocal,zref;
double dir[3];
double refdir[3] = {0,0,1};
double grid_size[2];
double* height_grid;
if ( xdir + ydir + zdir == -3 || mode_grid_3d[xdir] <= 0 || mode_grid_3d[ydir] <= 0 ) {
char *errtxt = runtime_error(128);
ERROR_SPRINTF(errtxt,"{036 cannot calculate lipid orientations with uninitialized grid} ");
return ES_ERROR;
}
/* Allocate memory for height grid arrays and initialize these arrays */
height_grid = (double*) malloc((mode_grid_3d[xdir])*sizeof(double)*mode_grid_3d[ydir]);
/* Calculate physical size of grid mesh */
grid_size[xdir] = box_l[xdir]/(double)mode_grid_3d[xdir];
grid_size[ydir] = box_l[ydir]/(double)mode_grid_3d[ydir];
/* Update particles */
updatePartCfg(WITHOUT_BONDS);
//Make sure particles are sorted
if (!sortPartCfg()) {
fprintf(stderr,"%d,could not sort partCfg \n",this_node);
return -1;
}
if ( !calc_fluctuations(height_grid, 1) ) {
char *errtxt = runtime_error(128);
ERROR_SPRINTF(errtxt,"{034 calculation of height grid failed } ");
return -1;
}
zref = calc_zref( zdir );
for ( i = 0 ; i < n_molecules ; i++) {
atom = topology[i].part.e[0];
gi = floor( partCfg[atom].r.p[xdir]/grid_size[xdir] );
gj = floor( partCfg[atom].r.p[ydir]/grid_size[ydir] );
zreflocal = height_grid[gj+gi*mode_grid_3d[xdir]] + zref;
l_orient->e[i] = lipid_orientation(atom,partCfg,zreflocal,dir,refdir);
}
free(height_grid);
return 1;
}
开发者ID:Petr-Melenev,项目名称:espresso-dev,代码行数:54,代码来源:modes.cpp
示例8: runtime_error
void Lattice::interpolate_linear(double* pos, double* value) {
int left_halo_index[3];
double d[3];
if (this->halo_size <= 0) {
char* c = runtime_error(128);
ERROR_SPRINTF(c, "Error in interpolate_linear: halo size is 0");
return;
}
for (int dim = 0; dim<3; dim++) {
left_halo_index[dim]=(int) floor((pos[dim]-this->local_offset[dim])/this->agrid[dim]) + this->halo_size;
d[dim]=((pos[dim]-this->local_offset[dim])/this->agrid[dim] - floor((pos[dim]-this->local_offset[dim])/this->agrid[dim]));
if (left_halo_index[dim] < 0 || left_halo_index[dim] >= this->halo_grid[dim]) {
char* c = runtime_error(128);
ERROR_SPRINTF(c, "Error in interpolate_linear: Particle out of range");
return;
}
}
double w[8];
index_t index[8];
w[0] = (1-d[0])*(1-d[1])*(1-d[2]);
index[0]=get_linear_index( left_halo_index[0], left_halo_index[1], left_halo_index[2], this->halo_grid);
w[1] = ( +d[0])*(1-d[1])*(1-d[2]);
index[1]=get_linear_index( left_halo_index[0]+1, left_halo_index[1], left_halo_index[2], this->halo_grid);
w[2] = (1-d[0])*( +d[1])*(1-d[2]);
index[2]=get_linear_index( left_halo_index[0], left_halo_index[1]+1, left_halo_index[2], this->halo_grid);
w[3] = ( +d[0])*( +d[1])*(1-d[2]);
index[3]=get_linear_index( left_halo_index[0]+1, left_halo_index[1]+1, left_halo_index[2], this->halo_grid);
w[4] = (1-d[0])*(1-d[1])*( +d[2]);
index[4]=get_linear_index( left_halo_index[0], left_halo_index[1], left_halo_index[2]+1, this->halo_grid);
w[5] = ( +d[0])*(1-d[1])*( +d[2]);
index[5]=get_linear_index( left_halo_index[0]+1, left_halo_index[1], left_halo_index[2]+1, this->halo_grid);
w[6] = (1-d[0])*( +d[1])*( +d[2]);
index[6]=get_linear_index( left_halo_index[0], left_halo_index[1]+1, left_halo_index[2]+1, this->halo_grid);
w[7] = ( +d[0])*( +d[1])*( +d[2]);
index[7]=get_linear_index( left_halo_index[0]+1, left_halo_index[1]+1, left_halo_index[2]+1, this->halo_grid);
for (unsigned int i = 0; i<this->dim; i++) {
value[i] = 0;
}
double* local_value;
for (unsigned int i=0; i<8; i++) {
get_data_for_linear_index(index[i], (void**) &local_value);
for (unsigned int j = 0; j<this->dim; j++) {
value[j]+=w[i]*local_value[j];
}
}
}
开发者ID:Varvara08,项目名称:myrepo,代码行数:49,代码来源:lattice.cpp
示例9: observable_calc_blocked_com_force
int observable_calc_blocked_com_force(observable* self) {
double* A = self->last_value;
unsigned int i;
unsigned int block;
unsigned int n_blocks;
unsigned int blocksize;
unsigned int id;
IntList* ids;
if (!sortPartCfg()) {
char *errtxt = runtime_error(128);
ERROR_SPRINTF(errtxt,"{094 could not sort partCfg} ");
return -1;
}
ids=(IntList*) self->container;
n_blocks=self->n/3;
blocksize=ids->n/n_blocks;
for ( block = 0; block < n_blocks; block++ ) {
for ( i = 0; i < blocksize; i++ ) {
id = ids->e[block*blocksize+i];
if (ids->e[i] >= n_part)
return 1;
A[3*block+0] += partCfg[id].f.f[0]/time_step/time_step*2;
A[3*block+1] += partCfg[id].f.f[1]/time_step/time_step*2;
A[3*block+2] += partCfg[id].f.f[2]/time_step/time_step*2;
}
}
return 0;
}
开发者ID:tojb,项目名称:espresso,代码行数:28,代码来源:statistics_observable.cpp
示例10: observable_calc_blocked_com_position
int observable_calc_blocked_com_position(observable* self) {
double* A = self->last_value;
unsigned int i;
unsigned int block;
unsigned int n_blocks;
unsigned int blocksize;
unsigned int id;
double total_mass = 0;
IntList* ids;
if (!sortPartCfg()) {
char *errtxt = runtime_error(128);
ERROR_SPRINTF(errtxt,"{094 could not sort partCfg} ");
return -1;
}
ids=(IntList*) self->container;
n_blocks=self->n/3;
blocksize=ids->n/n_blocks;
for ( block = 0; block < n_blocks; block++ ) {
total_mass = 0;
for ( i = 0; i < blocksize; i++ ) {
id = ids->e[block*blocksize+i];
if (ids->e[i] >= n_part)
return 1;
A[3*block+0] += PMASS(partCfg[id])*partCfg[id].r.p[0];
A[3*block+1] += PMASS(partCfg[id])*partCfg[id].r.p[1];
A[3*block+2] += PMASS(partCfg[id])*partCfg[id].r.p[2];
total_mass += PMASS(partCfg[ids->e[i]]);
}
A[3*block+0] /= total_mass;
A[3*block+1] /= total_mass;
A[3*block+2] /= total_mass;
}
return 0;
}
开发者ID:tojb,项目名称:espresso,代码行数:34,代码来源:statistics_observable.cpp
示例11: cells_on_max_cut_change
void cells_on_max_cut_change(int shrink)
{
double old_max_range = max_range;
calc_maximal_cutoff();
if (max_cut > 0.0) {
if (skin >= 0.0)
max_range = max_cut + skin;
else
/* if the skin is not yet set, assume zero. */
max_range = max_cut;
}
else
/* if no interactions yet, we also don't need a skin */
max_range = 0.0;
/* no need to do something if
1. the range didn't change numerically (<= necessary for the start case,
when max_range and old_max_range == 0.0)
2. it shrank, and we shouldn't shrink (NpT) */
if ((fabs(max_range - old_max_range) <= ROUND_ERROR_PREC * max_range) ||
(!shrink && (max_range < old_max_range)))
return;
cells_re_init(CELL_STRUCTURE_CURRENT);
for (int i = 0; i < 3; i++)
if (local_box_l[i] < max_range) {
char *errtext = runtime_error(128 + TCL_INTEGER_SPACE);
ERROR_SPRINTF(errtext,"{013 box_l in direction %d is still too small} ", i);
}
}
开发者ID:roehm,项目名称:cython,代码行数:33,代码来源:cells.c
示例12: MMM1D_sanity_checks
int MMM1D_sanity_checks()
{
char *errtxt;
if (PERIODIC(0) || PERIODIC(1) || !PERIODIC(2)) {
errtxt = runtime_error(128);
ERROR_SPRINTF(errtxt, "{022 MMM1D requires periodicity 0 0 1} ");
return 1;
}
if (cell_structure.type != CELL_STRUCTURE_NSQUARE) {
errtxt = runtime_error(128);
ERROR_SPRINTF(errtxt, "{023 MMM1D requires n-square cellsystem} ");
return 1;
}
return 0;
}
开发者ID:rafaelbordin,项目名称:espresso,代码行数:16,代码来源:mmm1d.c
示例13: get_local_trapped_mols
/* A list of trapped molecules present on this node is created (local_trapped_mols)*/
void get_local_trapped_mols (IntList *local_trapped_mols)
{
int c, i, mol, j, fixed;
for (c = 0; c < local_cells.n; c++) {
for(i = 0; i < local_cells.cell[c]->n; i++) {
mol = local_cells.cell[c]->part[i].p.mol_id;
if ( mol >= n_molecules ) {
char *errtxt = runtime_error(128 + 3*TCL_INTEGER_SPACE);
ERROR_SPRINTF(errtxt, "{ 094 can't calculate molforces no such molecule as %d }",mol);
return;
}
/* Check to see if this molecule is fixed */
fixed =0;
for(j = 0; j < 3; j++) {
#ifdef EXTERNAL_FORCES
if (topology[mol].trap_flag & COORD_FIXED(j)) fixed = 1;
if (topology[mol].noforce_flag & COORD_FIXED(j)) fixed = 1;
#endif
}
if (fixed) {
/* if this molecule isn't already in local_trapped_mols then add it in */
if (!intlist_contains(local_trapped_mols,mol)) {
realloc_intlist(local_trapped_mols, local_trapped_mols->max + 1);
local_trapped_mols->e[local_trapped_mols->max-1] = mol;
local_trapped_mols->n = local_trapped_mols->max;
}
}
}
}
}
开发者ID:adolfom,项目名称:espresso,代码行数:33,代码来源:molforces.c
示例14: lb_calc_local_rho
/** Calculate the local fluid density.
* The calculation is implemented explicitly for the special case of D3Q19.
* @param index the local lattice site (Input).
* @param rho local fluid density
*/
inline void lb_calc_local_rho(index_t index, double *rho) {
#ifndef D3Q19
#error Only D3Q19 is implemened!
#endif
// unit conversion: mass density
if (!(lattice_switch & LATTICE_LB)) {
ERROR_SPRINTF(runtime_error(128),
"{ Error in lb_calc_local_rho in %s %d: CPU LB not switched on. } ", __FILE__, __LINE__);
*rho =0;
return;
}
double avg_rho = lbpar.rho[0]*lbpar.agrid*lbpar.agrid*lbpar.agrid;
*rho = avg_rho
+ lbfluid[0][0][index]
+ lbfluid[0][1][index] + lbfluid[0][2][index]
+ lbfluid[0][3][index] + lbfluid[0][4][index]
+ lbfluid[0][5][index] + lbfluid[0][6][index]
+ lbfluid[0][7][index] + lbfluid[0][8][index]
+ lbfluid[0][9][index] + lbfluid[0][10][index]
+ lbfluid[0][11][index] + lbfluid[0][12][index]
+ lbfluid[0][13][index] + lbfluid[0][14][index]
+ lbfluid[0][15][index] + lbfluid[0][16][index]
+ lbfluid[0][17][index] + lbfluid[0][18][index];
}
开发者ID:KKleinbeck,项目名称:Espresso-Personal,代码行数:34,代码来源:lb.hpp
示例15: lb_calc_local_j
/** Calculate the local fluid momentum.
* The calculation is implemented explicitly for the special case of D3Q19.
* @param index The local lattice site (Input).
* @param j local fluid speed
*/
inline void lb_calc_local_j(index_t index, double *j) {
#ifndef D3Q19
#error Only D3Q19 is implemened!
#endif
if (!(lattice_switch & LATTICE_LB)) {
ERROR_SPRINTF(runtime_error(128),
"{ Error in lb_calc_local_j in %s %d: CPU LB not switched on. } ", __FILE__, __LINE__);
j[0]=j[1]=j[2]=0;
return;
}
j[0] = lbfluid[0][1][index] - lbfluid[0][2][index]
+ lbfluid[0][7][index] - lbfluid[0][8][index]
+ lbfluid[0][9][index] - lbfluid[0][10][index]
+ lbfluid[0][11][index] - lbfluid[0][12][index]
+ lbfluid[0][13][index] - lbfluid[0][14][index];
j[1] = lbfluid[0][3][index] - lbfluid[0][4][index]
+ lbfluid[0][7][index] - lbfluid[0][8][index]
- lbfluid[0][9][index] + lbfluid[0][10][index]
+ lbfluid[0][15][index] - lbfluid[0][16][index]
+ lbfluid[0][17][index] - lbfluid[0][18][index];
j[2] = lbfluid[0][5][index] - lbfluid[0][6][index]
+ lbfluid[0][11][index] - lbfluid[0][12][index]
- lbfluid[0][13][index] + lbfluid[0][14][index]
+ lbfluid[0][15][index] - lbfluid[0][16][index]
- lbfluid[0][17][index] + lbfluid[0][18][index];
}
开发者ID:KKleinbeck,项目名称:Espresso-Personal,代码行数:34,代码来源:lb.hpp
示例16: correct_pos_shake
void correct_pos_shake()
{
int repeat_, cnt=0;
int repeat=1;
while (repeat!=0 && cnt<SHAKE_MAX_ITERATIONS)
{
init_correction_vector();
repeat_ = 0;
compute_pos_corr_vec(&repeat_);
ghost_communicator(&cell_structure.collect_ghost_force_comm);
app_pos_correction();
/**Ghost Positions Update*/
ghost_communicator(&cell_structure.update_ghost_pos_comm);
if(this_node==0)
MPI_Reduce(&repeat_, &repeat, 1, MPI_INT, MPI_SUM, 0, comm_cart);
else
MPI_Reduce(&repeat_, NULL, 1, MPI_INT, MPI_SUM, 0, comm_cart);
MPI_Bcast(&repeat, 1, MPI_INT, 0, comm_cart);
cnt++;
}// while(repeat) loop
if (cnt >= SHAKE_MAX_ITERATIONS) {
char *errtxt = runtime_error(100 + ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt, "{053 RATTLE failed to converge after %d iterations} ", cnt);
}
check_resort_particles();
}
开发者ID:KKleinbeck,项目名称:Espresso-Personal,代码行数:29,代码来源:rattle.cpp
示例17: update_mol_pos_particle
// Update the pos of the given virtual particle as defined by the real
// particles in the same molecule
void update_mol_pos_particle(Particle *p)
{
// First obtain the real particle responsible for this virtual particle:
// Find the 1st real particle in the topology for the virtual particle's mol_id
Particle *p_real = vs_relative_get_real_particle(p);
// Check, if a real particle was found
if (!p_real)
{
char *errtxt = runtime_error(128 + 3*ES_INTEGER_SPACE);
ERROR_SPRINTF(errtxt,"virtual_sites_relative.cpp - update_mol_pos_particle(): No real particle associated with virtual site.\n");
return;
}
// Calculate the quaternion defining the orientation of the vecotr connectinhg
// the virtual site and the real particle
// This is obtained, by multiplying the quaternion representing the director
// of the real particle with the quaternion of the virtual particle, which
// specifies the relative orientation.
double q[4];
multiply_quaternions(p_real->r.quat,p->r.quat,q);
// Calculate the director resulting from the quaternions
double director[3];
convert_quat_to_quatu(q,director);
// normalize
double l =sqrt(sqrlen(director));
// Division comes in the loop below
// Calculate the new position of the virtual sites from
// position of real particle + director
int i;
double new_pos[3];
double tmp;
for (i=0;i<3;i++)
{
new_pos[i] =p_real->r.p[i] +director[i]/l*p->p.vs_relative_distance;
// Handle the case that one of the particles had gone over the periodic
// boundary and its coordinate has been folded
#ifdef PARTIAL_PERIODIC
if (PERIODIC(i))
#endif
{
tmp =p->r.p[i] -new_pos[i];
//printf("%f\n",tmp);
if (tmp > box_l[i]/2.) {
//printf("greater than box_l/2 %f\n",tmp);
p->r.p[i] =new_pos[i] + box_l[i];
}
else if (tmp < -box_l[i]/2.) {
//printf("smaller than box_l/2 %f\n",tmp);
p->r.p[i] =new_pos[i] - box_l[i];
}
else p->r.p[i] =new_pos[i];
}
#ifdef PARTIAL_PERIODIC
else p->r.p[i] =new_pos[i];
#endif
// fold_coordinate(p->r.p,p->l.i,i);
}
}
开发者ID:dawuweijun,项目名称:espresso_cpp,代码行数:62,代码来源:virtual_sites_relative.cpp
示例18: calc_mol_info
/**
Calculate the center of mass, total mass, velocity, total force, and trap force on all trapped molecules
*/
void calc_mol_info () {
/* list of trapped molecules on this node */
IntList local_trapped_mols;
/* check to see if all the topology information has been synced to the various slave nodes */
if ( !topo_part_info_synced ) {
char *errtxt = runtime_error(128 + 3*TCL_INTEGER_SPACE);
ERROR_SPRINTF(errtxt, "{ 093 can't calculate molforces: must execute analyse set topo_part_sync first }");
return;
}
init_intlist(&local_trapped_mols);
/* Find out which trapped molecules are on this node */
get_local_trapped_mols(&local_trapped_mols);
/* Calculate the center of mass, mass, velocity, force of whatever fraction of each trapped molecule is on this node*/
calc_local_mol_info(&local_trapped_mols);
/* Communicate all this molecular information between nodes.
It is all sent to the master node which combines it, calculates the trap forces,
and sends the information back */
if (this_node == 0) {
mpi_comm_mol_info(&local_trapped_mols);
} else {
mpi_comm_mol_info_slave(&local_trapped_mols);
}
realloc_intlist(&local_trapped_mols,0);
}
开发者ID:adolfom,项目名称:espresso,代码行数:34,代码来源:molforces.c
示例19: observable_calc_flux_density_profile
int observable_calc_flux_density_profile(observable* self) {
double* A = self->last_value;
int binx, biny, binz;
double ppos[3];
double x, y, z;
int img[3];
double bin_volume;
IntList* ids;
#ifdef LEES_EDWARDS
double v_le[3];
#endif
if (!sortPartCfg()) {
char *errtxt = runtime_error(128);
ERROR_SPRINTF(errtxt,"{094 could not sort partCfg} ");
return -1;
}
profile_data* pdata;
pdata=(profile_data*) self->container;
ids=pdata->id_list;
double xbinsize=(pdata->maxx - pdata->minx)/pdata->xbins;
double ybinsize=(pdata->maxy - pdata->miny)/pdata->ybins;
double zbinsize=(pdata->maxz - pdata->minz)/pdata->zbins;
double v[3];
double v_x, v_y, v_z;
for (int i = 0; i< self->n; i++ ) {
A[i]=0;
}
for (int i = 0; i<ids->n; i++ ) {
if (ids->e[i] >= n_part)
return 1;
/* We use folded coordinates here */
v[0]=partCfg[ids->e[i]].m.v[0]*time_step;
v[1]=partCfg[ids->e[i]].m.v[1]*time_step;
v[2]=partCfg[ids->e[i]].m.v[2]*time_step;
memcpy(ppos, partCfg[ids->e[i]].r.p, 3*sizeof(double));
memcpy(img, partCfg[ids->e[i]].l.i, 3*sizeof(int));
fold_position(ppos, img);
x=ppos[0];
y=ppos[1];
z=ppos[2];
binx =(int)floor((x-pdata->minx)/xbinsize);
biny =(int)floor((y-pdata->miny)/ybinsize);
binz =(int)floor((z-pdata->minz)/zbinsize);
if (binx>=0 && binx < pdata->xbins && biny>=0 && biny < pdata->ybins && binz>=0 && binz < pdata->zbins) {
bin_volume=xbinsize*ybinsize*zbinsize;
v_x=v[0];
v_y=v[1];
v_z=v[2];
A[3*(binx*pdata->ybins*pdata->zbins + biny*pdata->zbins + binz) + 0] += v_x/bin_volume;
A[3*(binx*pdata->ybins*pdata->zbins + biny*pdata->zbins + binz) + 1] += v_y/bin_volume;
A[3*(binx*pdata->ybins*pdata->zbins + biny*pdata->zbins + binz) + 2] += v_z/bin_volume;
}
}
return 0;
}
开发者ID:tojb,项目名称:espresso,代码行数:59,代码来源:statistics_observable.cpp
示例20: interpolate_linear
void Lattice::interpolate(double* pos, double* value) {
if (this->interpolation_type == INTERPOLATION_LINEAR) {
interpolate_linear(pos, value);
} else {
char* c = runtime_error(128);
ERROR_SPRINTF(c, "Unknown interpolation type");
}
}
开发者ID:Varvara08,项目名称:myrepo,代码行数:8,代码来源:lattice.cpp
注:本文中的ERROR_SPRINTF函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论