hallo allerseits,
ich bin eine maschinenbaustudentin und müßte ein FDM-Code zu einem Diffusionsvorgang schreiben.
Hierzu habe ich erstmal einfachere java-programme geschrieben.
müßte aber das ganze ins fortran übersetzen, habe leider davon nicht so viel ahnung!
ich hoffe sehr, daß es jemand unter euch gibt, der mir helfen kann!!
mein java-programm, was ins fortran übersetzt werden müßte wäre:
import java.text.*;
class Diffusion //
{ public static void main( String args[ ] )
{double u[ ],uneu[ ]; // Werte der Funktion u(x,t) , hier nur x-Variable
int nx; // Anzahl Intervalle x-Achse
int nt; // Anzahl Teile t-Achse
double xanfang,xende; // Anfang und Ende des x-Bereiches
double tanfang,tende; // Anfang und Ende des t-Bereiches
double ua,ue; // Hier: Randwerte vorgeschrieben:am Anfang bzw. Ende
double faktor; // dudt = faktor d2udx2
double dx,dt,t;
// Hilfsvariablen
int i,j,k;
double hilf,x,y,dudt;
String sy;
NumberFormat def = NumberFormat.getInstance( );
def.setMaximumFractionDigits(3);
def.setMinimumFractionDigits(3);
// Werte belegen:
ua=0;
ue=1;
nx=20;
nt=10000;
xanfang=0.0;
xende=1.0;
tanfang=0;
tende=10;
faktor=1;
dx=(xende-xanfang)/nx;
dt=(tende-tanfang)/nt;
u=new double[nx+1];
uneu=new double[nx+1];
// Zu Randbedingungen kompatible Anfangsfunktion
for(i=0; i<=nx;i++)
{ x=xanfang+i*dx;
y=x*x*x;
u=y;
}
// 1. Testausdruck
for( k=0; k <=nx; k++ )
{ sy=def.format(u[k]); System.out.print(sy+" "); }
System.out.println("");
// Zeitschleife
for(i=1; i <= nt; i++ )
{ for(j=1; j < nx; j++ )
{ dudt=(u[j+1]-2*u[j]+u[j-1])/dx/dx*faktor;
uneu[j]=u[j]+dudt*dt;
}
if( i % 100 == 0 ) // Ausdruck;
{ t=tanfang+i*dt;
System.out.println(" t = "+t);
for( k=0; k <=nx; k++ )
{ sy=def.format(u[k]); System.out.print(sy+" "); }
System.out.println("");
}
// Umspeichern
for( k=1; k < nx; k++ )
u[k]=uneu[k];
}
}
}
ich wäre für jeden konstruktiven Beitrag vom Herzen dankbar.
liebe Grüße
Bahar
Bahar Gast |