Fortran Fortran 90/95 : passing parameters to functions

Click For Summary
The discussion revolves around finding a method to adapt a general-purpose routine for finding the zero of a function, f(x), to accommodate functions that depend on additional parameters, such as alpha. The initial approach suggested involves using a module to define the parameter alpha, allowing the function to access it. However, this approach raises concerns about flexibility, as the general-purpose subroutine fzero does not support functions with additional parameters. An alternative suggestion is to define the function with the parameter alpha and set a default value when it's not significant, but this is not feasible due to the limitations of fzero. The conversation highlights the challenge of integrating multiple parameters into a routine designed for simpler function definitions.
pezze
Messages
7
Reaction score
0
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!
 
Technology news on Phys.org
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.
 
Dr Transport said:
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.

The problem is that the general purpose subroutine fzero does not allow the function func(x) to have additional parameters.
 
That doesn't quite work, I have many parameters, but thanks anyway!
 
Learn If you want to write code for Python Machine learning, AI Statistics/data analysis Scientific research Web application servers Some microcontrollers JavaScript/Node JS/TypeScript Web sites Web application servers C# Games (Unity) Consumer applications (Windows) Business applications C++ Games (Unreal Engine) Operating systems, device drivers Microcontrollers/embedded systems Consumer applications (Linux) Some more tips: Do not learn C++ (or any other dialect of C) as a...

Similar threads

  • · Replies 20 ·
Replies
20
Views
3K
  • · Replies 5 ·
Replies
5
Views
5K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 8 ·
Replies
8
Views
4K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 5 ·
Replies
5
Views
2K
  • · Replies 10 ·
Replies
10
Views
6K