void init_p_tensor(Observable_stat *stat) { int n_pre, n_non_bonded, n_coulomb, n_dipolar; n_pre = 1; n_non_bonded = (n_particle_types*(n_particle_types+1))/2; n_coulomb = 0; n_dipolar = 0; #ifdef ELECTROSTATICS switch (coulomb.method) { case COULOMB_NONE: n_coulomb = 0; break; case COULOMB_P3M: n_coulomb = 2; break; default: n_coulomb = 1; } #endif #ifdef DIPOLES switch (coulomb.Dmethod) { case DIPOLAR_NONE: n_dipolar = 0; break; case DIPOLAR_ALL_WITH_ALL_AND_NO_REPLICA: n_dipolar = 0; break; case DIPOLAR_DS: n_dipolar = 0; break; case DIPOLAR_P3M: n_dipolar = 2; break; } #endif obsstat_realloc_and_clear(stat, n_pre, n_bonded_ia, n_non_bonded, n_coulomb, n_dipolar, 9); stat->init_status = 0; }
void init_energies(Observable_stat *stat) { int n_pre, n_non_bonded, n_coulomb, n_dipolar; n_pre = 1; n_non_bonded = (n_particle_types*(n_particle_types+1))/2; n_coulomb = 0; #ifdef ELECTROSTATICS switch (coulomb.method) { case COULOMB_NONE: n_coulomb = 0; break; #ifdef P3M case COULOMB_ELC_P3M: n_coulomb = 3; break; case COULOMB_P3M_GPU: case COULOMB_P3M: n_coulomb = 2; break; #endif #ifdef SCAFACOS case COULOMB_SCAFACOS: n_coulomb =2; break; #endif default: n_coulomb = 1; } #endif n_dipolar = 0; #ifdef DIPOLES switch (coulomb.Dmethod) { case DIPOLAR_NONE: n_dipolar = 1; break; #ifdef DP3M case DIPOLAR_MDLC_P3M: n_dipolar=3; break; case DIPOLAR_P3M: n_dipolar = 2; break; #endif case DIPOLAR_ALL_WITH_ALL_AND_NO_REPLICA: n_dipolar = 2; break; case DIPOLAR_MDLC_DS: n_dipolar=3; break; case DIPOLAR_DS: n_dipolar = 2; break; case DIPOLAR_DS_GPU: n_dipolar = 2; break; #ifdef SCAFACOS_DIPOLES case DIPOLAR_SCAFACOS: n_dipolar = 2; break; #endif } #endif obsstat_realloc_and_clear(stat, n_pre, n_bonded_ia, n_non_bonded, n_coulomb, n_dipolar, 0, 1); stat->init_status = 0; external_potential_init_energies(); }
void init_virials(Observable_stat *stat) { // Determine number of contribution for different interaction types // bonded, nonbonded, coulomb, dipolar, rigid bodies int n_pre, n_non_bonded, n_coulomb, n_dipolar,n_vsr; n_pre = 1; n_non_bonded = (n_particle_types*(n_particle_types+1))/2; n_coulomb = 0; n_dipolar = 0; n_vsr=0; #ifdef ELECTROSTATICS switch (coulomb.method) { case COULOMB_NONE: n_coulomb = 0; break; case COULOMB_P3M_GPU: case COULOMB_P3M: n_coulomb = 2; break; default: n_coulomb = 1; } #endif #ifdef DIPOLES switch (coulomb.Dmethod) { case DIPOLAR_NONE: n_dipolar = 0; break; case DIPOLAR_ALL_WITH_ALL_AND_NO_REPLICA: n_dipolar = 0; break; case DIPOLAR_DS: n_dipolar = 0; break; case DIPOLAR_P3M: n_dipolar = 2; break; default: n_dipolar = 0; break; } #endif #ifdef VIRTUAL_SITES_RELATIVE // rigid bodies n_vsr=1; #endif // Allocate memory for the data obsstat_realloc_and_clear(stat, n_pre, n_bonded_ia, n_non_bonded, n_coulomb, n_dipolar, n_vsr, 1); stat->init_status = 0; }