Commits

Lisandro Dalcin committed f8612ed

Expose rational weights in IGAPoint

  • Participants
  • Parent commits 78bf794

Comments (0)

Files changed (3)

   PetscInt npd;
 
   PetscReal   *geometry;/*  [nen][nsd] */
+  PetscReal   *rational;/*  [nen]      */
   PetscScalar *property;/*  [nen][npd] */
 
   PetscReal *weight;   /*   [1]   */
  start:
 
   point->geometry = element->geometryX;
+  point->rational = element->rationalW;
   point->property = element->propertyA;
   if (!element->geometry)
     point->geometry = NULL;
+  if (!element->rational)
+    point->rational = NULL;
   if (!element->property)
     point->property = NULL;
 

src/petigaftn.F90

      integer(kind=IGA_INTEGER_KIND) :: npd
 
      type(C_PTR) :: geometry
+     type(C_PTR) :: rational
      type(C_PTR) :: property
 
      type(C_PTR) :: weight
       call c2f(p%geometry,X,(/p%nsd,p%nen/))
     end function IGA_Geometry
 
+    function IGA_Rational(p) result(W)
+      use ISO_C_BINDING, only: c2f => C_F_POINTER
+      use ISO_C_BINDING, only: nonnull => C_ASSOCIATED
+      implicit none
+      type(IGAPoint), intent(in) :: p
+      real(kind=IGA_REAL_KIND), pointer :: W(:)
+      nullify(W)
+      if (nonnull(p%rational)) &
+      call c2f(p%rational,W,(/p%nen/))
+    end function IGA_Rational
+
     function IGA_Property(p) result(A)
       use ISO_C_BINDING, only: c2f => C_F_POINTER
       use ISO_C_BINDING, only: nonnull => C_ASSOCIATED