Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

enrico.xml format #87

Closed
RonRahaman opened this issue Feb 27, 2020 · 4 comments
Closed

enrico.xml format #87

RonRahaman opened this issue Feb 27, 2020 · 4 comments
Assignees
Labels
enhancement New feature or request

Comments

@RonRahaman
Copy link
Collaborator

I have some proposals for updating the format of enrico.xml. Some of them are cleanup, and some of them are relevant to the disjoint communicator scheme.

As an example, consider the current enrico.xml for the shortrod case:

<?xml version="1.0"?>
<enrico>
  <driver_transport>openmc</driver_transport>
  <driver_heatfluids>nek5000</driver_heatfluids>
  <nek5000>
    <casename>rod_l</casename>
  </nek5000>
  <communication>overlapping</communication>
  <power>16.4e3</power>
  <pressure_bc>12.7553</pressure_bc>
  <max_timesteps>1</max_timesteps>
  <max_picard_iter>4</max_picard_iter>
  <openmc_procs_per_node>1</openmc_procs_per_node>
  <epsilon>0.5</epsilon>
</enrico>

I propose changes that look like this:

<?xml version="1.0"?>
<enrico>
  <neutronics>
    <driver>openmc</driver>
    <procs_per_node>1</procs_per_node>
    <nodes>4</nodes>
  </neutronics>

  <heat_fluids>
    <driver>nek5000</driver>
    <nodes>4</nodes>
    <casename>rod_l</casename>
  </heat_fluids>

  <power>16.4e3</power>
  <pressure_bc>12.7553</pressure_bc>
  <max_timesteps>1</max_timesteps>
  <max_picard_iter>4</max_picard_iter>
  <epsilon>0.5</epsilon>
</enrico>

Here are the important bits:

  • There are separate XML elements for each driver's options
  • Each driver has tags for <nodes> and <procs_per_node> that will be used to setup the driver's communicator.
    • If <nodes> and/or <procs_per_node> are omitted (or has a value <= 0), the driver will use all available nodes and/or all available processes-per-node, respectively.
    • If <nodes> is specified, the neutronics solver will use the "left-hand" nodes (the lowermost node indices according to an arbitrary node-indexing scheme) and the heat-fluids solver will use the right-hand nodes. Note that this allows arbitrarily-overlapping communicators without having to specify a particular scheme: one special case is fully-overlapping and one special case is fully-disjoint.

The left-hand/right-hand node splitting scheme is being prototyped here and is working well so far. This XML format proposal will correspond nicely to this.

@RonRahaman RonRahaman added the enhancement New feature or request label Feb 27, 2020
@RonRahaman RonRahaman assigned RonRahaman and unassigned paulromano Feb 27, 2020
@paulromano
Copy link
Member

Yes, I like it! @sphamil does this sound good to you?

@sphamil
Copy link
Contributor

sphamil commented Feb 28, 2020

Yes, this looks great!

@RonRahaman
Copy link
Collaborator Author

I also want to consistently refer to the heat/fluids driver as either the "heat", "heat_fluids", or "heatfluids" driver. It's not very consistent right now. For example:

  • The element for specifying the driver is <driver_heatfluids> (see here)
  • The value of <denisty_ic> is expected to be "heat", not "heatfluids" (see here). Likewise, the Initial enum has the value heat (see here)

I'd like to use "heat" everywhere (not "heatfluids" or "heat_fluids"). It's shorter and you won't have to remember whether to use an underscore or not, which I think is important in writing an input file. Is that okay?

@RonRahaman RonRahaman mentioned this issue Mar 5, 2020
@RonRahaman
Copy link
Collaborator Author

Fixed in #88

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants