rank mismatch in argument (fortran 90)

3
4/14/2014 rank mismatch in argument (Fortran 90) http://www.physicsforums.com/showthread.php?t=681470 1/3 User Name •••••••• Auto-Login Log in MelihAltunan #1 Mar28-13, 08:57 AM SteamKing #2 Mar28-13, 12:35 PM MelihAltunan #3 Mar29-13, 07:29 AM Physics Forums > Other Sciences > Computing & Technology > Programming & Computer Science rank mismatch in argument (Fortran 90) by MelihAltunan Tags: fortran 90 P: 8 Hello everyone, i am dealing with the code which can help me to solve fluid dynamics problems with using LBM methods. Anyways, since i am beginner on Fortran i couldn't solve the rank mismatch error, i think it is easy one but i just cant fix it, i am waiting for your help. Here is the problem part; subroutine collesion(u,v,f,feq,rho,omega,w,cx,cy,n,m,tm,tminv,stmiv) real f(0:8,0:n,0:m) real feq(0:8,0:n,0:m),rho(0:n,0:m) real w(0:8), cx(0:8),cy(0:8) real u(0:n,0:m), v(0:n,0:m) real tm(0:8,0:8),tminv(0:8,0:8),stmiv(0:8,0:8) real fmom(0:8,0:n,0:m),fmeq(0:8,0:n,0:m) !calculate equilibrium moments do i=0,n do j=0,m fmeq(0,i,j)=rho(i,j) fmeq(1,i,j)=rho(i,j)*(-2.0+3.0*rho(i,j)*(u(i,j)*u(i,j)+v(i,j)*v(i,j))) fmeq(2,i,j)=rho(i,j)*(1.0-3.0*rho(i,j)*(u(i,j)*u(i,j)+v(i,j)*v(i,j))) fmeq(3,i,j)=rho(i,j)*u(i,j) fmeq(4,i,j)=-rho(i,j)*u(i,j) fmeq(5,i,j)=rho(i,j)*v(i,j) fmeq(6,i,j)=-rho(i,j)*v(i,j) fmeq(7,i,j)=rho(i,j)*(u(i,j)*u(i,j)-v(i,j)*v(i,j)) fmeq(8,i,j)=rho(i,j)*u(i,j)*v(i,j) end do end do the error is Warning: Rank mismatch in argument 'rho' at (1) (rank-2 and scalar) i guess it's because fmeq and rho have different ranks but how i can write in a proper way? Thank you for now. Science news on Phys.org Power arm band for wearables harvests body heat Amazon 'to release smartphone later this year' Space station computer outage may force spacewalk HW Helper Thanks P: 5,508 I would check elsewhere in the program where the subroutine collesion is called. It is possible that the variable 'rho' has not been declared with the proper dimensions in other parts of the program. The error message suggests that there is a mismatch in the dimensions of the arguments between calling the routine collesion and the dimensions of rho in the subroutine itself. P: 8 i checked the code rho has same dimensions everywhere and also i am receiving 'segmentation fault-invalid memory reference' error on simply fortran then it shows the line 11 above (fmeq(0,i,j)=rho(i,j)). And when i try to run on microsoft developer studio it says 'wrong number of arguments to procedure COLLESION invoked from main: 13 found, 14 expected' without showing any lines. Do you have any idea about that? thank you for your help. REGISTER GET POSTS LIBRARY BLOGS S S S S S S M Receive 80% Bonus mayzus.com

Upload: imran-sajid-shahid

Post on 28-Dec-2015

101 views

Category:

Documents


0 download

DESCRIPTION

il

TRANSCRIPT

Page 1: Rank Mismatch in Argument (Fortran 90)

4/14/2014 rank mismatch in argument (Fortran 90)

http://www.physicsforums.com/showthread.php?t=681470 1/3

User Name •••••••• Auto-Login Log in

MelihAltunan #1Mar28-13, 08:57 AM

SteamKing #2Mar28-13, 12:35 PM

MelihAltunan #3Mar29-13, 07:29 AM

Physics Forums > Other Sciences > Computing & Technology > Programming & Computer Science

rank mismatch in argument (Fortran 90)by MelihAltunan Tags: fortran 90

P: 8 Hello everyone, i am dealing with the code which can help me tosolve fluid dynamics problems with using LBM methods. Anyways,since i am beginner on Fortran i couldn't solve the rank mismatcherror, i think it is easy one but i just cant fix it, i am waiting foryour help. Here is the problem part;

subroutinecollesion(u,v,f,feq,rho,omega,w,cx,cy,n,m,tm,tminv,stmiv)real f(0:8,0:n,0:m)real feq(0:8,0:n,0:m),rho(0:n,0:m)real w(0:8), cx(0:8),cy(0:8)real u(0:n,0:m), v(0:n,0:m)real tm(0:8,0:8),tminv(0:8,0:8),stmiv(0:8,0:8)real fmom(0:8,0:n,0:m),fmeq(0:8,0:n,0:m)!calculate equilibrium momentsdo i=0,n

do j=0,mfmeq(0,i,j)=rho(i,j)fmeq(1,i,j)=rho(i,j)*(-2.0+3.0*rho(i,j)*(u(i,j)*u(i,j)+v(i,j)*v(i,j)))fmeq(2,i,j)=rho(i,j)*(1.0-3.0*rho(i,j)*(u(i,j)*u(i,j)+v(i,j)*v(i,j)))fmeq(3,i,j)=rho(i,j)*u(i,j)fmeq(4,i,j)=-rho(i,j)*u(i,j)fmeq(5,i,j)=rho(i,j)*v(i,j)fmeq(6,i,j)=-rho(i,j)*v(i,j)fmeq(7,i,j)=rho(i,j)*(u(i,j)*u(i,j)-v(i,j)*v(i,j))fmeq(8,i,j)=rho(i,j)*u(i,j)*v(i,j)end doend do

the error is Warning: Rank mismatch in argument 'rho' at (1) (rank-2 and scalar)

i guess it's because fmeq and rho have different ranks but how i can write in a proper way?

Thank you for now.

Science news on Phys.org• Power arm band for wearables harvests body heat• Amazon 'to release smartphone later this year'

• Space station computer outage may force spacewalk

HW Helper

Thanks

P: 5,508

I would check elsewhere in the program where the subroutine collesion is called. It is possible that the variable 'rho' has notbeen declared with the proper dimensions in other parts of the program. The error message suggests that there is a mismatchin the dimensions of the arguments between calling the routine collesion and the dimensions of rho in the subroutine itself.

P: 8 i checked the code rho has same dimensions everywhere and also i am receiving 'segmentation fault-invalid memory reference'error on simply fortran then it shows the line 11 above (fmeq(0,i,j)=rho(i,j)). And when i try to run on microsoft developerstudio it says 'wrong number of arguments to procedure COLLESION invoked from main: 13 found, 14 expected' withoutshowing any lines. Do you have any idea about that? thank you for your help.

REGISTER GET POSTS LIBRARY BLOGS

ShareShareShareShareShareShareMore

Receive 80% Bonusmayzus.com

Page 2: Rank Mismatch in Argument (Fortran 90)

4/14/2014 rank mismatch in argument (Fortran 90)

http://www.physicsforums.com/showthread.php?t=681470 2/3

gsal #4Mar29-13, 07:46 AM

gsal #5Mar29-13, 07:49 AM

MelihAltunan #6Mar29-13, 08:29 AM

gsal #7Mar29-13, 11:53 AM

MelihAltunan #8Mar30-13, 11:48 AM

P: 837 rank mismatch in argument (Fortran 90)

Asking for help like this without posting the entire program can lead to a lot of speculation and a waste of time.

Either post the entire program or a minimal one that still shows the problem...then, again, when one does the step of going toa minimal program often the problem is found.

P: 837 By the way, I noticed that omega, n, and m do not seem to have been declared in your subroutine...this leads me to believethat you do NOT have an IMPLICIT NONE statement in your program...which opens the door for a lot of things.

P: 8 i tried with IMPLICIT NONE but it had same problem again. Considering what you said, i added the code as an attachment. So,the best way is if you run the code with your own compiler, you will see the what is an error. I would be pleased if you cancheck the code that i uploaded. Thanks.

Attached Files

liddrivenre=100(MRT).zip (1.9 KB, 2 views)

P: 837 No need to compile...the problem is very clear, just compare the signature of the subroutine as declared (order and quantityof arguments) and see how you are calling it:

call collesion(u,v,feq,rho,omega,w,cx,cy,n,m,tm,tminv,stmiv)subroutine collesion(u,v,f,feq,rho,omega,w,cx,cy,n,m,tm,tminv,stmiv)

Notice anything?

P: 8 yea, i noticed :), it is working now, thanks a lot.

Register to reply

Related Discussions

fortran bug: rank problem gfortran Programming & Computer Science 3

Type mismatch problem FORTRAN 77 Programming & Computer Science 4

Type/rank mismatch in argument Programming & Computer Science 4

Fortran, complex array with rank one Programming & Computer Science 7

Fortran Complex Argument Programming & Computer Science 4

mayzus.com

On Any Deposit, No Daily Limits. Start Trading Forex with Mayzus!

RTD Calibration Guideflukecal.com/CalibrateRTD

How to Calibrate an RTD or PT100 Fluke Application Note Download

Page 3: Rank Mismatch in Argument (Fortran 90)

4/14/2014 rank mismatch in argument (Fortran 90)

http://www.physicsforums.com/showthread.php?t=681470 3/3

TERMS OF SERVICE PRIVACY CONTACT US PARTNERS TOP

Copyright © 2014 Physics Forums | Copyright © 2014, vBulletin Solutions, Inc.