Skip to content

Commit

Permalink
Mise au point de test_libmeshb_HO_f90
Browse files Browse the repository at this point in the history
  • Loading branch information
tof92130 committed Feb 28, 2024
1 parent 5805784 commit ae7ba60
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 40 deletions.
41 changes: 23 additions & 18 deletions examples/test_libmeshb_HO.f90
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ program test_libmeshb_HO_f90
integer(int32), pointer :: VerRef( :)
integer(int32), pointer :: QadTab(:,:),QadRef(:)
integer(int32), pointer :: TriTab(:,:),TriRef(:)
integer(int32) :: GmfKey
!<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Expand Down Expand Up @@ -110,7 +111,7 @@ program test_libmeshb_HO_f90
integer :: BasTab(1:2,1:9)
integer :: OrdTab(1:2,1:9)
integer :: ord
integer :: nNode
integer :: nNod
!> 04 07 03
!> 08 09 06
!> 01 05 02
Expand All @@ -131,14 +132,14 @@ program test_libmeshb_HO_f90

!> Q2 -> ord=2
ord=2
nNode=(ord+1)*(ord+1) ! <=
nNod=(ord+1)*(ord+1) ! <=

res=GmfGetBlockF90( &
& unit=InpMsh ,&
& GmfKey=GmfOrd ,&
& ad0=1 ,&
& ad1=nNode ,&
& Tab=OrdTab(:,1:nNode) )
& ad1=nNod ,&
& Tab=OrdTab(:,1:nNod) )

print '("Input Mesh Order")'
do i=1,size(OrdTab,2)
Expand Down Expand Up @@ -284,19 +285,19 @@ program test_libmeshb_HO_f90
! Write Time in solution file
res=GmfSetKwdF90 (unit=OutSol, GmfKey=GmfTime, Nmb=1)
res=GmfSetLineF90(unit=OutSol, GmfKey=GmfTime, Tab=real(60,kind=real64))


! Solution Stride
strd=5 ! 1+3+1 (GmfSca,GmfVec,GmfSca)

! Writing Interoplation Nodes
ord=4
nNod=(ord+1)*(ord+2)/2
print '( "Output Mesh ord : ",i0)', ord
print '( "Output Mesh nNod : ",i0)', nNod
print '( "Output Solu ord : ",i0)', ord
print '( "Output Solu nNod : ",i0)', nNod

allocate(uvw(1:3,1:nNod))

!TrianglesNodesPositions {1-u-v,u,v} (order=4) (Warburton)

! Triangles P2 Nodes Positions {1-u-v,u,v} (order=4) (Warburton)
uvw(1:3,01)=[0.100000000000000E+01, 0.000000000000000E+00, 0.000000000000000E+00]
uvw(1:3,02)=[0.827326835353989E+00, 0.172673164646011E+00, 0.000000000000000E+00]
uvw(1:3,03)=[0.500000000000000E+00, 0.500000000000000E+00, 0.000000000000000E+00]
Expand All @@ -313,24 +314,28 @@ program test_libmeshb_HO_f90
uvw(1:3,14)=[0.000000000000000E+00, 0.172673164646011E+00, 0.827326835353989E+00]
uvw(1:3,15)=[0.000000000000000E+00, 0.000000000000000E+00, 0.100000000000000E+01]

res=GmfSetKwdF90(unit=OutSol, GmfKey=GmfHOSolAtTrianglesP2NodesPositions, Nmb=nNod)
GmfKey=GmfHOSolAtTrianglesP2NodesPositions

res=GmfSetKwdF90(unit=OutSol, GmfKey=GmfKey, Nmb=nNod)

res=GmfSetBlockF90( &
& unit=OutSol ,&
& GmfKey=GmfHOSolAtTrianglesP2NodesPositions ,&
& ad0=1 ,&
& ad1=nNod ,&
& Tab=uvw(:,1:) )
res=GmfSetBlockF90( &
& unit=OutSol ,&
& GmfKey=GmfKey ,&
& ad0=1 ,&
& ad1=nNod ,&
& Tab=uvw(:,1:) )

! Write Solution (nNod solution per triangle => nTri*nNod degrees)
!NmbDeg=NmbTri*nNod

allocate(solTab(1:strd*nNod,1:NmbTri)) ; solTab(:,:)=1d0
print '("Output Solu size(solTab): ",i0,"x",i0)',size(solTab,1),size(solTab,2)

GmfKey=GmfHOSolAtTrianglesP2

res=GmfSetKwdF90( &
& unit=OutSol ,&
& GmfKey=GmfSolAtVertices ,&
& GmfKey=GmfKey ,&
& Nmb=NmbTri ,&
& NmbFields=NmbFields ,&
& fields=fields(1:NmbFields) ,&
Expand All @@ -339,7 +344,7 @@ program test_libmeshb_HO_f90

res=GmfSetBlockF90( &
& unit=OutSol ,&
& GmfKey=GmfHOSolAtTrianglesP2 ,&
& GmfKey=GmfKey ,&
& ad0=1 ,&
& ad1=NmbTri ,&
& Tab=solTab(:,1:) )
Expand Down
44 changes: 22 additions & 22 deletions sources/libmeshb7_mod.f90
Original file line number Diff line number Diff line change
Expand Up @@ -282,27 +282,27 @@ module libmeshb7
integer(int32), parameter :: gmfmeshongeometry=227

interface GmfStatKwdF90
module procedure GmfStatKwdF90_0 !> vertices & nodes
module procedure GmfStatKwdF90_1 !> solutions
module procedure GmfStatKwdF90_0 !> vertices & nodes
module procedure GmfStatKwdF90_1 !> solutions
end interface GmfStatKwdF90

interface GmfSetKwdF90
module procedure GmfSetKwdF90_0 !> vertices & nodes
module procedure GmfSetKwdF90_1 !> solutions
module procedure GmfSetKwdF90_0 !> vertices & nodes
module procedure GmfSetKwdF90_1 !> solutions
end interface GmfSetKwdF90

interface GmfGetLineF90
module procedure GmfGetLineF90_i ! int32 (:) + int32
module procedure GmfGetLineF90_d ! real64(:) + int32
module procedure GmfGetLineF90_i !> int32 (:) + int32
module procedure GmfGetLineF90_d !> real64(:) + int32
end interface GmfGetLineF90

interface GmfSetLineF90
module procedure GmfSetLineF90_i ! int32 (:) + int32
module procedure GmfSetLineF90_d ! real64(:) + int32
module procedure GmfSetLineF90_sol_i ! int32 (:)
module procedure GmfSetLineF90_sol_i_ ! int32
module procedure GmfSetLineF90_sol_d ! real64(:)
module procedure GmfSetLineF90_sol_d_ ! real64
module procedure GmfSetLineF90_i !> int32 (:) + int32
module procedure GmfSetLineF90_d !> real64(:) + int32
module procedure GmfSetLineF90_sol_i !> int32 (:)
module procedure GmfSetLineF90_sol_i_ !> int32
module procedure GmfSetLineF90_sol_d !> real64(:)
module procedure GmfSetLineF90_sol_d_ !> real64
end interface GmfSetLineF90

interface GmfGetBlockF90
Expand Down Expand Up @@ -604,7 +604,7 @@ function GmfSetLineF90_sol_d_(unit, GmfKey, Tab) result(res)
!<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
return
end function GmfSetLineF90_sol_d_

function GmfGetBlockF90_00(unit, GmfKey, ad0, ad1, iTab, dTab, Ref) result(res)
!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
integer(int64), intent(in) :: unit
Expand Down Expand Up @@ -870,8 +870,8 @@ function GmfSetBlockF90_01(unit, GmfKey, ad0, ad1, Tab, Ref) result(res)
integer(int32), intent(in) :: GmfKey
integer(int32), intent(in) :: ad0
integer(int32), intent(in) :: ad1
integer(int32), intent(inout) :: Tab(:,:)
integer(int32), intent(inout) :: Ref( :)
integer(int32), intent(in) :: Tab(:,:)
integer(int32), intent(in) :: Ref( :)
integer(int32) :: res
!>
integer(int32) :: Nmb
Expand Down Expand Up @@ -908,8 +908,8 @@ function GmfSetBlockF90_01_(unit, GmfKey, ad0, ad1, strd, Tab, Ref) result(r
integer(int32), intent(in) :: ad0
integer(int32), intent(in) :: ad1
integer(int32), intent(in) :: strd
integer(int32), intent(inout) :: Tab(:)
integer(int32), intent(inout) :: Ref(:)
integer(int32), intent(in) :: Tab(:)
integer(int32), intent(in) :: Ref(:)
integer(int32) :: res
!>
integer(int32) :: Nmb
Expand Down Expand Up @@ -945,8 +945,8 @@ function GmfSetBlockF90_03(unit, GmfKey, ad0, ad1, Tab, Ref) result(res)
integer(int32), intent(in) :: GmfKey
integer(int32), intent(in) :: ad0
integer(int32), intent(in) :: ad1
real(real64) , intent(inout) :: Tab(:,:)
integer(int32), intent(inout) :: Ref( :)
real(real64) , intent(in) :: Tab(:,:)
integer(int32), intent(in) :: Ref( :)
integer(int32) :: res
!>
integer(int32) :: iTab(1)
Expand Down Expand Up @@ -983,8 +983,8 @@ function GmfSetBlockF90_03_(unit, GmfKey, ad0, ad1, strd, Tab, Ref) result(r
integer(int32), intent(in) :: ad0
integer(int32), intent(in) :: ad1
integer(int32), intent(in) :: strd
real(real64) , intent(inout) :: Tab(:)
integer(int32), intent(inout) :: Ref(:)
real(real64) , intent(in) :: Tab(:)
integer(int32), intent(in) :: Ref(:)
integer(int32) :: res
!>
integer(int32) :: iTab(1)
Expand Down Expand Up @@ -1020,7 +1020,7 @@ function GmfSetBlockF90_04(unit, GmfKey, ad0, ad1, Tab) result(res)
integer(int32), intent(in) :: GmfKey
integer(int32), intent(in) :: ad0
integer(int32), intent(in) :: ad1
real(real64) , intent(inout) :: Tab(:,:)
real(real64) , intent(in) :: Tab(:,:)
integer(int32) :: res
!>
integer(int32) :: Ref(1)
Expand Down

0 comments on commit ae7ba60

Please sign in to comment.