Функції користувача в Fortran`e

Трохи теорії

Нижче наведено реалізацію цієї ідеї. Для частинки з масоюxmass, що знаходиться в гармонійній пастці (з параметромomega). module regions implicit none

public :: Energy, show, point private :: getEtot, getUpot, getTkin, & xmass, omega, Rcent

double precision :: xmass = 1.0d0, & omega = 2.0d0, & half = 0.50d0, & Rcent = 2.50d0

type :: point double precision :: R, V ! координата та швидкість частинки double precision :: Tkin, Upot, Etot! кінетична, потенційна та повна енергії end type point

double precision function getEtot(this) RESULT(Etot) implicit none type (point), intent(IN) :: this Etot = getTkin(this) + getUpot(this) end function getEtot

double precision function getTkin(this) RESULT(Tkin) неможливий type (point), intent(IN) :: this Tkin = half * xmass * this%V*this%V end function getTkin

double precision function getUpot(this) RESULT(Upot) implicit none type (point), intent(IN) :: this Upot = half * omega*omega * (this%R-Rcent)* (this%R-Rcent) end function getUpot

subroutine show(this) implicit none type (point), intent(IN) :: this write(*,1) this%R ,this%V ,this%Tkin ,this%Upot , this%Etot 1 format ("R =", f10.5, "V=", f8.5, "kin =", f8.5, "pot =", f8.5, "total =", f8.5) end subroutine show

end module regions

program main USE regions implicit none type (point) :: цей double precision :: r

do r = 0.50d0, 3.50d0 this%V = -2.0d-1 * r this%R = r this=Energy(this) ! виклик функції call show(this)! демонстрація результатів роботи функціїEnergyend do

end program У модулі визначено типpointerта функціяEnergy, яка повертає змінну типуpoint. У ній здійснюється виклик речових функцій getTkin, getUpot, getEtot з присвоєнням їх значень відповідним змінним. Результат роботи цієї функції демонструється процедуроюshow. виходить дуже компактний запис, який легко читається.

Висновок

Хардкорна конфа за С++. Ми запрошуємо лише профі.

Написав гарний текст – отримав запрошення.

У «Пісочниці» діє премодерація: перед публікацією всі матеріали проходять через дбайливе проміння НЛО.

З великою ймовірністю не пройдуть премодерацію: