Why is My Fortran Code Not Working?

  • Context: Fortran 
  • Thread starter Thread starter Petar Mali
  • Start date Start date
  • Tags Tags
    Code Fortran
Click For Summary
SUMMARY

The discussion focuses on troubleshooting a Fortran code that fails to execute correctly. Key issues identified include the incorrect usage of constants, specifically the need to use "2.d0" instead of "2.do". Additionally, the user is prompted to clarify the specific errors encountered during compilation or execution. The importance of defining the expected functionality of the code is emphasized to facilitate effective debugging.

PREREQUISITES
  • Basic understanding of Fortran programming language
  • Familiarity with data types in Fortran, specifically real*8
  • Knowledge of control structures in Fortran, such as loops and conditionals
  • Experience with debugging techniques in programming
NEXT STEPS
  • Review Fortran data type specifications and best practices
  • Learn about common Fortran compilation errors and how to resolve them
  • Explore debugging tools available for Fortran, such as GDB or Valgrind
  • Investigate the use of constants and precision in Fortran programming
USEFUL FOR

This discussion is beneficial for novice programmers, particularly those learning Fortran, as well as experienced developers seeking to refine their debugging skills in scientific computing applications.

Petar Mali
Messages
283
Reaction score
0
I'm new in programing. Does enybody knows why this don't work.

implicit none
integer i,N,Ntot,istag
real*8 t,U,tpin,k,eg,mstag
real*8 rho,Umstag,Urho
real*8 eaf,eaftot,lambdaminus

write(6,*) 'N,Ntot,t,U'
read (5,*) N,Ntot,t,U
write(36,*) Ntot/2+1

tpin=8.d0*datan(1.do)/dfloat(N)
rho=dfloat(Ntot)/dfloat(N)
Urho=U*rho/2.do

do 1000 istag,Ntot,2

mstag=dfloat(istag)/dfloat(N)
Umstag=U*mstag/2.do

eaftot=0.do
do 200,i=-Ntot/4+1,Ntot/4
k=tpin*dfloat(i)
ek=-2.do*t*dcos(k)
lambdaminus=-dsqrt(ek*ek+Umstag*Umstag)
lambdaminus=lambdaminus+Urho
eaftot=eaftot+lambdaminus
200 continue
eaftot=2.do*eaftot/dfloat(N)-U*(rho*rho-mstag*mstag)/4.do

write(36,990)
990 format(i6,f16.6)

1000 continue
end
 
Technology news on Phys.org
Please define "this don't work". What is it supposed to do and what does it actually do? What error messages do you get, if any, and when? (when you try to compile the program, or when you try to run it?)
 
Your constants like 2.do should be 2.d0 (with a zero, not a letter o).

If that doesn't fix your problem ... what [STRIKE]Christo[/STRIKE] JT Bell said.
 
Last edited by a moderator:
Tnx. That was mistake.
 
Last edited:

Similar threads

  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 6 ·
Replies
6
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 8 ·
Replies
8
Views
2K
Replies
1
Views
2K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 37 ·
2
Replies
37
Views
5K
  • · Replies 26 ·
Replies
26
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K