+ }
+
+ return 0;
+}
+
+int scale_volume(t_moldyn *moldyn) {
+
+ t_atom *atom;
+ t_3dvec *dim,*vdim;
+ double virial,scale;
+ t_linkcell *lc;
+ int i;
+
+ atom=moldyn->atom;
+ dim=&(moldyn->dim);
+ vdim=&(moldyn->vis.dim);
+ lc=&(moldyn->lc);
+
+ for(i=0;i<moldyn->count;i++)
+ virial+=v3_norm(&(atom[i].virial));
+
+printf("%f\n",virial);
+ /* get pressure from virial */
+ moldyn->p=moldyn->count*K_BOLTZMANN*moldyn->t-ONE_THIRD*virial;
+ moldyn->p/=moldyn->volume;
+printf("%f\n",moldyn->p/(ATM));
+
+ /* scale factor */
+ if(moldyn->pt_scale&P_SCALE_BERENDSEN)
+ scale=3*sqrt(1-(moldyn->p_ref-moldyn->p)/moldyn->p_tc);
+ else
+ /* should actually never be used */
+ scale=pow(moldyn->p/moldyn->p_ref,1.0/3.0);
+
+printf("scale = %f\n",scale);
+ /* actual scaling */
+ dim->x*=scale;
+ dim->y*=scale;
+ dim->z*=scale;
+ if(vdim->x) vdim->x=dim->x;
+ if(vdim->y) vdim->y=dim->y;
+ if(vdim->z) vdim->z=dim->z;
+ moldyn->volume*=(scale*scale*scale);
+
+ /* check whether we need a new linkcell init */
+ if((dim->x/moldyn->cutoff!=lc->nx)||
+ (dim->y/moldyn->cutoff!=lc->ny)||
+ (dim->z/moldyn->cutoff!=lc->nx)) {
+ link_cell_shutdown(moldyn);
+ link_cell_init(moldyn);
+ }