root/trunk/matml/src/sphlow/DiamCalculator.java

Revision 148, 2.0 kB (checked in by powell, 7 years ago)

New Sphlow Java applet.

  • Property svn:keywords set to Author Date Id Revision
Line 
1// The class which does the computations for the Sphlow applet
2
3import java.lang.Math;
4
5public class DiamCalculator {
6  double mu_fluid, rho_fluid, g, res[], ffs[];
7
8public DiamCalculator(double init_mu, double init_rho, double gee) {
9  this.mu_fluid=init_mu; this.rho_fluid=init_rho; g=gee;
10  res=new double[18]; ffs=new double[18];           // Construct f vs. Re table
11  res[0]=.2; ffs[0]=120; res[6]=20;   ffs[6]=2.5; res[12]=2000;  ffs[12]=.42;
12  res[1]=.5; ffs[1]=50;  res[7]=50;   ffs[7]=1.5; res[13]=5000;  ffs[13]=.4;
13  res[2]=1;  ffs[2]=26;  res[8]=100;  ffs[8]=1.05;res[14]=10000; ffs[14]=.42;
14  res[3]=2;  ffs[3]=14;  res[9]=200;  ffs[9]=.8;  res[15]=20000; ffs[15]=.46;
15  res[4]=5;  ffs[4]=7.1; res[10]=500; ffs[10]=.56;res[16]=50000; ffs[16]=.49;
16  res[5]=10; ffs[5]=4.3; res[11]=1000;ffs[11]=.45;res[17]=100000;ffs[17]=.5; }
17
18public void newfluid(double new_mu, double new_rho, double new_g) {
19  this.mu_fluid=new_mu; this.rho_fluid=new_rho; g=new_g; }
20
21public double f(double Re) {
22  int i=0; if(Re<res[0]) return 24/Re;                  // Stokes flow: f=24/Re
23  while(i<18&&Re>res[i]) i++;                                // Which interval?
24  if(i==18) return(-1);                                          // Re too high
25  return Math.exp(Math.log(ffs[i])+(Math.log(ffs[i])-Math.log(ffs[i-1]))/             // The answer
26  (Math.log(res[i])-Math.log(res[i-1]))*(Math.log(Re)-Math.log(res[i]))); }
27
28public double rerat(double f_Re) {
29  int i=0;
30  if(f_Re>ffs[0]/res[0]) return(Math.sqrt(24./f_Re));   // Stokes flow: f=24/Re
31  while(i<18&&f_Re<ffs[i]/res[i]) i++;                       // Which interval?
32  if(i==18) return 0;                                             //Re too high
33  double m=(Math.log(res[i])-Math.log(res[i-1]))/(Math.log(ffs[i])-Math.log(ffs[i-1])); // Slope^-1
34  return Math.exp((Math.log(res[i])+m*(Math.log(f_Re)-Math.log(ffs[i])))/(1-m)); }   // The answer
35
36public double free(double rho_p, double u) {
37  return 4/3*Math.abs(rho_p-rho_fluid)*mu_fluid*g/(rho_fluid*rho_fluid*u*u*u); }}
Note: See TracBrowser for help on using the browser.