xref: /petsc/src/vec/ftn-mod/petscvecmod.F90 (revision ccfb0f9f40a0131988d7995ed9679700dae2a75a)
1module petscisdef
2  use, intrinsic :: ISO_C_binding
3  use petscsysdef
4#include <petsc/finclude/petscis.h>
5#include <../ftn/vec/petscis.h>
6#include <petsc/finclude/petscsf.h>
7#include <../ftn/vec/petscsf.h>
8#include <petsc/finclude/petscsection.h>
9#include <../ftn/vec/petscsection.h>
10
11end module
12
13!     Needed by Fortran stub petscsfgetgraph_()
14subroutine F90Array1dCreateSFNode(array, start, len, ptr)
15  use petscisdef
16  implicit none
17  PetscInt start, len
18  PetscSFNode, target :: array(start:start + len - 1)
19  PetscSFNode, pointer :: ptr(:)
20  ptr => array
21end subroutine
22#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
23!DEC$ ATTRIBUTES DLLEXPORT:: F90Array1dCreateSFNode
24#endif
25
26subroutine F90Array1dDestroySFNode(ptr)
27  use petscisdef
28  implicit none
29  PetscSFNode, pointer :: ptr(:)
30  nullify (ptr)
31end subroutine
32#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
33!DEC$ ATTRIBUTES DLLEXPORT:: F90Array1dDestroySFNode
34#endif
35
36!     ----------------------------------------------
37
38module petscis
39  use petscisdef
40  use petscsys
41
42  interface PetscSFDestroyRemoteOffsets
43    subroutine PetscSFDestroyRemoteOffsets(ptr, ierr)
44      use petscisdef
45      implicit none
46      PetscInt, pointer :: ptr(:)
47      PetscErrorCode :: ierr
48    end subroutine PetscSFDestroyRemoteOffsets
49  end interface
50
51#include <../src/vec/ftn-mod/petscis.h90>
52#include <../ftn/vec/petscsf.h90>
53#include <../ftn/vec/petscsection.h90>
54#include <../ftn/vec/petscis.h90>
55
56contains
57
58#include <../ftn/vec/petscsf.hf90>
59#include <../ftn/vec/petscsection.hf90>
60#include <../ftn/vec/petscis.hf90>
61
62end module
63
64!     ----------------------------------------------
65
66module petscvecdef
67  use petscisdef
68#include <petsc/finclude/petscvec.h>
69#include <../ftn/vec/petscvec.h>
70end module
71
72!     ----------------------------------------------
73
74module petscvec
75  use petscis
76  use petscvecdef
77
78#include <../src/vec/ftn-mod/petscvec.h90>
79#include <../ftn/vec/petscvec.h90>
80
81contains
82
83#include <../ftn/vec/petscvec.hf90>
84
85end module
86
87!     ----------------------------------------------
88
89module petscaodef
90  use petscsys
91  use petscvecdef
92#include <petsc/finclude/petscao.h>
93#include <../ftn/vec/petscao.h>
94end module
95
96!     ----------------------------------------------
97
98module petscao
99  use petscsys
100  use petscaodef
101#include <../ftn/vec/petscao.h90>
102contains
103#include <../ftn/vec/petscao.hf90>
104end module
105
106!     ----------------------------------------------
107
108module petscpfdef
109  use petscsys
110  use petscvecdef
111#include <petsc/finclude/petscpf.h>
112#include <../ftn/vec/petscpf.h>
113end module
114
115!     ----------------------------------------------
116
117module petscpf
118  use petscsys
119  use petscpfdef
120#include <../ftn/vec/petscpf.h90>
121contains
122#include <../ftn/vec/petscpf.hf90>
123end module
124