diff --git a/include/astaroth_fortran.h b/include/astaroth_fortran.h index bf9a1e9..11a37a9 100644 --- a/include/astaroth_fortran.h +++ b/include/astaroth_fortran.h @@ -19,6 +19,30 @@ void acdevicedestroy_(Device* device); void acdeviceprintinfo_(const Device* device); +void acupdatebuiltinparams_(AcMeshInfo* info); + +void acdeviceswapbuffers_(const Device* device); + +void acdeviceloadmesh_(const Device* device, const Stream* stream, const AcMesh* host_mesh); + +void acdevicestoremesh_(const Device* device, const Stream* stream, AcMesh* host_mesh); + +void acdeviceintegratesubstep_(const Device* device, const Stream* stream, const int* step_number, + const int3* start, const int3* end, const AcReal* dt); +void acdeviceperiodicboundconds_(const Device* device, const Stream* stream, const int3* start, + const int3* end); + +void acdevicereducescal_(const Device* device, const Stream* stream, const ReductionType* rtype, + const VertexBufferHandle* vtxbuf_handle, AcReal* result); + +void acdevicereducevec_(const Device* device, const Stream* stream, const ReductionType* rtype, + const VertexBufferHandle* vtxbuf0, const VertexBufferHandle* vtxbuf1, + const VertexBufferHandle* vtxbuf2, AcReal* result); + +void acdevicesynchronizestream_(const Device* device, const Stream* stream); + +void acdeviceloadmeshinfo_(const Device* device, const AcMeshInfo* info); + #ifdef __cplusplus } // extern "C" #endif diff --git a/src/core/astaroth_fortran.cc b/src/core/astaroth_fortran.cc index aa535d1..e397a9a 100644 --- a/src/core/astaroth_fortran.cc +++ b/src/core/astaroth_fortran.cc @@ -30,3 +30,65 @@ acupdatebuiltinparams_(AcMeshInfo* info) // TODO errorcheck acUpdateBuiltinParams(info); } + +void +acdeviceswapbuffers_(const Device* device) +{ + acDeviceSwapBuffers(*device); +} + +void +acdeviceloadmesh_(const Device* device, const Stream* stream, const AcMesh* host_mesh) +{ + // TODO construct AcMesh from fortran farray + acDeviceLoadMesh(*device, *stream, *host_mesh); +} + +void +acdevicestoremesh_(const Device* device, const Stream* stream, AcMesh* host_mesh) +{ + // TODO construct AcMesh from fortran farray + acDeviceStoreMesh(*device, *stream, host_mesh); +} + +void +acdeviceintegratesubstep_(const Device* device, const Stream* stream, const int* step_number, + const int3* start, const int3* end, const AcReal* dt) +{ + acDeviceIntegrateSubstep(*device, *stream, *step_number, *start, *end, *dt); +} + +void +acdeviceperiodicboundconds_(const Device* device, const Stream* stream, const int3* start, + const int3* end) +{ + + acDevicePeriodicBoundconds(*device, *stream, *start, *end); +} + +void +acdevicereducescal_(const Device* device, const Stream* stream, const ReductionType* rtype, + const VertexBufferHandle* vtxbuf_handle, AcReal* result) +{ + acDeviceReduceScal(*device, *stream, *rtype, *vtxbuf_handle, result); +} + +void +acdevicereducevec_(const Device* device, const Stream* stream, const ReductionType* rtype, + const VertexBufferHandle* vtxbuf0, const VertexBufferHandle* vtxbuf1, + const VertexBufferHandle* vtxbuf2, AcReal* result) +{ + acDeviceReduceVec(*device, *stream, *rtype, *vtxbuf0, *vtxbuf1, *vtxbuf2, result); +} + +void +acdevicesynchronizestream_(const Device* device, const Stream* stream) +{ + acDeviceSynchronizeStream(*device, *stream); +} + +void +acdeviceloadmeshinfo_(const Device* device, const AcMeshInfo* info) +{ + acDeviceLoadMeshInfo(*device, *info); +}