70 public :: ode_lin_solver
71 public :: ode_nl_1s_solver
72 public :: ode_nl_ms_solver
102 real(RP),
dimension(:,:,:),
allocatable :: y
105 real(RP),
dimension(:,:,:),
allocatable :: ay
108 real(RP),
dimension(:,:,:),
allocatable :: by
111 real(RP),
dimension(:,:) ,
allocatable :: v
114 real(RP),
dimension(:),
allocatable :: rhs
117 real(RP),
dimension(:),
allocatable :: aux
120 integer :: nv=0, ny=0, nfy=0
132 integer,
dimension(:),
allocatable :: y_i
137 integer,
dimension(:),
allocatable :: f_i
142 integer,
dimension(:),
allocatable :: v_i
179 real(RP) ,
intent(in) :: tn
181 logical ,
intent(inout) :: stop
184 subroutine ode_lin_solver(sol, ierr, dt, pb, KInv)
187 logical ,
intent(out) :: ierr
188 real(RP) ,
intent(in) :: dt
190 procedure(linsystem_solver) :: KInv
191 end subroutine ode_lin_solver
193 subroutine ode_nl_1s_solver(sol, dt, t, pb)
196 real(RP) ,
intent(in) :: dt, t
198 end subroutine ode_nl_1s_solver
201 subroutine ode_nl_ms_solver(sol, dt, N, Na)
204 real(RP) ,
intent(in) :: dt
205 integer ,
intent(in) :: N, Na
206 end subroutine ode_nl_ms_solver
215 real(RP) ,
intent(in) :: tn
217 logical ,
intent(inout) :: stop
260 integer,
intent(in),
optional :: nV, NY, NFY
269 if (
present(nv))
then 270 if ( nv < 0)
call quit(&
271 &
"ode_solution_mod: ode_solution_create:& 272 & parameter 'nV' must be >= 0" )
283 if (
present(ny))
then 285 if ( ny < 0)
call quit(&
286 &
"ode_solution_mod: ode_solution_create::& 287 & parameter 'nY' must be >= 0" )
290 call allocmem(sol%Y, pb%N, ny, pb%dof)
295 if (
present(nfy))
then 297 if ( nfy < 0)
call quit(&
298 &
"ode_solution_mod: ode_solution_create::& 299 & parameter 'nFY' must be >= 0" )
302 call allocmem(sol%BY, pb%N , nfy, pb%dof)
303 call allocmem(sol%AY, pb%Na, nfy, pb%dof)
326 if (sol%nFY > 0)
then 346 write(*,*)
"ode_solution_mod: ode_solution_print" 348 if (
allocated(sol%Y))
then 349 write(*,*)
" Array Y , shape =", &
353 if (
allocated(sol%AY))
then 354 write(*,*)
" Array AY, shape =", &
358 if (
allocated(sol%BY))
then 359 write(*,*)
" Array BY, shape =", &
364 if (
allocated(sol%V))
then 365 write(*,*)
" Array V , shape =", &
Type ode_solution: data structure to solve ODE/PDE problems.
deallocate memory for real(RP) arrays
DERIVED TYPE ode_problem: definition of ODE/PDE problems
integer, parameter, public rp
real(kind=RP) = real precision in the code REAL_TOL = epsilon to test real equality ...
REAL NUMBERS PRECISION IN CHORAL: selects simple/double/quad
subroutine, public ode_solution_init_indexes(sol)
initialise the ode_indexes
DERIVED TYPE ode_solution: data straucture to solve ODEs
type(ode_solution) function ode_solution_create(pb, nV, NY, NFY)
Bottom level constructor for ode_solution.
subroutine ode_solution_clear(sol)
destructor
allocate memory for real(RP) arrays
BOTTOM LEVEL MODULE FOR ODEs
subroutine ode_solution_print(sol)
print ode_solution
Type ode_problem: definition of ODE/PDE problems.
subroutine, public void_ode_output(tn, s, stop)
void output for ode resolution