ecp-benchmarks/smr/build-core-depleted.py
Paul Romano 2e1761c6fb Squashed commit of the following:
commit fea65f02928ed7b65b0aa88e16af0e9f308dc28e
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Mon Feb 5 09:20:20 2018 -0600

    Remove XML files and old models

commit 423b3ade32be620dab7ba6fe9c292a6ee4758e9e
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Mon Feb 5 09:10:54 2018 -0600

    Fix bug in ring generation

commit f5a3acd3d6d0eba7edf4b0c94e76aebdcaa2cd62
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Mon Feb 5 09:05:51 2018 -0600

    Add option to specify output directory

commit 0c4bca51b38bbb94fffe1d13157f693bee4dea03
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Tue Jan 23 14:50:09 2018 -0600

    Add plots for assembly

commit 2813d95ea694259bd50ae7fa19087f8652fc0bc5
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Sun Jan 21 16:08:45 2018 -0600

    Shared compositions when building assembly

commit 5ee50611df13f5df03144266d2c08f2890fdaf72
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Sun Jan 21 15:32:48 2018 -0600

    Fix build-core-fresh

commit e375ad22a7fb05def86664f5be8411ee822e23a2
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Fri Jan 19 15:51:51 2018 -0600

    Use pathlib in build-assembly and move assembly directory

commit 53d38a3b3711b44dd75313132c4122f2192df16c
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Fri Jan 19 14:39:09 2018 -0600

    Add an option to use depleted materials

commit 9c52f82bd0cd989b10938c85586caba331efa1f4
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Wed Jan 17 14:02:27 2018 -0600

    Add SMR assembly model

commit 82f60acfb3b8889d812e03eb4ee2007b2a5a501e
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Wed Jan 17 12:34:35 2018 -0600

    Add docstrings here and there

commit a957d442a8
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Wed Jan 17 12:18:11 2018 -0600

    Special treatment for a single radial/axial region in fuel pins

commit dac1af47ad
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Wed Jan 17 06:54:24 2018 -0600

    Add number of rings/axial segments as command-line options

commit c1082420e4
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Wed Jan 17 06:47:03 2018 -0600

    Use argparse in build-fresh.py

commit a20d15c0cb
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Wed Jan 17 06:27:01 2018 -0600

    Make number of rings configurable

commit 96b1ae8513
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Tue Jan 16 22:44:15 2018 -0600

    Generate pin universes within function

commit 0b1965e27f
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Tue Jan 16 22:28:44 2018 -0600

    Put geometry and reflector/assembly universes in functions

commit 337d4cff69
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Wed Nov 22 12:22:17 2017 -0600

    Make sure sleeve appears on fifth grid spacer

commit 46e379e169
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Tue Nov 14 14:54:14 2017 -0600

    Don't break up fuel region over multiple universes in z direction

commit 7e735bec85
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Fri Nov 10 11:49:36 2017 -0600

    Fix number of pellets in SMR

commit 186c525c8a
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Thu Nov 2 23:27:48 2017 -0500

    Add axial subdivision of fuel pins

commit 6762ab0237
Author: Paul Romano <paul.k.romano@gmail.com>
Date:   Fri Oct 20 07:54:57 2017 -0400

    Add ten rings in fuel
2018-02-05 09:26:05 -06:00

72 lines
2.4 KiB
Python

#!/usr/bin/env python3
import numpy as np
import opendeplete
from smr.surfaces import lattice_pitch, bottom_fuel_stack, top_active_core
from smr.core import geometry
# FIXME: Automatically extract info needed to calculate burnable cell volumes
# Fuel rod geometric parameters
radius = 0.39218
height = 200.
# Count the number of instances for each cell and material
geometry.determine_paths(instances_only=True)
# Extract all cells filled by a fuel material
fuel_cells = geometry.get_cells_by_name(
name='(1.6%) (0)', case_sensitive=True)
fuel_cells.extend(geometry.get_cells_by_name(
name='(1.6%) grid (bottom) (0)', case_sensitive=True))
fuel_cells.extend(geometry.get_cells_by_name(
name='(1.6%) grid (intermediate) (0)', case_sensitive=True))
fuel_cells.extend(geometry.get_cells_by_name(
name='(2.4%) (0)', case_sensitive=True))
fuel_cells.extend(geometry.get_cells_by_name(
name='(2.4%) grid (bottom) (0)', case_sensitive=True))
fuel_cells.extend(geometry.get_cells_by_name(
name='(2.4%) grid (intermediate) (0)', case_sensitive=True))
fuel_cells.extend(geometry.get_cells_by_name(
name='(3.1%) (0)', case_sensitive=True))
fuel_cells.extend(geometry.get_cells_by_name(
name='(3.1%) grid (bottom) (0)', case_sensitive=True))
fuel_cells.extend(geometry.get_cells_by_name(
name='(3.1%) grid (intermediate) (0)', case_sensitive=True))
# Assign distribmats for each material
for cell in fuel_cells:
cell.fill.volume = np.pi * radius**2 * height
cell.fill.depletable = True
cell.fill.temperature = 300.0
cell.fill = [cell.fill.clone() for i in range(cell.num_instances)]
# Create dt vector for 1 month with 5 day timesteps
dt1 = 5*24*60*60 # 5 days
dt2 = 1.*30*24*60*60 # 1 months
N = np.floor(dt2/dt1)
dt = np.repeat([dt1], N)
# Create settings variable
settings = opendeplete.OpenMCSettings()
settings.openmc_call = "openmc"
settings.particles = 1000000
settings.batches = 200
settings.inactive = 100
settings.lower_left = \
[-7.*lattice_pitch/2., -7.*lattice_pitch/2., bottom_fuel_stack]
settings.upper_right = \
[+7.*lattice_pitch/2., +7.*lattice_pitch/2., top_active_core]
settings.entropy_dimension = [15, 15, 1]
# MeV/second cm from CASMO
settings.power = 2.337e15 * ((17.*17.*37.) / 1.5**2) * height
settings.dt_vec = dt
settings.output_dir = 'core-depleted'
op = opendeplete.OpenMCOperator(geometry, settings)
# Perform simulation using the MCNPX/MCNP6 algorithm
opendeplete.cecm(op)