Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Fortran 90/95 : passing parameters to functions

  1. Aug 15, 2007 #1
    Hello, I have the following doubt, maybe someone can help me with this.
    Suppose I have a general purpose routine that finds the zero of a function f(x), something like

    subroutine fzero( func, x1, x2, xzero )
    implicit none
    real, intent(in) :: x1, x2 ! Upper and lower bounds where the zero lies
    real, intent(out) :: xzero ! zero of the function here
    interface
    real function func(x)
    implicit none
    real, INTENT(in) :: x
    end function func
    end interface
    ...
    f = func( x )
    ...
    end subroutine fzero


    My problem is the following. The function I want to find the zero depends on some parameter, say alpha, so it would be something like function(x,alpha)
    Now, to use the previous general purpose routine I need to input the alpha in some other way. One possibility is to put "alpha" in a module, something like

    module parameter
    implicit none
    real :: alpha
    end module parameter

    and then define the function

    real func( x )
    use parameter
    ...
    end func

    That would work. But do you know of any other way of doing the same thing?

    Thanks for your help!
     
  2. jcsd
  3. Aug 15, 2007 #2

    Dr Transport

    User Avatar
    Science Advisor
    Gold Member

    Why not defing the function with the parameter alpha to begin with, then set it equal to some value like 1 when it doesn't matter.
     
  4. Aug 15, 2007 #3
    The problem is that the general purpose subroutine fzero does not allow the function func(x) to have additional parameters.
     
  5. Aug 16, 2007 #4

    Dr Transport

    User Avatar
    Science Advisor
    Gold Member

    try passing y = ax into the function.....
     
  6. Aug 17, 2007 #5
    That doesn't quite work, I have many parameters, but thanks anyway!
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?



Similar Discussions: Fortran 90/95 : passing parameters to functions
Loading...