xref: /petsc/src/vec/ftn-mod/petscvecmod.F90 (revision 3868eb1111b7d6dbe3f5d8ac54b907ffd83fac5b)
1        module petscisdef
2use, 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
11        end module
12
13!     Needed by Fortran stub petscsfgetgraph_()
14      subroutine 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
21      end subroutine
22#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
23!DEC$ ATTRIBUTES DLLEXPORT:: F90Array1dCreateSFNode
24#endif
25
26      subroutine F90Array1dDestroySFNode(ptr)
27      use petscisdef
28      implicit none
29      PetscSFNode, pointer :: ptr(:)
30      nullify(ptr)
31      end subroutine
32#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES)
33!DEC$ ATTRIBUTES DLLEXPORT:: F90Array1dDestroySFNode
34#endif
35
36!     ----------------------------------------------
37
38        module 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
56        contains
57
58#include <../ftn/vec/petscsf.hf90>
59#include <../ftn/vec/petscsection.hf90>
60#include <../ftn/vec/petscis.hf90>
61
62      end module
63
64!     ----------------------------------------------
65
66        module petscvecdef
67        use petscisdef
68#include <petsc/finclude/petscvec.h>
69#include <../ftn/vec/petscvec.h>
70        end module
71
72!     ----------------------------------------------
73
74        module petscvec
75        use petscis
76        use petscvecdef
77
78#include <../src/vec/ftn-mod/petscvec.h90>
79#include <../ftn/vec/petscvec.h90>
80
81        contains
82
83#include <../ftn/vec/petscvec.hf90>
84
85      end module
86
87!     ----------------------------------------------
88
89        module  petscaodef
90        use petscsys
91        use petscvecdef
92#include <petsc/finclude/petscao.h>
93#include <../ftn/vec/petscao.h>
94        end module
95
96!     ----------------------------------------------
97
98        module petscao
99        use petscsys
100        use petscaodef
101#include <../ftn/vec/petscao.h90>
102        contains
103#include <../ftn/vec/petscao.hf90>
104      end module
105
106!     ----------------------------------------------
107
108        module  petscpfdef
109        use petscsys
110        use petscvecdef
111#include <petsc/finclude/petscpf.h>
112#include <../ftn/vec/petscpf.h>
113        end module
114
115!     ----------------------------------------------
116
117        module petscpf
118        use petscsys
119        use petscpfdef
120#include <../ftn/vec/petscpf.h90>
121        contains
122#include <../ftn/vec/petscpf.hf90>
123      end module
124