New Reply

Fortran: help with arguments to a pre-built software

 
Share Thread Thread Tools
Apr27-12, 05:58 PM   #1
 

Fortran: help with arguments to a pre-built software


There are two functions that I need help with:

http://www.maths.uq.edu.au/expokit/fortran/dgpadm.f
http://www.maths.uq.edu.au/expokit/fortran/dgchbv.f

The problem I'm having is that the arguments on the line DGPADM(....) don't match identically with the explanation. For example, H, ldh and m vs. m and H(ldh,m) not sure why there is a parenthesis. If someone could give me a simple example of acceptable parameters that I could try out,that would be greatly appreciated.

I understand what to put for ideg, m, t, but not so sure about wsp, ipiv , H or the others. For example, H is a matrix, so I guess it needs a matrix as an argument..... regardless could someone help me out here?! Thanks!

In the first case:
subroutine DGPADM( ideg,m,t,H,ldh,wsp,lwsp,ipiv,iexph,ns,iflag )

* ideg : (input) the degre of the diagonal Pade to be used.
* a value of 6 is generally satisfactory.
*
* m : (input) order of H.
*
* H(ldh,m) : (input) argument matrix.
*
* t : (input) time-scale (can be < 0).
*
* wsp(lwsp) : (workspace/output) lwsp .ge. 4*m*m+ideg+1.
*
* ipiv(m) : (workspace)
*
*>>>> iexph : (output) number such that wsp(iexph) points to exp(tH)
* i.e., exp(tH) is located at wsp(iexph ... iexph+m*m-1)
* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* NOTE: if the routine was called with wsp(iptr),
* then exp(tH) will start at wsp(iptr+iexph-1).
*
* ns : (output) number of scaling-squaring used.
*
* iflag : (output) exit flag.
* 0 - no problem
* <0 - problem


Second case:
subroutine DGCHBV( m, t, H,ldh, y, wsp, iwsp, iflag )

* m : (input) order of the matrix H
*
* t : (input) time-scaling factor (can be < 0).
*
* H(ldh,m): (input) argument matrix.
*
* y(m) : (input/output) on input the operand vector,
* on output the resulting vector exp(t*H)*y.
*
* iwsp(m) : (workspace)
*
* wsp : (workspace). Observe that a double precision vector of
* length 2*m*(m+2) can be used as well when calling this
* routine (thus avoiding an idle complex array elsewhere)
 
PhysOrg.com
PhysOrg
science news on PhysOrg.com

>> 'Whodunnit' of Irish potato famine solved
>> The mammoth's lament: Study shows how cosmic impact sparked devastating climate change
>> Curiosity Mars rover drills second rock target
Apr27-12, 06:22 PM   #2
 
Mentor
Mod note: moved to Prog & CS section
 
Apr27-12, 08:16 PM   #3
 
Mentor
Quote by brydustin View Post
There are two functions that I need help with:

http://www.maths.uq.edu.au/expokit/fortran/dgpadm.f
http://www.maths.uq.edu.au/expokit/fortran/dgchbv.f

The problem I'm having is that the arguments on the line DGPADM(....) don't match identically with the explanation. For example, H, ldh and m vs. m and H(ldh,m) not sure why there is a parenthesis. If someone could give me a simple example of acceptable parameters that I could try out,that would be greatly appreciated.

I understand what to put for ideg, m, t, but not so sure about wsp, ipiv , H or the others. For example, H is a matrix, so I guess it needs a matrix as an argument..... regardless could someone help me out here?! Thanks!
I'll take a stab at the first one.

H - the name of a two-dimensional matrix - the matrix contains double precision numbers.
ldh - # of rows in matrix H - an integer.
m - # of cols in matrix H - an integer.
t - timescale. This is the constant t in etH -- double precision.
wsp - workspace - an output array with lwsp elements, each of type double precision.
lwsp - # of elements of the wsp array - an integer. It needs to be > 4m2 + ideg + 1.
ipiv - an output array with m integer elements.
iexph - an index into the wsp array - an integer.
The computed elements of etH are located in the wsp array. They start at wsp(iexph) and end at wsp(iexph + m2 - 1). This section of the array contains all of the elements of etH.
ns - no clue - integer.
iflag - a flag that indicates whether the calculation was successful or not. Negative value indicates some kind of error.

I would start with a very simple matrix, like
$$H = \begin{bmatrix} 0 & 1 \\ 0 & 0 \end{bmatrix}$$
and a value of 1.0 for t.

You should end up with
$$e^{tH} = \begin{bmatrix} 1 & 1 \\ 0 & 1 \end{bmatrix}$$

The variables that are identified as being output don't need to be initialized before calling this routine. The other variables need to be initialized before the call.

Quote by brydustin View Post
In the first case:
subroutine DGPADM( ideg,m,t,H,ldh,wsp,lwsp,ipiv,iexph,ns,iflag )

* ideg : (input) the degre of the diagonal Pade to be used.
* a value of 6 is generally satisfactory.
*
* m : (input) order of H.
*
* H(ldh,m) : (input) argument matrix.
*
* t : (input) time-scale (can be < 0).
*
* wsp(lwsp) : (workspace/output) lwsp .ge. 4*m*m+ideg+1.
*
* ipiv(m) : (workspace)
*
*>>>> iexph : (output) number such that wsp(iexph) points to exp(tH)
* i.e., exp(tH) is located at wsp(iexph ... iexph+m*m-1)
* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
* NOTE: if the routine was called with wsp(iptr),
* then exp(tH) will start at wsp(iptr+iexph-1).
*
* ns : (output) number of scaling-squaring used.
*
* iflag : (output) exit flag.
* 0 - no problem
* <0 - problem


Second case:
subroutine DGCHBV( m, t, H,ldh, y, wsp, iwsp, iflag )

* m : (input) order of the matrix H
*
* t : (input) time-scaling factor (can be < 0).
*
* H(ldh,m): (input) argument matrix.
*
* y(m) : (input/output) on input the operand vector,
* on output the resulting vector exp(t*H)*y.
*
* iwsp(m) : (workspace)
*
* wsp : (workspace). Observe that a double precision vector of
* length 2*m*(m+2) can be used as well when calling this
* routine (thus avoiding an idle complex array elsewhere)
 
New Reply

Tags
fortran software
Thread Tools


Similar Threads for: Fortran: help with arguments to a pre-built software
Thread Forum Replies
Fortran 77 help making an empty array (or blank list if they exist in fortran) Programming & Comp Sci 5
FORTRAN 95: New to fortran, want to learn how to input a function Programming & Comp Sci 1
Fortran function calling with wrong arguments Programming & Comp Sci 4
Fortran functions as arguments of functions Programming & Comp Sci 2
Accessing Fortran Modules within a Fortran library from Fortran Programming & Comp Sci 0