/** applet No. 1138 * * NaCl in Ar - molecular dynamics 3D * - Ionic potential(SX1S) + rare gas atom potential * - multi thread IonMD3D :: display - asynchronous * * Created by Ikeuchi Mitsuru on March 17 2007. * Copyright (c) 2007 Ikeuchi Mitsuru. All rights reserved. * * ver 0.0.1 2007.03.17 created * ver 0.0.2 2007.06.17 improved code * ver 0.0.3 2007.07.08 change Particles class * */ import java.awt.*; import java.awt.event.*; import java.applet.*; public class NaClinArSXRGMtMD3D extends Applet implements MouseListener, MouseMotionListener, ItemListener, ActionListener, AdjustmentListener, Runnable { // ------------------------------------ preset field ----------- Thread th = null; // for run()-paint() thread Particles ma = new Particles(); MolecularDynamics3D md = null; DisplayMD3D dsp = new DisplayMD3D(); // for event Choice ch_initMode, ch_tempControl, ch_view; Button bt_reset, bt_startStop, bt_step; Scrollbar sc_temp, sc_scale; // for off-paint buffer Dimension dim; Image imgOff; Graphics gOff; int dgX,dgY, dgXb,dgYb; int sleepTime = 100; int dispMode = 2; int thCount = 0; // ------------------------------ applet main thread ----------- public void init() { resize(630,460); setBackground(Color.white); dim = getSize(); imgOff = createImage(dim.width,dim.height); gOff = imgOff.getGraphics(); ch_initMode = new Choice(); ch_initMode.add("melt"); ch_initMode.add("crystal"); ch_initMode.addItemListener(this); ch_initMode.select("crystal"); ch_tempControl = new Choice(); ch_tempControl.add("adiabatic"); ch_tempControl.add("t scaling"); ch_tempControl.add("wall cont."); ch_tempControl.addItemListener(this); ch_tempControl.select("wall cont."); ch_view = new Choice(); ch_view.add("ball"); ch_view.add("line"); ch_view.add("ball+line"); ch_view.add("real size"); ch_view.add("temperature"); ch_view.add("velocity"); ch_view.add("vSpace"); ch_view.add("line+rdf"); ch_view.add("v+vdf"); ch_view.addItemListener(this); ch_view.select("ball+line"); bt_reset = new Button("reset"); bt_reset.addActionListener(this); bt_startStop = new Button("start/stop"); bt_startStop.addActionListener(this); bt_step = new Button("step"); bt_step.addActionListener(this); sc_temp = new Scrollbar(Scrollbar.HORIZONTAL,30,10,1,210); sc_temp.addAdjustmentListener(this); sc_scale = new Scrollbar(Scrollbar.HORIZONTAL,100,10,50,210); sc_scale.addAdjustmentListener(this); addMouseListener(this); addMouseMotionListener(this); setLayout(new BorderLayout()); Panel pnl = new Panel(); pnl.setLayout(new GridLayout(2,6,5,0)); //pnl.add(new Label(" ")); pnl.add(bt_reset); pnl.add(bt_startStop); pnl.add(bt_step); pnl.add(ch_tempControl); pnl.add(new Label(" ")); pnl.add(new Label(" ")); pnl.add(ch_initMode); pnl.add(new Label(" ")); pnl.add(new Label(" ")); pnl.add(sc_temp); pnl.add(sc_scale); pnl.add(ch_view); add(pnl,"North"); } public void start() { if (md == null) { md = new MolecularDynamics3D(ma); md.start(); } if (th == null) { th = new Thread(this); th.start(); } } public void stop() { if (th != null) th = null; if (md != null) md = null; } // ---------------------------------- event listener ----------- public void itemStateChanged(ItemEvent ev){ if (ev.getSource() == ch_initMode){ md.setInitMode( ch_initMode.getSelectedIndex() ); thCount = 0; } else if (ev.getSource() == ch_tempControl) { md.setTempMode( ch_tempControl.getSelectedIndex() ); } else if (ev.getSource() == ch_view){ dispMode = ch_view.getSelectedIndex(); } } public void actionPerformed(ActionEvent ev){ if(ev.getSource() == bt_reset){ md.reset(); thCount = 0; } else if (ev.getSource() == bt_startStop){ if (md.getStartSW()==0) { md.setStartSW(1); } else { md.setStartSW(0); } } else if (ev.getSource() == bt_step){ if (md.getStartSW()==0) { md.setStepSW(); } } } public void adjustmentValueChanged(AdjustmentEvent ev){ if (ev.getSource() == sc_temp) { md.setContTemp( 10.0*(double)(sc_temp.getValue()) ); } else if(ev.getSource() == sc_scale) { dsp.setViewScale( 0.01*(double)(sc_scale.getValue()) ); } } public void mousePressed(MouseEvent ev){ } public void mouseReleased(MouseEvent ev){ dgXb = 0; dgYb = 0; dgX = 0; dgY = 0; } public void mouseClicked(MouseEvent ev){ } public void mouseEntered(MouseEvent ev){ } public void mouseExited (MouseEvent ev){ } public void mouseMoved (MouseEvent ev){ } public void mouseDragged(MouseEvent ev){ dgXb = dgX; dgYb = dgY; dgX=ev.getX(); dgY=ev.getY(); if (dgXb==0 && dgYb==0) { dgXb = dgX; dgYb = dgY; } dsp.setViewDelta((dgX-dgXb), (dgY-dgYb)); } // ========================= run() - paint() loop ============== public void run() { while (th != null) { try { Thread.sleep(sleepTime); } catch (InterruptedException e) { } thCount += 1; offPaint(); repaint(); } } public void update(Graphics g) { paint(g); } public void paint(Graphics g) { g.drawImage(imgOff,0,0,this); } private void offPaint() { if (md != null) { dsp.plotGraph(gOff, md, dispMode, thCount); } } } // ================================ display MD3D class =========== class DisplayMD3D { Graphics gOff; MolecularDynamics3D md; private int Nmt; private double dt = md.getdt(); private double xMax = md.getxMax(); private double yMax = md.getyMax(); private double zMax = md.getzMax(); private double zDepth = xMax; private double dispWidth = 250.0; private double dispScale = (dispWidth/xMax); private double viewScale = 1.0; private double cx = 0.5*xMax; private double cy = 0.5*yMax; private double cz = 0.5*zMax; private double theta = -20.0*3.14/180.0; private double fai = 10.0*3.14/180.0; private double cosTh = Math.cos(theta); private double sinTh = Math.sin(theta); private double cosFi = Math.cos(fai); private double sinFi = Math.sin(fai); private int NN = 10000; private int srtz[][] = new int[2][NN]; private double px[] = new double[NN]; private double py[] = new double[NN]; private double pz[] = new double[NN]; private double pxx[] = new double[NN]; private double pyy[] = new double[NN]; private double pzz[] = new double[NN]; private double wkx[] = new double[8]; private double wky[] = new double[8]; private double wkz[] = new double[8]; private double pwkx[] = new double[8]; private double pwky[] = new double[8]; private double pwkz[] = new double[8]; private int boxp[][] = { {0,1},{0,2},{0,4},{1,3},{1,5},{2,3},{2,6},{4,5},{4,6},{3,7},{5,7},{6,7} }; private int rdf[] = new int[120]; private int vdf[][] = new int[4][220]; private double meanvdf[][] = new double[4][220]; private double ffvMaxwell[] = new double[220]; private int drawnCount = 0; // ------------------------------- class constructor ----------- DisplayMD3D() { setWaku(); } // ----------------------------------- class methods ----------- public void plotGraph(Graphics gg, MolecularDynamics3D md3d, int dispMode, int thCount) { int mdCount, gbx, gby; double tmp; gOff = gg; md = md3d; if (md==null) return; mdCount = md.getCount(); if (mdCount==drawnCount) return; drawnCount = mdCount; Nmt = md.getNmt(); gOff.setColor(Color.white); gOff.fillRect(0,0,630,460); gbx = 70; gby = 130; if (dispMode==0) { // ball ballPlot(gbx,gby, 0.7, 0); } else if (dispMode==1) { // line ballPlot(gbx,gby, 0.5, 1); } else if (dispMode==2) { // ball + line ballPlot(gbx,gby, 0.5, 2); } else if (dispMode==3) { // real ballPlot(gbx,gby, 1.0, 0); } else if (dispMode==4) { // temperature ballPlot(gbx,gby, 0.7, 3); } else if (dispMode==5) { // velocity velocityPlot(gbx, gby, 10.0); } else if (dispMode==6) { // velocity vSpacePlot(gbx, gby, 500.0); } else if (dispMode==7) { ballPlot(gbx,gby, 0.5, 1); rdfPlot(400,180, 0.1); } else if (dispMode==8) { velocityPlot(gbx, gby, 10.0); vdfPlot(400,180, 1.0); } tmp = md.temperature(); gOff.setColor(Color.blue); gOff.drawString("t="+(int)(md.getTime()*1.0e14+0.5)/100.0+" ps",630/6*0+10,70); gOff.setColor(Color.getHSBColor((float)md.getColorOf(3),0.8f,0.8f)); gOff.drawString("Na+",630/6*1+10,70); gOff.setColor(Color.getHSBColor((float)md.getColorOf(7),0.8f,0.8f)); gOff.drawString("Cl-",630/6*1+50,70); gOff.setColor(Color.getHSBColor((float)md.getColorOf(15),0.8f,0.8f)); gOff.drawString("Ar",630/6*1+90,70); gOff.setColor(Color.black); gOff.drawString("Tc="+md.getContTemp()+"K",630/6*3+10,70); gOff.drawString("scale="+(int)(viewScale*100.0+0.499)+"%",630/6*4+10,70); gOff.drawString("view",630/6*5+10,70); gOff.setColor(Color.blue); gOff.drawString("T="+(int)(tmp*10+0.5)/10.0+" K",630/6*3+10,90); gOff.drawString("L="+(int)(xMax*1.0e10+0.5)/10.0+" nm",630/6*4+10,90); //gOff.drawString("P="+(int)(md.pressure()/1.0e4+0.5)/100.0+"MPa",630/6*5+0,90); //gOff.drawString("

="+(int)(md.meanPressure()/1.0e4+0.5)/100.0+"MPa",630/6*5+0,110); //gOff.drawString("nkT="+(int)((Nmt/(xMax*yMax*zMax)*1.38e-23*tmp)/1.0e4+0.5)/100.0+"MPa",630/6*4+0,110); gOff.setColor(Color.black); gOff.drawString("regMax="+md.regMax()+"",630/6*5+10,130); gOff.drawString("secMax="+md.secMax()+"",630/6*5+10,150); gOff.setColor(Color.black); gOff.drawString("thread MD = "+md.getCount()+" ",20,440); gOff.drawString("thread disp = "+thCount+" ",220,440); } // ------------------------------------ plot methods ----------- private void ballPlot(int gbx, int gby, double size, int imode) { int i,j,k,jj,gx,gy,g2x,g2y,gr; double sz,sc,tm; setPos(); rotate(); zSort(); drawWaku(gbx,gby,0); sc = dispScale*viewScale; sz = size*sc; for (i=0; i0.99) tm = 0.99; gOff.setColor(Color.getHSBColor( (float)md.getColor(j),0.8f,(float)(0.8*tm+0.2))); gOff.fillOval(gx-gr/2,gy-gr/2, gr, gr); } } drawWaku(gbx,gby,1); } private double distance(int i,int j) { double x,y,z; x = px[i]-px[j]; y = py[i]-py[j]; z = pz[i]-pz[j]; return Math.sqrt(x*x+y*y+z*z); } private void velocityPlot(int gbx, int gby, double mag) { int i,j,gx,gy,g2x,g2y; double sc,m, p2x,p2y,p2z,rotp2x,rotp2y,rotp2z; setPos(); rotate(); zSort(); drawWaku(gbx,gby,0); sc = dispScale*viewScale; for (i=0; i=xMax/2.0) { gOff.setColor(Color.getHSBColor((float)md.getColor(j),0.8f,(float)(0.2*pz[j]/zDepth+0.5))); } else { gOff.setColor(Color.getHSBColor((float)md.getColor(j),0.4f,(float)(0.2*pz[j]/zDepth+0.5))); } gOff.drawOval(gx-gr/2,gy-gr/2, gr, gr); } drawWaku(gbx,gby,1); } // plot utility private void drawWaku(int gbx, int gby, int imode) { int i,gx,gy,g2x,g2y,farPoint; double sc,tmp; sc = dispScale*viewScale; farPoint = findMin(); for (i=0; i<12; i++) { gx = (int)(sc*pwkx[boxp[i][0]])+gbx; gy = (int)(sc*pwky[boxp[i][0]])+gby; g2x = (int)(sc*pwkx[boxp[i][1]])+gbx; g2y = (int)(sc*pwky[boxp[i][1]])+gby; if (imode==0) { if (boxp[i][0]==farPoint || boxp[i][1]==farPoint) { gOff.setColor(Color.lightGray); gOff.drawLine(gx,gy, g2x, g2y); } } else if (imode==1) { if (boxp[i][0]!=farPoint && boxp[i][1]!=farPoint) { gOff.setColor(Color.gray); if (md.getTempMode()==2) { tmp = md.temperature(); if (tmp>md.getContTemp()) { gOff.setColor(Color.black); } else { gOff.setColor(Color.red); } } gOff.drawLine(gx,gy, g2x, g2y); } } } } private int findMin() { int i,im; double m; im = 0; m = pwkz[im]; for (i=0; i<8; i++) { if (pwkz[i]=srtz[1][p]) p = i; k = qSortPartition(i,j,srtz[1][p]); qSort(i,k-1); qSort(k,j); } } private int qSortPartition(int i,int j, int x) { int l,r,w; l = i; r = j; while (l<=r) { while (l<=j && srtz[1][l]=i && srtz[1][r]>=x) r--; if (l>r) break; w = srtz[0][l]; srtz[0][l] = srtz[0][r]; srtz[0][r] = w; w = srtz[1][l]; srtz[1][l] = srtz[1][r]; srtz[1][r] = w; l++; r--; } return ( l ); } // rotate private void rotate() { int i; for (i=0; i0) { gOff.fillRect(gx+i*2,gy+hoganHight-iy,2,iy); } } drawHogan(gx, gy, hoganWidth, hoganHight, xDiv, yDiv); gOff.setColor(Color.black); gOff.drawString("0",gx-5,gy+hoganHight+20); gOff.drawString("1 (nm)",gx+hoganWidth-20,gy+hoganHight+20); gOff.drawString("radial distribution",gx+40,gy+hoganHight+40); } private void drawHogan(int gx, int gy, int hoganWidth, int hoganHight, int xDiv, int yDiv) { int i; gOff.setColor(Color.gray); for (i=0; i0) { gOff.drawLine(gx+i,gy+200-iy,gx+i,gy+200); } } /* // Maxwell setMaxwell( md.getContTemp(), mat ); gOff.setColor(Color.getHSBColor(0.01f,0.8f,0.6f)); for (i=0; i<200-1; i++) { iy = (int)(ascale*ffvMaxwell[i]); iy2 = (int)(ascale*ffvMaxwell[i+1]); if (iy>0) { gOff.drawLine(gx+i,gy+200-iy,gx+i,gy+200-iy2); } } */ // MAT1 gOff.setColor(Color.getHSBColor(md.getColorOf(mat),0.8f,0.6f)); for (i=0; i<200-1; i++) { iy = (int)(ascale*meanvdf[1][i]); iy2 = (int)(ascale*meanvdf[1][i+1]); if (iy>0) { gOff.drawLine(gx+i,gy+200-iy,gx+i,gy+200-iy2); } } // MAT2 gOff.setColor(Color.getHSBColor(md.getColorOf(mat2),0.8f,0.6f)); for (i=0; i<200-1; i++) { iy = (int)(ascale*meanvdf[2][i]); iy2 = (int)(ascale*meanvdf[2][i+1]); if (iy>0) { gOff.drawLine(gx+i,gy+200-iy,gx+i,gy+200-iy2); } } // grid gOff.setColor(Color.gray); for (i=0; i<200; i+=50) { gOff.drawLine(gx+i,gy, gx+i, gy+200); } for (i=0; i<200; i+=100) { gOff.drawLine(gx,gy+200-i, gx+200, gy+200-i); } gOff.setColor(Color.black); gOff.drawRect(gx,gy,200,200); gOff.setColor(Color.black); gOff.drawString("0",gx-5,gy+hoganHight+20); gOff.drawString("2000 m/s",gx+hoganWidth-30,gy+hoganHight+20); gOff.drawString("velocity distribution",gx+30,gy+hoganHight+40); gOff.setColor(Color.lightGray); gOff.drawString("count",gx+120,gy+20); if (mat<21) { gOff.setColor(Color.getHSBColor(md.getColorOf(mat),0.8f,0.6f)); gOff.drawString("mean distr.",gx+120,gy+40); gOff.setColor(Color.getHSBColor(md.getColorOf(mat2),0.8f,0.6f)); gOff.drawString("mean distr.",gx+120,gy+60); //gOff.setColor(Color.getHSBColor(0.01f,0.8f,0.6f)); //gOff.drawString("Maxwell(Tc)",gx+120,gy+80); } } private void setVelocityDistribution(int MAT1,int MAT2) { int i,iv,knd; double vv; for (i=0; i<220; i++) { vdf[0][i]=0; vdf[1][i]=0; vdf[2][i]=0; } for (i=0; i=0.8*rCutoff && r=0.8*rCutoff && r=600 && ir<1000) { rt = 0.5+0.5*Math.cos(3.1415926536*(((double)ir)/1000.0-0.6)/0.4); } else { rt = 0.0; } return( rt ); } // ----------------------------------- class methods ----------- public double force(double r, int ki, int kj) { int i; double a; i = (int)(r/hh); a = r - i*hh; return ( ((hh-a)*forceTable[ki][kj][i] + a*forceTable[ki][kj][i+1])/hh ); } // ------------------------------------- I/O methods ----------- public static int getKindMax() { return kindMax; } public static String getMatStr(int knd) { return matStr[knd]; } public static double getMassOf(int knd) { return ion[knd][0]; } public static double getDiaOf(int knd) { return 2.0*ion[knd][5]; } public static float getColorOf(int knd) { return (float)ion[knd][6]; } public static double getrCutoff() { return rCutoff; } public static double getdt() { return dt; } } // ============================= molecular dynamics 3D =========== class MolecularDynamics3D extends Thread { private Particles ma; private double t = 0.0; private static double dt = 1.0*1.0e-15; private static double xMax = 2.7*1.0e-9; private static double yMax = 2.7*1.0e-9; private static double zMax = 2.7*1.0e-9; private static int Nmt = 6*7*6; private int Nsx = 20; private int Nsy = 20; private int Nsz = 20; private int MAT1 = 3; // Na+ private int MAT2 = 7; // Cl- private int mat2content = 50; // 0-100 private double rc = ma.getrCutoff(); private double rc2 = rc*rc; private int tempMode = 2; private double contTemp = 300.0; private int initMode = 1; private int NN = 10000; private int kind[] = new int[NN]; private double xx[] = new double[NN]; private double yy[] = new double[NN]; private double zz[] = new double[NN]; private double vx[] = new double[NN]; private double vy[] = new double[NN]; private double vz[] = new double[NN]; private double ffx[] = new double[NN]; private double ffy[] = new double[NN]; private double ffz[] = new double[NN]; private int reg[][] = new int[NN][500]; private int section[][][][] = new int[Nsx][Nsy][Nsz][100]; private double virial[][] = new double[3][256]; private double memTemp[] = new double[256]; private int virialp = 0; private int resetSW = 0; private int startSW = 1; private int stepSW = 0; private int sleepTime = 1; private int stopSleepTime = 100; private int count = 0; // ------------------------------- class constructor ----------- MolecularDynamics3D(Particles ma2d) { ma = ma2d; setInitialCondition(); } // -------------------------------------- thread run ----------- public void run() { while (true) { count += 1; timeEvolution(); if (sleepTime>0) { try { Thread.sleep(sleepTime); } catch (InterruptedException e) { } } } } // --------------------------- set initial condition ----------- private void setInitialCondition() { int ip,ix,iy,iz; double a,d,mr; count = 0; t = 0.0; a = xMax/7.0; d = 0.5*a; if (initMode==1) { a = 2.82e-10; d = (xMax-5*a)/2.0; } ip = 0; for (ix=0; ix<6; ix++) { for (iy=0; iy<6; iy++) { for (iz=0; iz<6; iz++) { kind[ip] = 3; // Na+ if ((ix+iy+iz)%2==1 ) { kind[ip] = 7; // Cl- } xx[ip] = a*(double)ix+d; yy[ip] = a*(double)iy+d; zz[ip] = a*(double)iz+d; mr = Math.sqrt(ma.getMassOf(kind[0])/ma.getMassOf(kind[ip])); vx[ip] = 800.0*mr*(Math.random()-0.5); vy[ip] = 800.0*mr*(Math.random()-0.5); vz[ip] = 800.0*mr*(Math.random()-0.5); ffx[ip] = 0.0; ffy[ip] = 0.0; ffz[ip] = 0.0; ip += 1; } } } for (ix=0; ix<6; ix++) { for (iy=6; iy<7; iy++) { for (iz=0; iz<6; iz++) { kind[ip] = 15; // Ar xx[ip] = a*(double)ix+d; yy[ip] = a*(double)iy+d + 0.2*a; zz[ip] = a*(double)iz+d; mr = Math.sqrt(ma.getMassOf(kind[0])/ma.getMassOf(kind[ip])); vx[ip] = 800.0*mr*(Math.random()-0.5); vy[ip] = 800.0*mr*(Math.random()-0.5); vz[ip] = 800.0*mr*(Math.random()-0.5); ffx[ip] = 0.0; ffy[ip] = 0.0; ffz[ip] = 0.0; ip += 1; } } } vAjustment(); initVirial(); } // ---------------------------------- time evolution ----------- private void timeEvolution(){ if (resetSW==1) { setInitialCondition(); resetSW = 0; } if (startSW==1) { timeStep(); } else { if (stepSW==1) { timeStep(); stepSW = 0; } try { Thread.sleep(stopSleepTime); } catch (InterruptedException e) { } } } private void timeStep() { int i; if (tempMode==1) { vAjustment(); } registration(); for (i=0; i<20; i++) { time1Step(); } setVirial(); } private void time1Step() { int i; double dtv2, a2; dtv2 = dt/2.0; t = t + dt; for (i=0; i1.2){ rr=1.2; }; } for (i=0; i xMax) { xx[i] = xMax; vx[i] = -rr*vx[i]; vy[i] = rr*vy[i]; vz[i] = rr*vz[i]; } if (yy[i] < 0.0) { yy[i] = 0.0; vx[i] = rr*vx[i]; vy[i] = -rr*vy[i]; vz[i] = rr*vz[i]; } if (yy[i] > yMax) { yy[i] = yMax; vx[i] = rr*vx[i]; vy[i] = -rr*vy[i]; vz[i] = rr*vz[i]; } if (zz[i] < 0.0) { zz[i] = 0.0; vx[i] = rr*vx[i]; vy[i] = rr*vy[i]; vz[i] = -rr*vz[i]; } if (zz[i] > zMax) { zz[i] = zMax; vx[i] = rr*vx[i]; vy[i] = rr*vy[i]; vz[i] = -rr*vz[i]; } } } //registration private void registration() { int i,j,k,ip,jp,kp,i0,i1,j0,j1,k0,k1,iq; double r2,rreg,rreg2; double x,y,z; preRegistration(); rreg = rc + 3000.0*20*dt; rreg2 = rreg*rreg; for(ip=0;ip=Nsx) i1 = Nsx-1; j0 = (int)(Nsy*(yy[ip]-rreg)/yMax); if (j0<0) j0 = 0; j1 = (int)(Nsy*(yy[ip]+rreg)/yMax); if (j1>=Nsy) j1 = Nsy-1; k0 = (int)(Nsz*(zz[ip]-rreg)/zMax); if (k0<0) k0 = 0; k1 = (int)(Nsz*(zz[ip]+rreg)/zMax); if (k1>=Nsz) k1 = Nsz-1; for(i=i0;i<=i1;i++) { for(j=j0;j<=j1;j++) { for(k=k0;k<=k1;k++) { for(iq=1;iq<=section[i][j][k][0];iq++) { jp = section[i][j][k][iq]; if (jp>ip) { r2=(xx[ip]-xx[jp])*(xx[ip]-xx[jp])+(yy[ip]-yy[jp])*(yy[ip]-yy[jp])+(zz[ip]-zz[jp])*(zz[ip]-zz[jp]); if (r2=Nsx) i = Nsx-1; j = (int)(Nsy*yy[ip]/yMax); if (j>=Nsy) j = Nsy-1; k = (int)(Nsz*zz[ip]/zMax); if (k>=Nsz) k = Nsz-1; iq = section[i][j][k][0]+1; section[i][j][k][0] = iq; section[i][j][k][iq] = ip; } } // ----------------------------------------- utility ----------- private void vAjustment() { int i; double tmp, r; tmp = temperature(); r = Math.sqrt(contTemp/tmp); for (i=0; im) { m = reg[i][0]; } } return(m); } public int secMax() { int i,j,k,m; m = 0; for(i=0;im) { m = section[i][j][k][0]; } } } } return(m); } // pressure private void initVirial() { int i; for (i=0; i<256; i++) { virial[0][i] = 0.0; virial[1][i] = 0.0; virial[2][i] = 0.0; memTemp[i] = 0.0; } virialp = 0; } private void setVirial() { int i; double xVir,yVir,zVir; xVir = 0.0; yVir = 0.0; zVir = 0.0; for (i=0; i