Hong,

  It was just to keep things simple. We can have an API (and a run-time option) for setting the max. number of components instead of a configure option. I can work on making this change.

 

Thanks,

Shri

From: petsc-dev <petsc-dev-bounces@mcs.anl.gov> on behalf of PETSc Development <petsc-dev@mcs.anl.gov>
Reply-To: "Zhang, Hong" <hzhang@mcs.anl.gov>
Date: Tuesday, April 6, 2021 at 4:46 PM
To: Matthew Knepley <knepley@gmail.com>, PETSc Development <petsc-dev@mcs.anl.gov>
Cc: "Abhyankar, Shrirang G" <shrirang.abhyankar@pnnl.gov>
Subject: Re: [petsc-dev] DMNetwork static sizing

 

Shri,

You designed this approach. Is it intended or out of implementation convenience at the time?

Hong


From: petsc-dev <petsc-dev-bounces@mcs.anl.gov> on behalf of Matthew Knepley <knepley@gmail.com>
Sent: Monday, April 5, 2021 5:47 AM
To: PETSc <petsc-dev@mcs.anl.gov>
Subject: [petsc-dev] DMNetwork static sizing

 

Dowe really need a configure time constant for

 

struct _p_DMNetworkComponentHeader {
  PetscInt index;    /* index for user input global edge and vertex */
  PetscInt subnetid; /* Id for subnetwork */
  PetscInt ndata;    /* number of components */
  PetscInt size[PETSC_DMNETWORK_MAXIMUM_COMPONENTS_PER_POINT];
  PetscInt key[PETSC_DMNETWORK_MAXIMUM_COMPONENTS_PER_POINT];
  PetscInt offset[PETSC_DMNETWORK_MAXIMUM_COMPONENTS_PER_POINT];
  PetscInt nvar[PETSC_DMNETWORK_MAXIMUM_COMPONENTS_PER_POINT]; /* Number of variables */
  PetscInt offsetvarrel[PETSC_DMNETWORK_MAXIMUM_COMPONENTS_PER_POINT]; /* offset from the first variable of the network point */
} PETSC_ATTRIBUTEALIGNED(PetscMax(sizeof(double),sizeof(PetscScalar)));

 

Can't we just allocate this struct when needed and carry the size along?

 

This design seem to go against the rest of what we do in PETSc?

 

  Thanks,

 

     Matt

 

--

What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener