void init_state(t_state *state,int natoms,int ngtc) { int i; state->natoms = natoms; state->nrng = 0; state->flags = 0; state->lambda = 0; clear_mat(state->box); clear_mat(state->box_rel); clear_mat(state->boxv); clear_mat(state->pres_prev); init_gtc_state(state,ngtc); state->nalloc = state->natoms; if (state->nalloc > 0) { snew(state->x,state->nalloc); snew(state->v,state->nalloc); } else { state->x = NULL; state->v = NULL; } state->sd_X = NULL; state->cg_p = NULL; init_ekinstate(&state->ekinstate); init_energyhistory(&state->enerhist); state->ddp_count = 0; state->ddp_count_cg_gl = 0; state->cg_gl = NULL; state->cg_gl_nalloc = 0; }
void init_state(t_state *state, int natoms, int ngtc, int nnhpres, int nhchainlength, int dfhistNumLambda) { int i; state->natoms = natoms; state->flags = 0; state->fep_state = 0; state->lambda = 0; snew(state->lambda, efptNR); for (i = 0; i < efptNR; i++) { state->lambda[i] = 0; } state->veta = 0; clear_mat(state->box); clear_mat(state->box_rel); clear_mat(state->boxv); clear_mat(state->pres_prev); clear_mat(state->svir_prev); clear_mat(state->fvir_prev); init_gtc_state(state, ngtc, nnhpres, nhchainlength); state->nalloc = state->natoms; if (state->nalloc > 0) { /* We need to allocate one element extra, since we might use * (unaligned) 4-wide SIMD loads to access rvec entries. */ snew(state->x, state->nalloc + 1); snew(state->v, state->nalloc + 1); } else { state->x = NULL; state->v = NULL; } state->cg_p = NULL; zero_history(&state->hist); zero_ekinstate(&state->ekinstate); snew(state->enerhist, 1); init_energyhistory(state->enerhist); if (dfhistNumLambda > 0) { snew(state->dfhist, 1); init_df_history(state->dfhist, dfhistNumLambda); } else { state->dfhist = NULL; } state->swapstate = NULL; state->edsamstate = NULL; state->ddp_count = 0; state->ddp_count_cg_gl = 0; state->cg_gl = NULL; state->cg_gl_nalloc = 0; }
void init_state(t_state *state, int natoms, int ngtc, int nnhpres, int nhchainlength, int nlambda) { int i; state->natoms = natoms; state->flags = 0; state->fep_state = 0; state->lambda = 0; snew(state->lambda, efptNR); for (i = 0; i < efptNR; i++) { state->lambda[i] = 0; } state->veta = 0; clear_mat(state->box); clear_mat(state->box_rel); clear_mat(state->boxv); clear_mat(state->pres_prev); clear_mat(state->svir_prev); clear_mat(state->fvir_prev); init_gtc_state(state, ngtc, nnhpres, nhchainlength); state->nalloc = state->natoms; if (state->nalloc > 0) { snew(state->x, state->nalloc); snew(state->v, state->nalloc); } else { state->x = NULL; state->v = NULL; } state->sd_X = NULL; state->cg_p = NULL; zero_history(&state->hist); zero_ekinstate(&state->ekinstate); snew(state->enerhist, 1); init_energyhistory(state->enerhist); init_df_history(&state->dfhist, nlambda); init_swapstate(&state->swapstate); state->ddp_count = 0; state->ddp_count_cg_gl = 0; state->cg_gl = NULL; state->cg_gl_nalloc = 0; }
void set_state_entries(t_state *state, const t_inputrec *ir) { /* The entries in the state in the tpx file might not correspond * with what is needed, so we correct this here. */ state->flags = 0; if (ir->efep != efepNO || ir->bExpanded) { state->flags |= (1<<estLAMBDA); state->flags |= (1<<estFEPSTATE); } state->flags |= (1<<estX); if (state->lambda == NULL) { snew(state->lambda, efptNR); } if (state->x == NULL) { snew(state->x, state->nalloc); } if (EI_DYNAMICS(ir->eI)) { state->flags |= (1<<estV); if (state->v == NULL) { snew(state->v, state->nalloc); } } if (ir->eI == eiSD2) { state->flags |= (1<<estSDX); if (state->sd_X == NULL) { /* sd_X is not stored in the tpx file, so we need to allocate it */ snew(state->sd_X, state->nalloc); } } if (ir->eI == eiCG) { state->flags |= (1<<estCGP); if (state->cg_p == NULL) { /* cg_p is not stored in the tpx file, so we need to allocate it */ snew(state->cg_p, state->nalloc); } } state->nnhpres = 0; if (ir->ePBC != epbcNONE) { state->flags |= (1<<estBOX); if (PRESERVE_SHAPE(*ir)) { state->flags |= (1<<estBOX_REL); } if ((ir->epc == epcPARRINELLORAHMAN) || (ir->epc == epcMTTK)) { state->flags |= (1<<estBOXV); } if (ir->epc != epcNO) { if (IR_NPT_TROTTER(ir) || (IR_NPH_TROTTER(ir))) { state->nnhpres = 1; state->flags |= (1<<estNHPRES_XI); state->flags |= (1<<estNHPRES_VXI); state->flags |= (1<<estSVIR_PREV); state->flags |= (1<<estFVIR_PREV); state->flags |= (1<<estVETA); state->flags |= (1<<estVOL0); } else { state->flags |= (1<<estPRES_PREV); } } } if (ir->etc == etcNOSEHOOVER) { state->flags |= (1<<estNH_XI); state->flags |= (1<<estNH_VXI); } if (ir->etc == etcVRESCALE) { state->flags |= (1<<estTC_INT); } init_gtc_state(state, state->ngtc, state->nnhpres, ir->opts.nhchainlength); /* allocate the space for nose-hoover chains */ init_ekinstate(&state->ekinstate, ir); init_energyhistory(&state->enerhist); init_df_history(&state->dfhist, ir->fepvals->n_lambda); state->swapstate.eSwapCoords = ir->eSwapCoords; }
static void set_state_entries(t_state *state,t_inputrec *ir,int nnodes) { /* The entries in the state in the tpx file might not correspond * with what is needed, so we correct this here. */ state->flags = 0; if (ir->efep != efepNO) state->flags |= (1<<estLAMBDA); state->flags |= (1<<estX); if (state->x == NULL) snew(state->x,state->nalloc); if (EI_DYNAMICS(ir->eI)) { state->flags |= (1<<estV); if (state->v == NULL) snew(state->v,state->nalloc); } if (ir->eI == eiSD2) { state->flags |= (1<<estSDX); if (state->sd_X == NULL) { /* sd_X is not stored in the tpx file, so we need to allocate it */ snew(state->sd_X,state->nalloc); } } if (ir->eI == eiCG) { state->flags |= (1<<estCGP); } if (EI_SD(ir->eI) || ir->eI == eiBD || ir->etc == etcVRESCALE) { state->nrng = gmx_rng_n(); state->nrngi = 1; if (EI_SD(ir->eI) || ir->eI == eiBD) { /* This will be correct later with DD */ state->nrng *= nnodes; state->nrngi *= nnodes; } state->flags |= ((1<<estLD_RNG) | (1<<estLD_RNGI)); snew(state->ld_rng, state->nrng); snew(state->ld_rngi,state->nrngi); } else { state->nrng = 0; } if (ir->ePBC != epbcNONE) { state->flags |= (1<<estBOX); if (PRESERVE_SHAPE(*ir)) { state->flags |= (1<<estBOX_REL); } if (ir->epc == epcPARRINELLORAHMAN) { state->flags |= (1<<estBOXV); } if (ir->epc != epcNO) { state->flags |= (1<<estPRES_PREV); } if (ir->etc == etcNOSEHOOVER) { state->flags |= (1<<estNH_XI); } } if (ir->etc == etcNOSEHOOVER || ir->etc == etcVRESCALE) { state->flags |= (1<<estTC_INT); } init_ekinstate(&state->ekinstate,ir); init_energyhistory(&state->enerhist); }
void set_state_entries(t_state *state, const t_inputrec *ir) { /* The entries in the state in the tpx file might not correspond * with what is needed, so we correct this here. */ state->flags = 0; if (ir->efep != efepNO || ir->bExpanded) { state->flags |= (1<<estLAMBDA); state->flags |= (1<<estFEPSTATE); } state->flags |= (1<<estX); if (state->lambda == NULL) { snew(state->lambda, efptNR); } if (state->x == NULL) { /* We need to allocate one element extra, since we might use * (unaligned) 4-wide SIMD loads to access rvec entries. */ snew(state->x, state->nalloc + 1); } if (EI_DYNAMICS(ir->eI)) { state->flags |= (1<<estV); if (state->v == NULL) { snew(state->v, state->nalloc + 1); } } if (ir->eI == eiCG) { state->flags |= (1<<estCGP); if (state->cg_p == NULL) { /* cg_p is not stored in the tpx file, so we need to allocate it */ snew(state->cg_p, state->nalloc + 1); } } state->nnhpres = 0; if (ir->ePBC != epbcNONE) { state->flags |= (1<<estBOX); if (inputrecPreserveShape(ir)) { state->flags |= (1<<estBOX_REL); } if ((ir->epc == epcPARRINELLORAHMAN) || (ir->epc == epcMTTK)) { state->flags |= (1<<estBOXV); } if (ir->epc != epcNO) { if (inputrecNptTrotter(ir) || (inputrecNphTrotter(ir))) { state->nnhpres = 1; state->flags |= (1<<estNHPRES_XI); state->flags |= (1<<estNHPRES_VXI); state->flags |= (1<<estSVIR_PREV); state->flags |= (1<<estFVIR_PREV); state->flags |= (1<<estVETA); state->flags |= (1<<estVOL0); } else { state->flags |= (1<<estPRES_PREV); } } } if (ir->etc == etcNOSEHOOVER) { state->flags |= (1<<estNH_XI); state->flags |= (1<<estNH_VXI); } if (ir->etc == etcVRESCALE) { state->flags |= (1<<estTC_INT); } init_gtc_state(state, state->ngtc, state->nnhpres, ir->opts.nhchainlength); /* allocate the space for nose-hoover chains */ init_ekinstate(&state->ekinstate, ir); snew(state->enerhist, 1); init_energyhistory(state->enerhist); init_df_history(&state->dfhist, ir->fepvals->n_lambda); state->swapstate.eSwapCoords = ir->eSwapCoords; }