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! Needed by Fortran stub petscdsgettabulation_() 27 subroutine F90Array1dCreateTabulation(array,start,len,ptr) 28 use petscdmdef 29 implicit none 30 PetscInt start,len 31 PetscTabulation, target :: array(start:start+len-1) 32 PetscTabulation, pointer :: ptr(:) 33 ptr => array 34 print*,'create tab', array(1)%ptr%K,array(1)%ptr%cdim 35 print*,ptr(1)%ptr%K,ptr(1)%ptr%cdim 36 end subroutine 37#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES) 38!DEC$ ATTRIBUTES DLLEXPORT:: F90Array1dCreateTabulation 39#endif 40 41 subroutine F90Array1dDestroyTabulation(ptr) 42 use petscdmdef 43 implicit none 44 PetscTabulation, pointer :: ptr(:) 45 nullify(ptr) 46 end subroutine 47#if defined(_WIN32) && defined(PETSC_USE_SHARED_LIBRARIES) 48!DEC$ ATTRIBUTES DLLEXPORT:: F90Array1dDestroyTabulation 49#endif 50 51 module petscdm 52 use petscmat 53 use petscdmdef 54#include <../src/dm/ftn-mod/petscdm.h90> 55#include <../src/dm/ftn-mod/petscdt.h90> 56#include <../ftn/dm/petscall.h90> 57#include <../ftn/dm/petscspace.h90> 58#include <../ftn/dm/petscdualspace.h90> 59 60 interface PetscDSGetTabulationSetSizes 61 subroutine PetscDSGetTabulationSetSizes(ds,i, tab,ierr) 62 import tPetscDS, ttPetscTabulation 63 PetscErrorCode ierr 64 type(ttPetscTabulation) tab 65 PetscDS ds 66 PetscInt i 67 end subroutine 68 end interface 69 70 interface PetscDSGetTabulationSetPointers 71 subroutine PetscDSGetTabulationSetPointers(ds,i, T,ierr) 72 import tPetscDS, ttPetscTabulation,tPetscReal2d 73 PetscErrorCode ierr 74 type(tPetscReal2d), pointer :: T(:) 75 PetscDS ds 76 PetscInt i 77 end subroutine 78 end interface 79 80 interface PetscDSGetTabulation 81 module procedure PetscDSGetTabulation 82 end interface 83 84 interface PetscDSRestoreTabulation 85 module procedure PetscDSRestoreTabulation 86 end interface 87 88 contains 89 90#include <../ftn/dm/petscall.hf90> 91#include <../ftn/dm/petscspace.hf90> 92#include <../ftn/dm/petscdualspace.hf90> 93 94 Subroutine PetscDSGetTabulation(ds,tab,ierr) 95 PetscErrorCode ierr 96 PetscTabulation, pointer :: tab(:) 97 PetscDS ds 98 99 PetscInt Nf, i 100 call PetscDSGetNumFields(ds, Nf, ierr) 101 allocate(tab(Nf)) 102 do i=1,Nf 103 allocate(tab(i)%ptr) 104 CHKMEMQ 105 call PetscDSGetTabulationSetSizes(ds, i, tab(i)%ptr, ierr) 106 CHKMEMQ 107 allocate(tab(i)%ptr%T(tab(i)%ptr%K+1)) 108 call PetscDSGetTabulationSetPointers(ds, i, tab(i)%ptr%T, ierr) 109 CHKMEMQ 110 enddo 111 End Subroutine PetscDSGetTabulation 112 113 Subroutine PetscDSRestoreTabulation(ds,tab,ierr) 114 PetscErrorCode ierr 115 PetscTabulation, pointer :: tab(:) 116 PetscDS ds 117 118 PetscInt Nf, i 119 call PetscDSGetNumFields(ds, Nf, ierr) 120 do i=1,Nf 121 deallocate(tab(i)%ptr%T) 122 deallocate(tab(i)%ptr) 123 enddo 124 deallocate(tab) 125 End Subroutine PetscDSRestoreTabulation 126 127 end module petscdm 128 129! ---------------------------------------------- 130 131 module petscdmdadef 132 use petscdmdef 133 use petscaodef 134 use petscpfdef 135#include <petsc/finclude/petscao.h> 136#include <petsc/finclude/petscdmda.h> 137#include <../ftn/dm/petscdmda.h> 138 end module petscdmdadef 139 140 module petscdmda 141 use petscdm 142 use petscdmdadef 143 144#include <../src/dm/ftn-mod/petscdmda.h90> 145#include <../ftn/dm/petscdmda.h90> 146 147 contains 148 149#include <../ftn/dm/petscdmda.hf90> 150 end module petscdmda 151 152! ---------------------------------------------- 153 154 module petscdmplex 155 use petscdm 156 use petscdmdef 157#include <petsc/finclude/petscfv.h> 158#include <petsc/finclude/petscdmplex.h> 159#include <petsc/finclude/petscdmplextransform.h> 160#include <../src/dm/ftn-mod/petscdmplex.h90> 161#include <../ftn/dm/petscfv.h> 162#include <../ftn/dm/petscdmplex.h> 163#include <../ftn/dm/petscdmplextransform.h> 164 165#include <../ftn/dm/petscfv.h90> 166#include <../ftn/dm/petscdmplex.h90> 167#include <../ftn/dm/petscdmplextransform.h90> 168 169 contains 170 171#include <../ftn/dm/petscfv.hf90> 172#include <../ftn/dm/petscdmplex.hf90> 173#include <../ftn/dm/petscdmplextransform.hf90> 174 end module petscdmplex 175 176! ---------------------------------------------- 177 178 module petscdmstag 179 use petscdmdef 180#include <petsc/finclude/petscdmstag.h> 181#include <../ftn/dm/petscdmstag.h> 182 183#include <../ftn/dm/petscdmstag.h90> 184 185 contains 186 187#include <../ftn/dm/petscdmstag.hf90> 188 end module petscdmstag 189 190! ---------------------------------------------- 191 192 module petscdmswarm 193 use petscdm 194 use petscdmdef 195#include <petsc/finclude/petscdmswarm.h> 196#include <../ftn/dm/petscdmswarm.h> 197 198#include <../src/dm/ftn-mod/petscdmswarm.h90> 199#include <../ftn/dm/petscdmswarm.h90> 200 201 contains 202 203#include <../ftn/dm/petscdmswarm.hf90> 204 end module petscdmswarm 205 206! ---------------------------------------------- 207 208 module petscdmcomposite 209 use petscdm 210#include <petsc/finclude/petscdmcomposite.h> 211 212#include <../src/dm/ftn-mod/petscdmcomposite.h90> 213#include <../ftn/dm/petscdmcomposite.h90> 214 end module petscdmcomposite 215 216! ---------------------------------------------- 217 218 module petscdmforest 219 use petscdm 220#include <petsc/finclude/petscdmforest.h> 221#include <../ftn/dm/petscdmforest.h> 222#include <../ftn/dm/petscdmforest.h90> 223 end module petscdmforest 224 225! ---------------------------------------------- 226 227 module petscdmnetwork 228 use petscdm 229#include <petsc/finclude/petscdmnetwork.h> 230#include <../ftn/dm/petscdmnetwork.h> 231 232#include <../ftn/dm/petscdmnetwork.h90> 233 234 contains 235 236#include <../ftn/dm/petscdmnetwork.hf90> 237 end module petscdmnetwork 238 239! ---------------------------------------------- 240 241 module petscdmadaptor 242 use petscdm 243 use petscdmdef 244! use petscsnes 245#include <petsc/finclude/petscdmadaptor.h> 246#include <../ftn/dm/petscdmadaptor.h> 247 248!#include <../ftn/dm/petscdmadaptor.h90> 249 250 contains 251 252!#include <../ftn/dm/petscdmadaptor.hf90> 253 end module petscdmadaptor 254