Skip to content

Commit f882dfd

Browse files
committed
add support of the debug version of the integrate functions in the fortran bindings
1 parent 144a372 commit f882dfd

1 file changed

Lines changed: 122 additions & 0 deletions

File tree

bindings/fortran/src/mgis_behaviour.f90

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3718,6 +3718,28 @@ end function integrate_wrapper
37183718
type(mgis_status) :: s
37193719
s = integrate_wrapper(r, d%ptr, b%ptr)
37203720
end function integrate
3721+
! integrate_debug
3722+
function integrate_debug(r, d, b) result(s)
3723+
use mgis, only: mgis_status
3724+
implicit none
3725+
interface
3726+
function integrate_debug_wrapper(r, d, b) &
3727+
bind(c,name = 'mgis_bv_integrate_debug_2') result(s)
3728+
use, intrinsic :: iso_c_binding, only: c_ptr, c_int
3729+
use mgis, only: mgis_status
3730+
implicit none
3731+
integer(kind=c_int), intent(out) :: r
3732+
type(c_ptr), intent(in),value :: d
3733+
type(c_ptr), intent(in),value :: b
3734+
type(mgis_status) :: s
3735+
end function integrate_debug_wrapper
3736+
end interface
3737+
integer, intent(out) :: r
3738+
type(BehaviourData), intent(in) :: d
3739+
type(Behaviour), intent(in) :: b
3740+
type(mgis_status) :: s
3741+
s = integrate_debug_wrapper(r, d%ptr, b%ptr)
3742+
end function integrate_debug
37213743
!
37223744
function integrate_material_data_manager(r, p, m, i, dt) result(s)
37233745
use, intrinsic :: iso_c_binding, only: c_size_t
@@ -3748,6 +3770,35 @@ end function integrate_material_data_manager_wrapper
37483770
s = integrate_material_data_manager_wrapper(r, p%ptr, m%ptr, i, dt)
37493771
end function integrate_material_data_manager
37503772
!
3773+
function integrate_debug_material_data_manager(r, p, m, i, dt) result(s)
3774+
use, intrinsic :: iso_c_binding, only: c_size_t
3775+
use mgis_fortran_utilities, only: convert_to_c_index
3776+
use mgis, only: ThreadPool, mgis_status, report_failure
3777+
implicit none
3778+
interface
3779+
function integrate_debug_material_data_manager_wrapper(r, p, m, i, dt) &
3780+
bind(c,name = 'mgis_bv_integrate_debug_material_data_manager') &
3781+
result(s)
3782+
use, intrinsic :: iso_c_binding, only: c_ptr, c_int, c_double
3783+
use mgis, only: mgis_status
3784+
implicit none
3785+
integer(kind=c_int), intent(out) :: r
3786+
type(c_ptr), intent(in),value :: p
3787+
type(c_ptr), intent(in),value :: m
3788+
integer, intent(in),value :: i
3789+
real(kind = c_double), intent(in),value :: dt
3790+
type(mgis_status) :: s
3791+
end function integrate_debug_material_data_manager_wrapper
3792+
end interface
3793+
integer, intent(out) :: r
3794+
type(ThreadPool), intent(in) :: p
3795+
type(MaterialDataManager), intent(in) :: m
3796+
integer, intent(in) :: i
3797+
real(kind = 8), intent(in) :: dt
3798+
type(mgis_status) :: s
3799+
s = integrate_debug_material_data_manager_wrapper(r, p%ptr, m%ptr, i, dt)
3800+
end function integrate_debug_material_data_manager
3801+
!
37513802
function integrate_material_data_manager_with_options(r, p, m, i, dt) result(s)
37523803
use, intrinsic :: iso_c_binding, only: c_size_t
37533804
use mgis_fortran_utilities, only: convert_to_c_index
@@ -3776,6 +3827,35 @@ end function integrate_material_data_manager_with_options_wrapper
37763827
type(mgis_status) :: s
37773828
s = integrate_material_data_manager_with_options_wrapper(r, p%ptr, m%ptr, i%ptr, dt)
37783829
end function integrate_material_data_manager_with_options
3830+
!
3831+
function integrate_debug_material_data_manager_with_options(r, p, m, i, dt) result(s)
3832+
use, intrinsic :: iso_c_binding, only: c_size_t
3833+
use mgis_fortran_utilities, only: convert_to_c_index
3834+
use mgis, only: ThreadPool, mgis_status, report_failure
3835+
implicit none
3836+
interface
3837+
function integrate_debug_material_data_manager_with_options_wrapper(r, p, m, i, dt) &
3838+
bind(c,name = 'mgis_bv_integrate_debug_material_data_manager_with_options') &
3839+
result(s)
3840+
use, intrinsic :: iso_c_binding, only: c_ptr, c_int, c_double
3841+
use mgis, only: mgis_status
3842+
implicit none
3843+
integer(kind=c_int), intent(out) :: r
3844+
type(c_ptr), intent(in),value :: p
3845+
type(c_ptr), intent(in),value :: m
3846+
type(c_ptr), intent(in),value :: i
3847+
real(kind = c_double), intent(in),value :: dt
3848+
type(mgis_status) :: s
3849+
end function integrate_debug_material_data_manager_with_options_wrapper
3850+
end interface
3851+
integer, intent(out) :: r
3852+
type(ThreadPool), intent(in) :: p
3853+
type(MaterialDataManager), intent(in) :: m
3854+
type(BehaviourIntegrationOptions), intent(in) :: i
3855+
real(kind = 8), intent(in) :: dt
3856+
type(mgis_status) :: s
3857+
s = integrate_debug_material_data_manager_with_options_wrapper(r, p%ptr, m%ptr, i%ptr, dt)
3858+
end function integrate_debug_material_data_manager_with_options
37793859
!
37803860
function integrate_material_data_manager_part(r, m, i, dt, ni, ne) result(s)
37813861
use, intrinsic :: iso_c_binding, only: c_size_t
@@ -3818,4 +3898,46 @@ end function integrate_material_data_manager_part_wrapper
38183898
nec = nec + 1
38193899
s = integrate_material_data_manager_part_wrapper(r, m%ptr, i, dt, nic, nec)
38203900
end function integrate_material_data_manager_part
3901+
!
3902+
function integrate_debug_material_data_manager_part(r, m, i, dt, ni, ne) result(s)
3903+
use, intrinsic :: iso_c_binding, only: c_size_t
3904+
use mgis_fortran_utilities, only: convert_to_c_index
3905+
use mgis, only: mgis_status, report_failure
3906+
implicit none
3907+
interface
3908+
function integrate_debug_material_data_manager_part_wrapper(r, m, i, dt, ni, ne) &
3909+
bind(c,name = 'mgis_bv_integrate_debug_material_data_manager_part') &
3910+
result(s)
3911+
use, intrinsic :: iso_c_binding, only: c_ptr, c_size_t, c_int, c_double
3912+
use mgis, only: mgis_status
3913+
implicit none
3914+
integer(kind=c_int), intent(out) :: r
3915+
type(c_ptr), intent(in),value :: m
3916+
integer, intent(in),value :: i
3917+
real(kind = c_double), intent(in),value :: dt
3918+
integer(kind = c_size_t), intent(in),value :: ni
3919+
integer(kind = c_size_t), intent(in),value :: ne
3920+
type(mgis_status) :: s
3921+
end function integrate_debug_material_data_manager_part_wrapper
3922+
end interface
3923+
integer, intent(out) :: r
3924+
type(MaterialDataManager), intent(in) :: m
3925+
integer, intent(in),value :: i
3926+
real(kind = 8), intent(in) :: dt
3927+
integer :: ni
3928+
integer :: ne
3929+
type(mgis_status) :: s
3930+
integer(kind=c_size_t) :: nic
3931+
integer(kind=c_size_t) :: nec
3932+
if(.not. convert_to_c_index(nic, ni)) then
3933+
s = report_failure("invalid index")
3934+
return
3935+
end if
3936+
if(.not. convert_to_c_index(nec, ne)) then
3937+
s = report_failure("invalid index")
3938+
return
3939+
end if
3940+
nec = nec + 1
3941+
s = integrate_debug_material_data_manager_part_wrapper(r, m%ptr, i, dt, nic, nec)
3942+
end function integrate_debug_material_data_manager_part
38213943
end module mgis_behaviour

0 commit comments

Comments
 (0)