/* tr2.f -- translated by f2c cc*/ /*fev 98 slop val*/ /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ /* Subroutine */ /* void tridiag3fr_ */ import java.util.*; import java.awt.*; import java.applet.Applet; import java.awt.event.*; import javax.swing.*; import java.io.*; class tridiago { static double diagi[]; static double diagp[]; static double diags[]; static double rhs[]; static double u[]; static double uo[]; static double a[]; static double b[]; static int n; static double dy; static double dt; static double u0; static double un; static double q; static double Bi; static boolean slope=false; static boolean mixte=false; static boolean val =false; static boolean sym =false; public static void prems() { System.out.println(" initialize tridiago "); diagi = new double[n+1]; diagp = new double[n+1]; diags = new double[n+1]; rhs = new double[n+1]; u = new double[n+1]; uo = new double[n+1]; a = new double[n+1]; b = new double[n+1]; } public static void inverse() { int j; double aa,bb,cc,dd; double qn=0; /* inversion de matrice tridiago */ /* ai ui-1 + bi ui +ci ui+1 = rhs i */ /* diagi[j] u[j-1] + diagp[j] u[j] + diags[j] u[j+1]= rhs[j]*/ /* u[j] = a[j] * u[j + 1] + b[j]; */ /* 14 nov 90 - 23 nov 92 - aout 95 - 8 mars 96 Aout 05 */ /* Peyret Taylor p 20 */ /* l indice varie de 0 a N */ for (j=0; j<=n;j++) { /* a u" + b u' + c u = d */ /********************************************************************/ aa = 1; bb = 0; cc = - (1./dt); dd = -(uo[j])/dt; diags[j] = 1.*aa + bb/2 * (dy); diagp[j] = -2.*aa + cc * (dy) * (dy); diagi[j] = 1.*aa - bb/2 * (dy); rhs[j] = dd * (dy) * (dy); } j = 0; /*a[0] = 0.f; b[0] = *u0; donne'e de u0*/ /*a[0] = 1.f; b[0] = 0; modif du/dy=0 en 0*/ /*a[0] = 1.f; b[0] = dy;du/dy=1 en 0*/ if(slope){ a[0] = 1.; b[0] = (q)*dy; } if(val){ a[0] = 0.; b[0] = u0; } if(mixte){ double Te=0; a[0]= (Bi/dy)/(1+Bi/dy); b[0] = Te/(1+Bi/dy);} for (j = 1; j < n; ++j) { dd = 1./(diagp[j] + diagi[j] * a[j - 1]); a[j] = -diags[j] * dd ; b[j] = (rhs[j] - diagi[j] * b[j - 1]) * dd ; } if(sym) { u[n-1] = (rhs[n-1]- b[n-2]*diagi[n-1] - diags[n-1]*qn*dy)/(diagp[n-1] + diagi[n-1] * a[n - 2] + diags[n-1]); u[n] = u[n-1] + qn*dy; for (j = n - 2; j >= 0; --j) { u[j] = a[j] * u[j + 1] + b[j]; } } else { u[n] = un; for (j = n - 1; j >= 0; --j) { u[j] = a[j] * u[j + 1] + b[j]; } } } /* tridiago2_ */ } //http://www.seismo.unr.edu/ftp/pub/louie/class/757/java/imhf.java