Dimension of arrays (RESHAPE) in Fortran 90

Click For Summary
SUMMARY

The discussion centers on the use of the RESHAPE function in Fortran 90, specifically in the context of converting Fortran-type arrays to C-type arrays for interoperability. A syntax error was identified in the provided code at line 20, where the RESHAPE function was incorrectly implemented. The correct usage of RESHAPE is crucial for passing arrays to C functions, and examples of its proper application were suggested as a solution for beginners encountering similar issues.

PREREQUISITES
  • Understanding of Fortran 90 syntax and structure
  • Familiarity with complex numbers in Fortran
  • Knowledge of array manipulation functions in Fortran, specifically RESHAPE
  • Basic understanding of interoperability between Fortran and C
NEXT STEPS
  • Research the correct syntax and usage of the RESHAPE function in Fortran 90
  • Explore examples of Fortran to C interoperability
  • Learn about complex number operations in Fortran
  • Investigate common syntax errors in Fortran programming
USEFUL FOR

This discussion is beneficial for Fortran developers, particularly those new to the language, as well as programmers working on projects requiring interoperability between Fortran and C.

MahdiI84
Messages
22
Reaction score
1
TL;DR
Hello everyone. I am new to Fortran. The following coding is for a 2x2 matrix whose original diameter is zero and its non-original diameter requires writing a loop. The code I wrote now has an error that I am unable to fix. Please help me solve it. Thanks
Fortran:
program testmatek
implicit none
integer :: Nc=1000 ,k
integer,parameter :: N=2
REAL :: kx ,a0=1.0 ,t0=0.25
DOUBLE PRECISION :: pi=4*ATAN(1.)
COMPLEX , PARAMETER :: i=(0,1)
complex :: ek1 ,ek2
complex ::  MATRIX_ek(N,N)  
   
 open(1,file='matek.txt')  
 
    MATRIX_ek(N,N)=(0,0)
 
 DO k=-Nc,+Nc
    
    kx=(pi*k)/(1000*a0) 
    ek1=t0*(1+EXP(-2*i*kx*a0))
    ek2=t0*(1+EXP(2*i*kx*a0))
   
    MATRIX_ek=RESHAPE((/0.0,eK2,ek1,0.0/ ) , (/2,2/))
    write(1,*) MATRIX_ek
   
 end do
 end program testmatek
1>C:\Users\mahdi\Documents\Visual Studio 2012\Projects\Console4\Console4\Source1.f90(21): error #5082: Syntax error, found ')' when expecting one of: ( <IDENTIFIER> <CHAR_CON_KIND_PARAM> <CHAR_NAM_KIND_PARAM> <CHARACTER_CONSTANT> <INTEGER_CONSTANT> ...
 
Technology news on Phys.org
The error appears at line 20. Have you searched online for examples of using the RESHAPE function?
 
  • Like
Likes   Reactions: MahdiI84
Why in heaven's name are you using RESHAPE?

RESHAPE is there to convert FORTRAN-type arrays to C-type arrays, so you can pass them to C functions.
 
  • Like
Likes   Reactions: MahdiI84
jedishrfu said:
The error appears at line 20. Have you searched online for examples of using the RESHAPE function?
Yes, I know where the error is. Of course, I searched the internet. But since I am new to Fortran, I did not understand how I could fix the error. Thank you for your help
 
Vanadium 50 said:
Why in heaven's name are you using RESHAPE?

RESHAPE is there to convert FORTRAN-type arrays to C-type arrays, so you can pass them to C functions.
Thank you for your help
 

Similar threads

  • · Replies 16 ·
Replies
16
Views
2K
  • · Replies 20 ·
Replies
20
Views
4K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 21 ·
Replies
21
Views
3K
  • · Replies 13 ·
Replies
13
Views
3K
  • · Replies 8 ·
Replies
8
Views
3K
  • · Replies 1 ·
Replies
1
Views
7K
  • · Replies 5 ·
Replies
5
Views
9K