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