Adding support for remap v

This commit is contained in:
jtclemm
2023-10-19 11:57:07 -06:00
parent 63eed5e230
commit f28e46d40e
3 changed files with 26 additions and 6 deletions

View File

@ -111,6 +111,8 @@ void ComputeRHEOGrad::init()
compute_kernel = fix_rheo->compute_kernel;
compute_interface = fix_rheo->compute_interface;
remap_v_flag = domain->deform_vremap;
neighbor->add_request(this, NeighConst::REQ_DEFAULT);
}
@ -301,13 +303,23 @@ void ComputeRHEOGrad::forward_fields()
/* ---------------------------------------------------------------------- */
int ComputeRHEOGrad::pack_forward_comm(int n, int *list, double *buf,
int /*pbc_flag*/, int * /*pbc*/)
int pbc_flag, int *pbc)
{
int i,j,k,m;
int *mask = atom->mask;
double *rho = atom->rho;
double *temperature = atom->temperature;
double **v = atom->v;
int dim = domain->dimension;
double *h_rate = domain->h_rate;
int deform_groupbit = domain->deform_groupbit;
double dv[3];
if (remap_v_flag) {
dv[0] = pbc[0] * h_rate[0] + pbc[5] * h_rate[5] + pbc[4] * h_rate[4];
dv[1] = pbc[1] * h_rate[1] + pbc[3] * h_rate[3];
dv[2] = pbc[2] * h_rate[2];
}
m = 0;
@ -333,9 +345,17 @@ int ComputeRHEOGrad::pack_forward_comm(int n, int *list, double *buf,
} else if (comm_stage == COMMFIELD) {
if (velocity_flag)
if (velocity_flag) {
if (remap_v_flag & pbc_flag & (mask[j] & deform_groupbit)) {
for (k = 0; k < dim; k++)
buf[m++] = v[j][k] + dv[k];
} else {
for (k = 0; k < dim; k++)
buf[m++] = v[j][k];
}
}
if (rho_flag)
buf[m++] = rho[j];

View File

@ -49,7 +49,7 @@ class ComputeRHEOGrad : public Compute {
double cut, cutsq, rho0;
int velocity_flag, temperature_flag, rho_flag, eta_flag;
int interface_flag;
int interface_flag, remap_v_flag;
class ComputeRHEOKernel *compute_kernel;
class ComputeRHEOInterface *compute_interface;

View File

@ -381,13 +381,13 @@ void FixRHEO::pre_force(int /*vflag*/)
if (rhosum_flag)
compute_rhosum->compute_peratom();
compute_grad->forward_fields(); // also forwards v and rho for chi
compute_kernel->compute_peratom();
if (interface_flag) {
// Note on first setup, have no forces for pressure to reference
compute_interface->compute_peratom();
}
// No need to forward v, rho, or T for compute_grad since already done
compute_grad->compute_peratom();
compute_grad->forward_gradients();