<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<br class="">
<div><br class="">
<blockquote type="cite" class="">
<div class="">On 4 May 2019, at 00:27, Smith, Barry F. <<a href="mailto:bsmith@mcs.anl.gov" class="">bsmith@mcs.anl.gov</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class=""><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<blockquote type="cite" style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
On May 3, 2019, at 4:22 PM, Hapla Vaclav <<a href="mailto:vaclav.hapla@erdw.ethz.ch" class="">vaclav.hapla@erdw.ethz.ch</a>> wrote:<br class="">
<br class="">
<br class="">
<br class="">
<blockquote type="cite" class="">On 2 May 2019, at 23:41, Smith, Barry F. <<a href="mailto:bsmith@mcs.anl.gov" class="">bsmith@mcs.anl.gov</a>> wrote:<br class="">
<br class="">
<br class="">
<br class="">
<blockquote type="cite" class="">On May 2, 2019, at 2:00 PM, Hapla Vaclav <<a href="mailto:vaclav.hapla@erdw.ethz.ch" class="">vaclav.hapla@erdw.ethz.ch</a>> wrote:<br class="">
<br class="">
<br class="">
<br class="">
<blockquote type="cite" class="">On 2 May 2019, at 20:17, Hapla Vaclav <<a href="mailto:vaclav.hapla@erdw.ethz.ch" class="">vaclav.hapla@erdw.ethz.ch</a>> wrote:<br class="">
<br class="">
<br class="">
<br class="">
<blockquote type="cite" class="">On 2 May 2019, at 18:20, Jed Brown <<a href="mailto:jed@jedbrown.org" class="">jed@jedbrown.org</a>> wrote:<br class="">
<br class="">
Matthew Knepley <<a href="mailto:knepley@gmail.com" class="">knepley@gmail.com</a>> writes:<br class="">
<br class="">
<blockquote type="cite" class="">On Thu, May 2, 2019 at 12:02 AM Jed Brown <<a href="mailto:jed@jedbrown.org" class="">jed@jedbrown.org</a>> wrote:<br class="">
<br class="">
<blockquote type="cite" class="">Matthew Knepley <<a href="mailto:knepley@gmail.com" class="">knepley@gmail.com</a>> writes:<br class="">
<br class="">
<blockquote type="cite" class="">On Wed, May 1, 2019 at 8:56 PM Smith, Barry F. <<a href="mailto:bsmith@mcs.anl.gov" class="">bsmith@mcs.anl.gov</a>><br class="">
</blockquote>
wrote:<br class="">
<blockquote type="cite" class=""><br class="">
<blockquote type="cite" class=""><br class="">
I don't think Layout (or Map as it used to be called) was ever in<br class="">
</blockquote>
</blockquote>
sys. I<br class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">just looked at the new offending code, it definitely doesn't belong in<br class="">
</blockquote>
</blockquote>
sys.<br class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">How did it get passed the code reviews? And strange that it didn't get<br class="">
detected by the nightlies as soon as it was incorrectly merged into<br class="">
</blockquote>
</blockquote>
master?<br class="">
<blockquote type="cite" class="">
<blockquote type="cite" class=""><br class="">
</blockquote>
<br class="">
I cannot understand why you think Layout does not belong in Sys. It is<br class="">
nothing more than a partition, which is not tied to a Vec, or anything.<br class="">
</blockquote>
<br class="">
PetscSF is not associated with Vec, but still lives in src/vec/.<br class="">
<br class="">
</blockquote>
<br class="">
I did not put it there.<br class="">
</blockquote>
<br class="">
Barry put it there six years ago.<br class="">
<br class="">
<a href="https://bitbucket.org/petsc/petsc/commits/95fce210c9a5323d60d47a8c3b992a28141ecb57" class="">https://bitbucket.org/petsc/petsc/commits/95fce210c9a5323d60d47a8c3b992a28141ecb57</a><br class="">
<br class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">The concept of partitioning problem-sized data doesn't really exist in<br class="">
src/sys/ apart from PetscSplitOwnership(), which is much more raw than<br class="">
PetscLayout and could arguably move to src/vec/.<br class="">
<br class="">
</blockquote>
<br class="">
In the opposite way, I would say it makes more sense to group<br class="">
SplitOwnership, Section, SF<br class="">
in a separate place apart from Vec, like an IS library.<br class="">
</blockquote>
<br class="">
I don't see the point; you'd be hard-pressed to split petscvec from<br class="">
petscis without circular dependencies.  The concept of global indexing<br class="">
is closer to Vec than the (rank, offset) indexing of SF (which is why I<br class="">
put SF in sys/ to begin with), but they all involve problem-sized<br class="">
distribution concepts.<br class="">
</blockquote>
<br class="">
Section, SF and Layout are completely separate concepts and classes and they have nothing to do with vector. For example Layout is used by Vec, IS and Mat equally. Section mainly by DM. I seem to agree with Matt.<br class="">
<br class="">
Even vec/is doesn't make sense. I never got this directory tree. Is there a motivation to lower the number of directories in src?<br class="">
</blockquote>
<br class="">
This is the class directory structure under src/vec:<br class="">
./pf<br class="">
./vscat<br class="">
./is<br class="">
./is/sf<br class="">
./is/ao<br class="">
./is/is<br class="">
./is/is/utils<br class="">
./is/utils<br class="">
./vec<br class="">
./vec/utils<br class="">
./vec/utils/tagger<br class="">
./vec/utils/matlab<br class="">
<br class="">
I really think it is broken. It raises questions like: How SF and IS are related? What's the difference between vec/is and vec/is/is? Between vec/is/utils and vec/is/is/utils? Etc.<br class="">
<br class="">
What about having something like<br class="">
src/vec<br class="">
src/vec/vscat<br class="">
src/vec/tagger<br class="">
src/vec/matlab<br class="">
src/vec/pf<br class="">
src/is<br class="">
src/is/ao<br class="">
src/is/ltog<br class="">
src/utils/layout<br class="">
src/utils/section<br class="">
src/utils/sf<br class="">
<br class="">
The last three could have a common header file petscutils.h.<br class="">
<br class="">
The header inclusion hierarchy would be<br class="">
petscsys.h<br class="">
petscutils.h<br class="">
petscis.h<br class="">
petscvec.h<br class="">
petscmat.h<br class="">
<br class="">
</blockquote>
<br class="">
 Utils is a meaningless term, it could be mean anything. I think that having both utils and is is too fine a granularity and unnecessary, just one level that captures layout, is, sf, section should be fine. What to call it? For lack of a better name and historic
 reasons maybe is?  <br class="">
</blockquote>
<br class="">
If we're going to update this directory subtree, I would personally love to avoid repeating the same name at two different levels.<br class="">
</blockquote>
<br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">  Good
 point.</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<blockquote type="cite" style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<br class="">
What these classes have in common is they map indices to indices (even IS can be considered a mapping from 0,1,... to arbitrary index sequence).<br class="">
So I would suggest<br class="">
index<br class="">
idx<br class="">
</blockquote>
<br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class=""> I
 got in trouble before from the mathematicians for using the word map, (Map used to be the name of PetscLayout) so I want to avoid that.</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
</div>
</blockquote>
<div><br class="">
</div>
<div>OK, so index, idx, other idea?</div>
<div><br class="">
</div>
<div>If we would have layout, is, sf, section in the same subdir, I would move there also ao and ltog.</div>
<div><br class="">
</div>
<div>What about the headers - I guess having all those classes in one would be easier to handle and avoid circular dependencies, and would reflect the directory structure. But should we keep separate petsc{ao,is,sf}.h, then I would suggest also separate petsc{layout,section,ltog}.h</div>
<div><br class="">
</div>
<div>When we are at it, why we sometimes have <class>types.h and sometimes not?</div>
<div><br class="">
</div>
<div>Vaclav</div>
<div><br class="">
</div>
<div>(added CC to petsc-dev)</div>
<br class="">
<blockquote type="cite" class="">
<div class=""><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
<blockquote type="cite" style="font-family: Menlo-Regular; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">
map<br class="">
imap<br class="">
idxmap<br class="">
... or something alike.<br class="">
<br class="">
Vaclav<br class="">
<br class="">
<blockquote type="cite" class="">
<blockquote type="cite" class=""><br class="">
Vaclav<br class="">
<br class="">
<blockquote type="cite" class=""><br class="">
Why not at lest make an additional level between Sys and Vec for those sectioning utilities? Would make more sense to me.<br class="">
<br class="">
Vaclav</blockquote>
</blockquote>
</blockquote>
</blockquote>
</div>
</blockquote>
</div>
<br class="">
</body>
</html>