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
    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!
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook