In computer programming, a subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed.
Subroutines may be defined within programs, or separately in libraries that can be used by many programs. In different programming languages, a subroutine may be called a routine, subprogram, function, method, or procedure. Technically, these terms all have different definitions. The generic, umbrella term callable unit is sometimes used.The name subprogram suggests a subroutine behaves in much the same way as a computer program that is used as one step in a larger program or another subprogram. A subroutine is often coded so that it can be started several times and from several places during one execution of the program, including from other subroutines, and then branch back (return) to the next instruction after the call, once the subroutine's task is done. The idea of a subroutine was initially conceived by John Mauchly during his work on ENIAC, and recorded in a January 1947 Harvard symposium on "Preparation of Problems for EDVAC-type Machines". Maurice Wilkes, David Wheeler, and Stanley Gill are generally credited with the formal invention of this concept, which they termed a closed subroutine, contrasted with an open subroutine or macro. However, Turing had discussed subroutines in a paper of 1945 on design proposals for the NPL ACE, going so far as to invent the concept of a return address stack.Subroutines are a powerful programming tool, and the syntax of many programming languages includes support for writing and using them. Judicious use of subroutines (for example, through the structured programming approach) will often substantially reduce the cost of developing and maintaining a large program, while increasing its quality and reliability. Subroutines, often collected into libraries, are an important mechanism for sharing and trading software. The discipline of object-oriented programming is based on objects and methods (which are subroutines attached to these objects or object classes).
In the compiling method called threaded code, the executable program is basically a sequence of subroutine calls.
Hi! so i kinda stuck when i tried to run my code in MCNP6 because the output keep showing me "bad trouble in subroutine source of mcrun
you need a source subroutine."
While I am sure i already put my KCODE and KSRC in my code (on the picture below). Could anyone help...
Here is the code for example:
PROGRAM main
CALL B()
CALL CaoB(B)
contains
subroutine B()
IMPLICIT NONE
write (*,*) 'fk'
end subroutine B
subroutine CaoB(fcn)
implicit none
INTERFACE
SUBROUTINE fcn()
IMPLICIT NONE
END SUBROUTINE fcn
END INTERFACE
write...
I have a simple Fortran code for solving velocity and displacement of spring, the code works fine when writing all together without using a subroutine. but as I am learning Fortran I tried to do it using subroutine, but I keep getting errors
appreciate any help in advance.
program msd
implicit...
I am calling a fortran 77 subroutine in a fortran 90 code and the results i am getting are wrong as confirmed from matlab. Can anybody please let me know where is the problem?
do isss=1,5
do ig=1,10
dat0=dat(:,ig,isss)
do iss=1,5
if...
Hello, I'm trying to use Runge Kutta with adaptive stepsize from numerical recipes(page 742, https://websites.pmc.ucsc.edu/~fnimmo/eart290c_17/NumericalRecipesinF77.pdf ). I rewrote code but I have got failure messages both in an attachment. If I cut this subroutine everything is fine also this...
I'm testing a part of a code and I have a problem. After the subroutine call at line 44 (CALL ZEIGSUB), nothing is written in UNIT NRES. The other units are written correctly. Here's the code:
PROGRAM TEST
IMPLICIT NONE
complex *16, allocatable :: KSTAR(:,:), VR(:,:), CM2(:,:)
real *8...
I have trouble understanding how Fortran knows the inputs and outputs of a subroutine. I am studying a code written in Fortran, but I do not have a compiler, so I cannot check how it works.
Here is my problem; for example, I have a subroutine,
subroutine test(x, y, z, a, b, c)
The variables...
Hi,
I need to write a subroutine that accepts as an argument an array of any number of dimensions, where each dimensions has any size. The array is contiguously allocated.
In C, I can do this pretty cleanly.
void array_func(int ndims, int *dims, int *array)
{
// do stuff with...
Greetings,
I want to ask if there is any subroutine for computing a global spherical harmonic reference field. I read journal and they say it exists, I hope we can share information regarding this subject.
Thank you in advance.
Im trying to pass an unknown size of array to the subroutine. Then I will define the size of array in subroutine and pass it back to main program. I tried to use interface but the complier said invalid memory reference
or Explicit interface required for ' ' at (1): allocatable argument
. Any...
Hello,
I am trying to figure out how to clear a variable inside a subroutine from a calling function. The variable in the subroutine acts as a persistent(MATLAB) or static(C), but once in so many calls I want it to be reset to empty as if the subroutine is being called for the first time.
I...
Hello,
I am relevant new user to C++ while i am quit comfortable using fortran!
One of my favourite thing to use in fortran was the subroutines but i struggling to find something similar in C++. Let me give you an example:
In Fortan:
subroutine test(Tabular1,Tabular2)
...
...
I have some F77 code and I am wondering if it is possible to inject external code into a separate file and call it without it being a subroutine, and placed into the code. An example would be :
a = 1 + 1
b = a + 1
c = b + a
a = c + b
d = 4 + a
and I want to take lines 3 and 4 and...
Hi,
I have written a source subroutine and I am trying to link it with mcnp6. When I run my input file it says you need a source subroutine. My input file and the source subroutine(written in fortran) are in the same directory. Where do I have to keep the subroutine to link with mcnp? Any help...
I am trying to use this subroutine which I found online in my model but I am not experienced in programming and I need to know how can I check for errors or debug the code and try to find the mistakes or syntax errors , I have attached the code for your review
Thank you
Hello everyone ;
I have tried to run a program which has many subrotines so I control each of them.But, when I run one of them, the below error message is seen;
/tmp/ccMqKR9L.o: In function `MAIN__':
getg0.f:(.text+0x73c): undefined reference to `readin_'
collect2: ld returned 1 exit status...
So I am making a module to run in the main program. The module contains a subroutine and several functions. I want to call one of the functions into the subroutine but it is not getting recognized. I am just doing
Real :: fct %fct is the function name that returns a real value
but when...
Hi all,
So I have a program that calls a module that contains a subroutine so I can make a matrix.
When I write the matrix in the subroutine (commented out part in module) I get the right output, but when the main program tries to output it is some insanely small or large numbers.
I am new to...
Hello
fortran users
I, have a problem regarding values that my program produces. Let me detailed it to you.
See, i have createrd a separate fortran program to calculete area under a given function i.e.
it perfroms integration. When this program runs independently it gives me area of the...
I have one main program where I have calculated some array, say A(i,j)
If I want ot use the values in subroutine, and calculate some more values and give back the result to main program, how my syntax should be?
I tried this way. Its not working.
program a...
Hi all !
I have a derived type as:
TYPE type_atom_type_info
integer:: type_code
character(len=4)::type_cname
real(kind=dbl)::mass
end TYPE type_atom_type_info
I have an array of this type as:
TYPE(type_atom_type_info) atom_type_info(250)
I want to pass this array to a...
I'm having a problem with the argument of a subroutine which I didn't write myself, but should be working as intended.
I'm supposed to write my own subroutine named funcs(a,b,c). Then this subroutine that I got has funcs as one of it's arguments subr(a,b,c,funcs,..) and it says in the...
I try to write a small program to allocate a variable in small subroutine and I've passed it, now i allocate array in a loop or many loops but i don't have any ideas about it.
Has anyone done like me , can share some experiences ??
Greetings. I am using the LAPACK (Linear Algebra Package) software package to find the eigenvalues and eigenvectors of a large symmetrical real matrix. Specifically, I calculate a scalar from each eigenvector, and I want to graph it against its associated eigenvalue.
I am using the subroutine...
Hello all, I am developing a new analytical solution for a problem in flow in porous media, and I need to write it in Fortran.
This solution contains the modified Bessel function of the first kind, I_n(x).
The order n is a real number, and it can be both negative and positive.
The argument x...
Hey guys I am trying to understand a code for a Fortran 77 subroutine which calculates spherical harmonics using the CERN library RASLGF for legendre functions. The code looks like this
subroutine harmonics(max,theta,phi,Yr,Yi)
implicit none
integer max,k,nn,n,grens...
I have a problem,actually I want to join two FORTRAN codes.One of them is main and the other calculates some issues(geophysics stuff).I am not sure that the second code can be represented as subroutine because it has 2000+ lines,with 10 subroutines inside itself.How to solve this?Is it possible...
Hi,
I have a rather large program written in fortran 77/90. In one of the subroutines a lot of local dynamic arrays are declared.
In order to make this program able to calculate more stuff, I need to bring these dynamic arrays back into the main program.
I have tried to define the...
Hi all
I am currently using subroutines, and placing them at the end of the main program. However, I was wondering if it is possible to save them to a separate file, which the main program then calls?
For example, in the program below I call the subroutine 'SUB', which is located at the end of...
Hi guys.
I want to transfer each elements of an array (which is declared in one subroutine)to main function using common block technique.
When i am doing so i go always a constant value in the array in the main function.
Suppose i have one array bparz(i) which has different values in one...
Hi all,
Does anyone have/know the location of a subroutine for returning the diagonalized matrix of square, real array? The array is a covariance matrix so should be diagonalizable in all cases.
Thanks,
Natski
Homework Statement
I wrote a program to run the dgemul subroutine on my mac to find the matrix product for matrix a and matrix b, outputted as matrix c, just like the reference manual told me to. Being a mac user, I added the accelerate framework to the file which contain all the lapack...
Trouble with BLAS subroutine dgemv -->vector- matrix product
Hello all,
So, I am trying to write some code that will compute the vector-matrix product using the BLAS subroutine dgemv. I have written the code below, but I am getting really wacky numbers! You will see that it takes array...
Dear all, i wrote a fortran subroutine that implement a genetic algorithm in double precision. I would like share this code in order to improve and due to the lack of this kind (double precision) of genetic algorithm in fortran. My question is where i can do this? best regards
Hi all,
I have been Googling for a Fortran 90 quantile routine but to no avail...
I need a subroutine to which one passes an 1-D array plus the quantile range required...
e.g.
"call quantile(array,0.5D0,value)"
would give me the median of array. Does anyone know of a handy (and...