Author Topic: CFD Fortran  (Read 2687 times)

Litschi

  • Full Member
  • ***
  • Posts: 244
  • Karma: +0/-0
    • View Profile
CFD Fortran
« on: June 05, 2009, 03:46:55 pm »
Moin,

also ich sitz hier noch an der Einführung ins Fortran, vom Herrn Stiller.

Also für die Übungsaufgabe mit dem Darstellen der Funktion hab ich den code schon fertig, aber mein bild ausm Gnuplot sieht irgendwie doof aus....entweder bin ich du doof das ding einzustellen oder mein code is falsch:

program sinus
implicit none

real, dimension(30)   :: x,y
real,   dimension(30,30)   :: f

integer      ::   i,j

do i=1, 30
   do j=1,30
      x(i)=(i-1.0)/(6./29)
      y(j)=(j-1.0)/(6./29)
   end do
end do
open (unit=40, file='sinus.dat' ,status='new', action='write')

do   i=1, 30
   do   j=1, 30
      
      f(i,j)=SIN(x(i))*COS(y(j))
         
         
         write(40,*) x(i), y(j), f(i,j)


      
   end do   
end do

close (40)
      
end program

Gnuplot:


set term jpeg
set output "Bild.jpg"


set hidden3d


splot "sinus.dat" using 1:2:3 with lines


ich hoffe mir kann einer helfen -.-

Ledan

  • Newbie
  • *
  • Posts: 37
  • Karma: +0/-0
    • View Profile
    • http://
CFD Fortran
« Reply #1 on: June 05, 2009, 06:40:43 pm »
Mach mal aus:
x(i)=(i-1.0)/(6./29)
y(j)=(j-1.0)/(6./29)
folgendes:
x(i)=(i-1.0)*(6./29)
y(j)=(j-1.0)*(6./29)

:w00t:
Und wenn du eine Schleife davon weg lässt, wirds noch eleganter.

do i=1,30
           x(i)=(i-1.0)*(6./29)
           y(i)=(i-1.0)*(6./29)
end do

Mit deiner Variante belegt er bei einem Durchgang der äußeren Schleife 30 mal x(i) (Da es innerhalb der zweiten Schleife liegt). Bei einem weiteren Durchgang der ersten Schleife läuft er wieder Schleife 2 durch, belegt 30 mal x(i+1) und überflüssigerweise y( : ) nochmal.  Das führt dazu, dass dein x und y Array 30 mal belegt wird. Wir müssen es ja nicht übertreiben.

Hägar

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +0/-0
    • View Profile
CFD Fortran
« Reply #2 on: June 10, 2009, 10:59:21 pm »
Das Ändern der Schleifen spart Litschi zwar einige Rechenoperationen, sein Problem dürfte aber davon unabhängig sein. Denn an den Vektoren x und y ändert sich durch ändern der Schleifen ja nix.

edith sagt: lass mal das "with lines" weg

Ledan

  • Newbie
  • *
  • Posts: 37
  • Karma: +0/-0
    • View Profile
    • http://
CFD Fortran
« Reply #3 on: June 10, 2009, 11:03:12 pm »
Ich versteh deinen Beitrag nicht. Litschi hat einfach die Werte von x und y falsch belegt. Und ich hab ja hingeschrieben was falsch ist...

Hägar

  • Jr. Member
  • **
  • Posts: 90
  • Karma: +0/-0
    • View Profile
CFD Fortran
« Reply #4 on: June 11, 2009, 12:04:32 pm »
Ok, jetzt seh ich es auch.