1 module petscdmdef 2 use petscvecdef 3 use petscmatdef 4#include <../ftn/dm/petscall.h> 5#include <../ftn/dm/petscspace.h> 6#include <../ftn/dm/petscdualspace.h> 7 8 type ttPetscTabulation 9 sequence 10 PetscInt K 11 PetscInt Nr 12 PetscInt Np 13 PetscInt Nb 14 PetscInt Nc 15 PetscInt cdim 16 PetscReal2d, pointer :: T(:) 17 end type ttPetscTabulation 18 19 type tPetscTabulation 20 type(ttPetscTabulation), pointer :: ptr 21 end type tPetscTabulation 22 23 end module petscdmdef 24! ---------------------------------------------- 25 26 module petscdm 27 use petscmat 28 use petscdmdef 29#include <../src/dm/ftn-mod/petscdm.h90> 30#include <../src/dm/ftn-mod/petscdt.h90> 31#include <../ftn/dm/petscall.h90> 32#include <../ftn/dm/petscspace.h90> 33#include <../ftn/dm/petscdualspace.h90> 34 35 interface PetscDSGetTabulationSetSizes 36 subroutine PetscDSGetTabulationSetSizes(ds,i, tab,ierr) 37 import tPetscDS, ttPetscTabulation 38 PetscErrorCode ierr 39 type(ttPetscTabulation) tab 40 PetscDS ds 41 PetscInt i 42 end subroutine 43 end interface 44 45 interface PetscDSGetTabulationSetPointers 46 subroutine PetscDSGetTabulationSetPointers(ds,i, T,ierr) 47 import tPetscDS, ttPetscTabulation,tPetscReal2d 48 PetscErrorCode ierr 49 type(tPetscReal2d), pointer :: T(:) 50 PetscDS ds 51 PetscInt i 52 end subroutine 53 end interface 54 55 interface PetscDSGetTabulation 56 module procedure PetscDSGetTabulation 57 end interface 58 59 interface PetscDSRestoreTabulation 60 module procedure PetscDSRestoreTabulation 61 end interface 62 63 contains 64 65#include <../ftn/dm/petscall.hf90> 66#include <../ftn/dm/petscspace.hf90> 67#include <../ftn/dm/petscdualspace.hf90> 68 69 Subroutine PetscDSGetTabulation(ds,tab,ierr) 70 PetscErrorCode ierr 71 PetscTabulation, pointer :: tab(:) 72 PetscDS ds 73 74 PetscInt Nf, i 75 call PetscDSGetNumFields(ds, Nf, ierr) 76 allocate(tab(Nf)) 77 do i=1,Nf 78 allocate(tab(i)%ptr) 79 CHKMEMQ 80 call PetscDSGetTabulationSetSizes(ds, i, tab(i)%ptr, ierr) 81 CHKMEMQ 82 allocate(tab(i)%ptr%T(tab(i)%ptr%K+1)) 83 call PetscDSGetTabulationSetPointers(ds, i, tab(i)%ptr%T, ierr) 84 CHKMEMQ 85 enddo 86 End Subroutine PetscDSGetTabulation 87 88 Subroutine PetscDSRestoreTabulation(ds,tab,ierr) 89 PetscErrorCode ierr 90 PetscTabulation, pointer :: tab(:) 91 PetscDS ds 92 93 PetscInt Nf, i 94 call PetscDSGetNumFields(ds, Nf, ierr) 95 do i=1,Nf 96 deallocate(tab(i)%ptr%T) 97 deallocate(tab(i)%ptr) 98 enddo 99 deallocate(tab) 100 End Subroutine PetscDSRestoreTabulation 101 102 end module petscdm 103 104! ---------------------------------------------- 105 106 module petscdmdadef 107 use petscdmdef 108 use petscaodef 109 use petscpfdef 110#include <petsc/finclude/petscao.h> 111#include <petsc/finclude/petscdmda.h> 112#include <../ftn/dm/petscdmda.h> 113 end module petscdmdadef 114 115 module petscdmda 116 use petscdm 117 use petscdmdadef 118 119#include <../src/dm/ftn-mod/petscdmda.h90> 120#include <../ftn/dm/petscdmda.h90> 121 122 contains 123 124#include <../ftn/dm/petscdmda.hf90> 125 end module petscdmda 126 127! ---------------------------------------------- 128 129 module petscdmplex 130 use petscdm 131 use petscdmdef 132#include <petsc/finclude/petscfv.h> 133#include <petsc/finclude/petscdmplex.h> 134#include <petsc/finclude/petscdmplextransform.h> 135#include <../src/dm/ftn-mod/petscdmplex.h90> 136#include <../ftn/dm/petscfv.h> 137#include <../ftn/dm/petscdmplex.h> 138#include <../ftn/dm/petscdmplextransform.h> 139 140#include <../ftn/dm/petscfv.h90> 141#include <../ftn/dm/petscdmplex.h90> 142#include <../ftn/dm/petscdmplextransform.h90> 143 144 contains 145 146#include <../ftn/dm/petscfv.hf90> 147#include <../ftn/dm/petscdmplex.hf90> 148#include <../ftn/dm/petscdmplextransform.hf90> 149 end module petscdmplex 150 151! ---------------------------------------------- 152 153 module petscdmstag 154 use petscdmdef 155#include <petsc/finclude/petscdmstag.h> 156#include <../ftn/dm/petscdmstag.h> 157 158#include <../ftn/dm/petscdmstag.h90> 159 160 contains 161 162#include <../ftn/dm/petscdmstag.hf90> 163 end module petscdmstag 164 165! ---------------------------------------------- 166 167 module petscdmswarm 168 use petscdm 169 use petscdmdef 170#include <petsc/finclude/petscdmswarm.h> 171#include <../ftn/dm/petscdmswarm.h> 172 173#include <../src/dm/ftn-mod/petscdmswarm.h90> 174#include <../ftn/dm/petscdmswarm.h90> 175 176 contains 177 178#include <../ftn/dm/petscdmswarm.hf90> 179 end module petscdmswarm 180 181! ---------------------------------------------- 182 183 module petscdmcomposite 184 use petscdm 185#include <petsc/finclude/petscdmcomposite.h> 186 187#include <../src/dm/ftn-mod/petscdmcomposite.h90> 188#include <../ftn/dm/petscdmcomposite.h90> 189 end module petscdmcomposite 190 191! ---------------------------------------------- 192 193 module petscdmforest 194 use petscdm 195#include <petsc/finclude/petscdmforest.h> 196#include <../ftn/dm/petscdmforest.h> 197#include <../ftn/dm/petscdmforest.h90> 198 end module petscdmforest 199 200! ---------------------------------------------- 201 202 module petscdmnetwork 203 use petscdm 204#include <petsc/finclude/petscdmnetwork.h> 205#include <../ftn/dm/petscdmnetwork.h> 206 207#include <../ftn/dm/petscdmnetwork.h90> 208 209 contains 210 211#include <../ftn/dm/petscdmnetwork.hf90> 212 end module petscdmnetwork 213 214! ---------------------------------------------- 215 216 module petscdmadaptor 217 use petscdm 218 use petscdmdef 219! use petscsnes 220#include <petsc/finclude/petscdmadaptor.h> 221#include <../ftn/dm/petscdmadaptor.h> 222 223!#include <../ftn/dm/petscdmadaptor.h90> 224 225 contains 226 227!#include <../ftn/dm/petscdmadaptor.hf90> 228 end module petscdmadaptor 229