моя проблема состоит в том, чтобы интегрировать функцию с помощью интеграции romberg. Я пересдаю этот курс и успешно закончил последний семестр, но на этот раз мой профессор требует модули, которые я никак не мог понять. Другой проблемой всегда были пустые аргументы. Базовая схема такая
Global variable module >
Main prog >
external fn within prog >
subprogram romberg (module, uses function)
Я поместил свою переменную "x" в модуль глобальных переменных, но не уверен, где мне нужен интерфейс и где мне нужен оператор USE. Я не могу скомпилировать модуль romberg, потому что он не видит переменную x, которую я объявил, независимо от того, где я ее разместил.
MODULE globvar
IMPLICIT NONE
INTEGER,PARAMETER:: dp=selected_real_kind(15)
REAL(dp)::a,b,epsil,cp,h,x,mu
REAL(dp),PARAMETER::pi=3.141592653589, m=45000.0, D=1.032, Ts=250.0, k=0.153
INTEGER::maxit,nt,n,exitflag
END MODULE globvar
Ромберг Мод
MODULE romod
CONTAINS
SUBROUTINE Romberg(f,a,b,nt,epsi,maxit,exitflag,n)
IMPLICIT NONE
INTEGER, PARAMETER :: dp = selected_real_kind(15)
REAL(dp),INTENT(IN)::a,b
INTEGER,INTENT(IN)::epsi,maxit
INTEGER,INTENT(OUT)::exitflag
INTEGER,INTENT(INOUT)::nt
REAL(dp),DIMENSION(maxit+1,maxit+1)::T
REAL(dp)::sone,stwo,h
INTEGER::r,n,I,j,k
INTERFACE !Interface function ! I was told this wasnt needed then it was
FUNCTION f(x)
USE globvar
IMPLICIT NONE
INTEGER::f
END FUNCTION f
END INTERFACE
Romberg algorithm omitted, unless asked for. x is being passed to an upper and lower limit
END SUBROUTINE Romberg
END MODULE romod
Основная программа
PROGRAM Waste
USE globvar
USE romod
IMPLICIT NONE
INTEGER, EXTERNAL::f
INTERFACE
FUNCTION f(x)
USE globvar !Use Module Variables
IMPLICIT NONE
INTEGER::f
END FUNCTION f
END INTERFACE
read prompts
CALL Romberg(f,a,b,nt,epsi,maxit,exitflag,n)
END PROGRAM Waste
FUNCTION f(x)
USE globvar !Use Module Variables
IMPLICIT NONE
INTEGER::f
f=x**3
END FUNCTION f
END PROGRAM Waste
Любая помощь будет оценена по достоинству. Я уже пятый семестр использую Фортран, и некоторые правила до сих пор ускользают от меня.
f
была внешней? Вы, конечно, можете сделать это таким образом (и вы близки), но это чище и без интерфейса, если вы этого не сделаете. - person Ross   schedule 10.09.2015x
дважды - один раз как глобальную переменную, а также как входные данные для функцииf
. Должны ли они быть одинаковыми? - person Ross   schedule 10.09.2015@Ross
при ответе на мой вопрос - так я увижу его быстрее. - person Ross   schedule 10.09.2015