Commits

Lisandro Dalcin committed 817ddd3

Fortran: ISO_C_BINDING procedures are not PURE

Comments (0)

Files changed (1)

src/petigaftn.F90

 
   contains
 
-    pure function IGA_GeomMap(p) result (X)
+    function IGA_GeomMap(p) result (X)
       implicit none
       type(IGAPoint), intent(in) :: p
       real(kind=IGA_REAL_KIND)   :: X(p%nsd)
       interface
-         pure subroutine IGAPoint_GeomMap(p,X) bind(C)
+         subroutine IGAPoint_GeomMap(p,X) bind(C)
            import; implicit none;
            type(IGAPoint), intent(in) :: p
            real(kind=IGA_REAL_KIND), intent(out) :: X(p%nsd)
       call IGAPoint_GeomMap(p,X)
     end function IGA_GeomMap
 
-    pure function IGA_GradGeomMap(p) result (F)
+    function IGA_GradGeomMap(p) result (F)
       implicit none
       type(IGAPoint), intent(in) :: p
       real(kind=IGA_REAL_KIND)   :: F(p%dim,p%nsd)
       interface
-         pure subroutine IGAPoint_GradGeomMap(p,F) bind(C)
+         subroutine IGAPoint_GradGeomMap(p,F) bind(C)
            import; implicit none;
            type(IGAPoint), intent(in) :: p
            real(kind=IGA_REAL_KIND), intent(out) :: F(p%dim,p%nsd)
       call IGAPoint_GradGeomMap(p,F)
     end function IGA_GradGeomMap
 
-    pure function IGA_InvGradGeomMap(p) result (G)
+    function IGA_InvGradGeomMap(p) result (G)
       implicit none
       type(IGAPoint), intent(in) :: p
       real(kind=IGA_REAL_KIND)   :: G(p%nsd,p%dim)
       interface
-         pure subroutine IGAPoint_InvGradGeomMap(p,G) bind(C)
+         subroutine IGAPoint_InvGradGeomMap(p,G) bind(C)
            import; implicit none;
            type(IGAPoint), intent(in) :: p
            real(kind=IGA_REAL_KIND), intent(out) :: G(p%nsd,p%dim)
       call IGAPoint_InvGradGeomMap(p,G)
     end function IGA_InvGradGeomMap
 
-    pure function IGA_Shape0(p) result(N)
+    function IGA_Shape0(p) result(N)
       use ISO_C_BINDING, only: c2f => C_F_POINTER
       implicit none
       type(IGAPoint), intent(in) :: p
       call c2f(p%shape(0),N,(/p%nen/))
     end function IGA_Shape0
 
-    pure function IGA_Shape1(p) result(N)
+    function IGA_Shape1(p) result(N)
       use ISO_C_BINDING, only: c2f => C_F_POINTER
       implicit none
       type(IGAPoint), intent(in) :: p
       call c2f(p%shape(1),N,(/p%dim,p%nen/))
     end function IGA_Shape1
 
-    pure function IGA_Shape2(p) result(N)
+    function IGA_Shape2(p) result(N)
       use ISO_C_BINDING, only: c2f => C_F_POINTER
       implicit none
       type(IGAPoint), intent(in) :: p
       call c2f(p%shape(2),N,(/p%dim,p%dim,p%nen/))
     end function IGA_Shape2
 
-    pure function IGA_Shape3(p) result(N)
+    function IGA_Shape3(p) result(N)
       use ISO_C_BINDING, only: c2f => C_F_POINTER
       implicit none
       type(IGAPoint), intent(in) :: p
 #define DIM size(N,1)
 #define DOF size(U,1)
 
-    pure function IGA_Shape_Der0_S(N,U) result (V)
+    function IGA_Shape_Der0_S(N,U) result (V)
       implicit none
       real   (kind=IGA_REAL_KIND  ), intent(in) :: N(:) ! nen
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:) ! nen
       end do
     end function IGA_Shape_Der0_S
 
-    pure function IGA_Shape_Der0_V(N,U) result (V)
+    function IGA_Shape_Der0_V(N,U) result (V)
       implicit none
       real   (kind=IGA_REAL_KIND  ), intent(in) :: N(:)   ! nen
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:,:) ! dof,nen
       end do
     end function IGA_Shape_Der0_V
 
-    pure function IGA_Shape_Der1_S(N,U) result (V)
+    function IGA_Shape_Der1_S(N,U) result (V)
       implicit none
       real   (kind=IGA_REAL_KIND  ), intent(in) :: N(:,:) ! dim,nen
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:)   ! nen
       end do
     end function IGA_Shape_Der1_S
 
-    pure function IGA_Shape_Der1_V(N,U) result (V)
+    function IGA_Shape_Der1_V(N,U) result (V)
       implicit none
       real   (kind=IGA_REAL_KIND  ), intent(in) :: N(:,:) ! dim,nen
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:,:) ! dof,nen
       end do
     end function IGA_Shape_Der1_V
 
-    pure function IGA_Shape_Der2_S(N,U) result (V)
+    function IGA_Shape_Der2_S(N,U) result (V)
       implicit none
       real   (kind=IGA_REAL_KIND  ), intent(in) :: N(:,:,:) ! dim,dim,nen
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:)     ! nen
       end do
     end function IGA_Shape_Der2_S
 
-    pure function IGA_Shape_Der2_V(N,U) result (V)
+    function IGA_Shape_Der2_V(N,U) result (V)
       implicit none
       real   (kind=IGA_REAL_KIND  ), intent(in) :: N(:,:,:) ! dim,dim,nen
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:,:)   ! dof,nen
       end do
     end function IGA_Shape_Der2_V
 
-    pure function IGA_Shape_Der3_S(N,U) result (V)
+    function IGA_Shape_Der3_S(N,U) result (V)
       implicit none
       real   (kind=IGA_REAL_KIND  ), intent(in) :: N(:,:,:,:) ! dim,dim,dim,nen
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:)       ! nen
       end do
     end function IGA_Shape_Der3_S
 
-    pure function IGA_Shape_Der3_V(N,U) result (V)
+    function IGA_Shape_Der3_V(N,U) result (V)
       implicit none
       real   (kind=IGA_REAL_KIND  ), intent(in) :: N(:,:,:,:) ! dim,dim,dim,nen
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:,:)     ! dof,nen
       end do
     end function IGA_Shape_Der3_V
 
-    pure function IGA_Shape_Div(N,U) result (V)
+    function IGA_Shape_Div(N,U) result (V)
       implicit none
       real   (kind=IGA_REAL_KIND  ), intent(in) :: N(:,:) ! dim,nen
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:,:) ! dim,nen
       end do
     end function IGA_Shape_Div
 
-    pure function IGA_Shape_Del2_S(N,U) result (V)
+    function IGA_Shape_Del2_S(N,U) result (V)
       implicit none
       real   (kind=IGA_REAL_KIND  ), intent(in) :: N(:,:,:) ! dim,dim,nen
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:)     ! nen
       end do
     end function IGA_Shape_Del2_S
 
-    pure function IGA_Shape_Del2_V(N,U) result (V)
+    function IGA_Shape_Del2_V(N,U) result (V)
       implicit none
       real   (kind=IGA_REAL_KIND  ), intent(in) :: N(:,:,:) ! dim,dim,nen
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:,:)   ! dof,nen
 #define DIM p%dim
 #define DOF size(U,1)
 
-    pure function IGA_Point_Der0_S(p,U) result(V)
+    function IGA_Point_Der0_S(p,U) result(V)
       implicit none
       type(IGAPoint), intent(in) :: p
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:) ! nen
       V = IGA_Eval(IGA_Shape0(p),U)
     end function IGA_Point_Der0_S
 
-    pure function IGA_Point_Der0_V(p,U) result(V)
+    function IGA_Point_Der0_V(p,U) result(V)
       implicit none
       type(IGAPoint), intent(in) :: p
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:,:) ! dof,nen
       V = IGA_Eval(IGA_Shape0(p),U)
     end function IGA_Point_Der0_V
 
-    pure function IGA_Point_Der1_S(p,U) result(V)
+    function IGA_Point_Der1_S(p,U) result(V)
       implicit none
       type(IGAPoint), intent(in) :: p
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:) ! nen
       V = IGA_Eval(IGA_Shape1(p),U)
     end function IGA_Point_Der1_S
 
-    pure function IGA_Point_Der1_V(p,U) result(V)
+    function IGA_Point_Der1_V(p,U) result(V)
       implicit none
       type(IGAPoint), intent(in) :: p
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:,:) ! dof,nen
       V = IGA_Eval(IGA_Shape1(p),U)
     end function IGA_Point_Der1_V
 
-    pure function IGA_Point_Der2_S(p,U) result(V)
+    function IGA_Point_Der2_S(p,U) result(V)
       implicit none
       type(IGAPoint), intent(in) :: p
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:) ! nen
       V = IGA_Eval(IGA_Shape2(p),U)
     end function IGA_Point_Der2_S
 
-    pure function IGA_Point_Der2_V(p,U) result(V)
+    function IGA_Point_Der2_V(p,U) result(V)
       implicit none
       type(IGAPoint), intent(in) :: p
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:,:) ! dof,nen
       V = IGA_Eval(IGA_Shape2(p),U)
     end function IGA_Point_Der2_V
 
-    pure function IGA_Point_Der3_S(p,U) result(V)
+    function IGA_Point_Der3_S(p,U) result(V)
       implicit none
       type(IGAPoint), intent(in) :: p
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:) ! nen
       V = IGA_Eval(IGA_Shape3(p),U)
     end function IGA_Point_Der3_S
 
-    pure function IGA_Point_Der3_V(p,U) result(V)
+    function IGA_Point_Der3_V(p,U) result(V)
       implicit none
       type(IGAPoint), intent(in) :: p
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:,:)  ! dof,nen
       V = IGA_Eval(IGA_Shape3(p),U)
     end function IGA_Point_Der3_V
 
-    pure function IGA_Point_Div(p,U) result (V)
+    function IGA_Point_Div(p,U) result (V)
       implicit none
       type(IGAPoint), intent(in) :: p
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:,:) ! dim,nen
       V = IGA_Shape_Div(IGA_Shape1(p),U)
     end function IGA_Point_Div
 
-    pure function IGA_Point_Del2_S(p,U) result (V)
+    function IGA_Point_Del2_S(p,U) result (V)
       implicit none
       type(IGAPoint), intent(in) :: p
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:) ! nen
       V = IGA_Shape_Del2_S(IGA_Shape2(p),U)
     end function IGA_Point_Del2_S
 
-    pure function IGA_Point_Del2_V(p,U) result (V)
+    function IGA_Point_Del2_V(p,U) result (V)
       implicit none
       type(IGAPoint), intent(in) :: p
       scalar (kind=IGA_SCALAR_KIND), intent(in) :: U(:,:) ! dof,nen