From bd64005ae7c8dce7403741224de7a0a554f5d894 Mon Sep 17 00:00:00 2001
From: Ilham Variansyah <variansi@oregonstate.edu>
Date: Sat, 17 Aug 2024 17:25:10 +0700
Subject: [PATCH 1/2] remove dsm temporarily

---
 mcdc/__init__.py                      |   1 -
 mcdc/card.py                          |   7 -
 mcdc/global_.py                       |   3 -
 mcdc/input_.py                        |  73 +----
 mcdc/kernel.py                        | 429 ++------------------------
 mcdc/loop.py                          |  10 -
 mcdc/main.py                          |   8 +-
 mcdc/type_.py                         |  58 +---
 test/regression/dsm_azurv1/answer.h5  | Bin 265800 -> 0 bytes
 test/regression/dsm_azurv1/input.py   |  37 ---
 test/regression/dsm_lattice/answer.h5 | Bin 205048 -> 0 bytes
 test/regression/dsm_lattice/c5g7.h5   | Bin 49104 -> 0 bytes
 test/regression/dsm_lattice/input.py  |  49 ---
 13 files changed, 37 insertions(+), 638 deletions(-)
 delete mode 100644 test/regression/dsm_azurv1/answer.h5
 delete mode 100644 test/regression/dsm_azurv1/input.py
 delete mode 100644 test/regression/dsm_lattice/answer.h5
 delete mode 100644 test/regression/dsm_lattice/c5g7.h5
 delete mode 100644 test/regression/dsm_lattice/input.py

diff --git a/mcdc/__init__.py b/mcdc/__init__.py
index c902b276..c36bea2c 100644
--- a/mcdc/__init__.py
+++ b/mcdc/__init__.py
@@ -18,7 +18,6 @@
     iQMC,
     weight_roulette,
     IC_generator,
-    dsm,
     uq,
     reset,
     domain_decomposition,
diff --git a/mcdc/card.py b/mcdc/card.py
index fa53a1fa..3a989e55 100644
--- a/mcdc/card.py
+++ b/mcdc/card.py
@@ -54,9 +54,6 @@ def __init__(self, G=1, J=0):
         self.chi_s = np.zeros([G, G])
         self.chi_p = np.zeros([G, G])
         self.chi_d = np.zeros([J, G])
-        self.sensitivity = False
-        self.sensitivity_ID = 0
-        self.dsm_Np = 1.0
         self.uq = False
         self.flags = []
         self.distribution = ""
@@ -85,7 +82,6 @@ def __init__(self, N_nuclide, G=1, J=0):
         self.nu_f = np.zeros(G)
         self.chi_s = np.zeros([G, G])
         self.chi_p = np.zeros([G, G])
-        self.sensitivity = False
         self.uq = False
         self.flags = []
         self.distribution = ""
@@ -167,9 +163,6 @@ def __init__(self):
         self.nx = 0.0
         self.ny = 0.0
         self.nz = 0.0
-        self.sensitivity = False
-        self.sensitivity_ID = 0
-        self.dsm_Np = 1.0
 
     def _create_halfspace(self, positive):
         region = RegionCard("halfspace")
diff --git a/mcdc/global_.py b/mcdc/global_.py
index 7de89fbb..8df838f7 100644
--- a/mcdc/global_.py
+++ b/mcdc/global_.py
@@ -78,8 +78,6 @@ def reset(self):
             # Below are parameters not copied to mcdc.setting
             "bank_active_buff": 100,
             "bank_census_buff": 1.0,
-            # TODO: Move to technique
-            "N_sensitivity": 0,
         }
 
         self.technique = {
@@ -158,7 +156,6 @@ def reset(self):
             "IC_precursor_density_max": 0.0,
             "IC_cycle_stretch": 1.0,
             "branchless_collision": False,
-            "dsm_order": 1,
             "uq": False,
         }
 
diff --git a/mcdc/input_.py b/mcdc/input_.py
index 02c14c77..b40e92f3 100644
--- a/mcdc/input_.py
+++ b/mcdc/input_.py
@@ -52,8 +52,6 @@ def nuclide(
     chi_d=None,
     speed=None,
     decay=None,
-    sensitivity=False,
-    dsm_Np=1.0,
 ):
     """
     Create a nuclide
@@ -80,11 +78,6 @@ def nuclide(
         Energy group speed [cm/s].
     decay : numpy.ndarray (1D), optional
         Precursor group decay constant [/s].
-    sensitivity : bool, optional
-        Set to `True` to calculate sensitivities to the nuclide.
-    dsm_Np : float
-        Average number of derivative particles produced at each
-        sensitivity nuclide collision.
 
     Returns
     -------
@@ -208,20 +201,6 @@ def nuclide(
             if np.sum(card.chi_d[dg, :]) > 0.0:
                 card.chi_d[dg, :] /= np.sum(card.chi_d[dg, :])
 
-    # Sensitivity setup
-    if sensitivity:
-        # Set flag
-        card.sensitivity = True
-        global_.input_deck.technique["sensitivity"] = True
-        global_.input_deck.technique["weighted_emission"] = False
-
-        # Set ID
-        global_.input_deck.setting["N_sensitivity"] += 1
-        card.sensitivity_ID = global_.input_deck.setting["N_sensitivity"]
-
-        # Set dsm_Np
-        card.dsm_Np = dsm_Np
-
     # Add to deck
     global_.input_deck.nuclides.append(card)
 
@@ -240,8 +219,6 @@ def material(
     chi_d=None,
     speed=None,
     decay=None,
-    sensitivity=False,
-    dsm_Np=1.0,
 ):
     """
     Create a material
@@ -273,12 +250,6 @@ def material(
         Energy group speed [cm/s].
     decay : numpy.ndarray (1D), optional
         Precursor group decay constant [/s].
-    sensitivity : bool, optional
-        Set to `True` to calculate sensitivities to the material
-        (only relevant for single-nuclide material).
-    dsm_Np : float
-        Average number of derivative particles produced at each
-        sensitivity material collision (only relevant for single_nuclide material).
 
     Returns
     -------
@@ -303,8 +274,6 @@ def material(
             chi_d,
             speed,
             decay,
-            sensitivity,
-            dsm_Np,
         )
         nuclides = [[card_nuclide, 1.0]]
 
@@ -379,7 +348,7 @@ def material(
     # Set ID
     card.ID = len(global_.input_deck.materials)
 
-    # Calculate basic XS and determine sensitivity flag
+    # Calculate basic XS
     for i in range(N_nuclide):
         nuc = nuclides[i][0]
         density = nuclides[i][1]
@@ -390,8 +359,6 @@ def material(
         card.scatter += nuc.scatter * density
         card.fission += nuc.fission * density
         card.total += nuc.total * density
-        card.sensitivity += nuc.sensitivity * density
-    card.sensitivity = bool(card.sensitivity)
 
     # Calculate effective speed
     # Current approach: weighted by nuclide macroscopic total cross section
@@ -450,7 +417,7 @@ def material(
     return card
 
 
-def surface(type_, bc="interface", sensitivity=False, dsm_Np=1.0, **kw):
+def surface(type_, bc="interface", **kw):
     """
     Create a surface to define the region of a cell.
 
@@ -461,11 +428,6 @@ def surface(type_, bc="interface", sensitivity=False, dsm_Np=1.0, **kw):
         Surface type.
     bc : {"interface", "vacuum", "reflective"}
         Surface boundary condition.
-    sensitivity : bool, optional
-        Set to `True` to calculate sensitivities to the surface position.
-    dsm_Np : int
-        Average number of derivative particles produced at each
-        sensitivity surface crossing.
 
     Other Parameters
     ----------------
@@ -538,20 +500,6 @@ def surface(type_, bc="interface", sensitivity=False, dsm_Np=1.0, **kw):
     )
     card.boundary_type = bc
 
-    # Sensitivity
-    if sensitivity:
-        # Set flag
-        card.sensitivity = True
-        global_.input_deck.technique["sensitivity"] = True
-        global_.input_deck.technique["weighted_emission"] = False
-
-        # Set ID
-        global_.input_deck.setting["N_sensitivity"] += 1
-        card.sensitivity_ID = global_.input_deck.setting["N_sensitivity"]
-
-        # Set dsm_Np
-        card.dsm_Np = dsm_Np
-
     # ==========================================================================
     # Surface attributes
     # ==========================================================================
@@ -1776,22 +1724,6 @@ def IC_generator(
     card_setting["N_active"] = N_cycle
 
 
-def dsm(order=1):
-    """
-    Direct sensitivity method
-
-    Parameters
-    ----------
-    order : int, optional
-        order of the sensitivity to probe, by default 1
-    """
-
-    card = global_.input_deck.technique
-    if order > 2:
-        print_error("DSM currently only supports up to second-order sensitivities")
-    card["dsm_order"] = order
-
-
 def uq(**kw):
     """
     Activate uncertainty quantification.
@@ -1950,7 +1882,6 @@ def make_particle_bank(size):
         ("g", np.uint64),
         ("E", np.float64),
         ("w", np.float64),
-        ("sensitivity_ID", np.int64),
         ("rng_seed", np.uint64),
     ]
     iqmc_struct = [("w", np.float64, (1,))]
diff --git a/mcdc/kernel.py b/mcdc/kernel.py
index a02f321f..8992beb0 100644
--- a/mcdc/kernel.py
+++ b/mcdc/kernel.py
@@ -654,7 +654,6 @@ def source_particle_dd(seed, mcdc):
     P["uz"] = uz
     P["g"] = g
     P["w"] = 1
-    P["sensitivity_ID"] = 0
     return P
 
 
@@ -909,8 +908,6 @@ def source_particle(seed, mcdc):
     P["E"] = E
     P["w"] = 1.0
 
-    P["sensitivity_ID"] = 0
-
     return P
 
 
@@ -987,7 +984,6 @@ def get_particle(P, bank, mcdc):
         P["iqmc"]["w"] = P_rec["iqmc"]["w"]
 
     P["alive"] = True
-    P["sensitivity_ID"] = P_rec["sensitivity_ID"]
 
     # Set default IDs and event
     P["material_ID"] = -1
@@ -1644,7 +1640,6 @@ def copy_recordlike(P_new, P):
     P_new["E"] = P["E"]
     P_new["w"] = P["w"]
     P_new["rng_seed"] = P["rng_seed"]
-    P_new["sensitivity_ID"] = P["sensitivity_ID"]
     P_new["iqmc"]["w"] = P["iqmc"]["w"]
     copy_track_data(P_new, P)
 
@@ -1687,7 +1682,6 @@ def copy_particle(P_new, P):
     P_new["surface_ID"] = P["surface_ID"]
     P_new["translation"] = P["translation"]
     P_new["event"] = P["event"]
-    P_new["sensitivity_ID"] = P["sensitivity_ID"]
     P_new["rng_seed"] = P["rng_seed"]
     P_new["iqmc"]["w"] = P["iqmc"]["w"]
     copy_track_data(P_new, P)
@@ -2175,7 +2169,6 @@ def score_tracklength(P, distance, mcdc):
     material = mcdc["materials"][P["material_ID"]]
 
     # Get indices
-    s = P["sensitivity_ID"]
     t, x, y, z, outside = mesh_get_index(P, tally["mesh"])
     mu, azi = mesh_get_angular_index(P, tally["mesh"])
     g, outside_energy = mesh_get_energy_index(P, tally["mesh"], mcdc)
@@ -2187,20 +2180,20 @@ def score_tracklength(P, distance, mcdc):
     # Score
     flux = distance * P["w"]
     if tally["flux"]:
-        score_flux(s, g, t, x, y, z, mu, azi, flux, tally["score"]["flux"])
+        score_flux(g, t, x, y, z, mu, azi, flux, tally["score"]["flux"])
     if tally["density"]:
         flux /= get_particle_speed(P, mcdc)
-        score_flux(s, g, t, x, y, z, mu, azi, flux, tally["score"]["density"])
+        score_flux(g, t, x, y, z, mu, azi, flux, tally["score"]["density"])
     if tally["fission"]:
         flux *= get_MacroXS(XS_FISSION, material, P, mcdc)
-        score_flux(s, g, t, x, y, z, mu, azi, flux, tally["score"]["fission"])
+        score_flux(g, t, x, y, z, mu, azi, flux, tally["score"]["fission"])
     if tally["total"]:
         flux *= get_MacroXS(XS_TOTAL, material, P, mcdc)
-        score_flux(s, g, t, x, y, z, mu, azi, flux, tally["score"]["total"])
+        score_flux(g, t, x, y, z, mu, azi, flux, tally["score"]["total"])
     if tally["current"]:
-        score_current(s, g, t, x, y, z, flux, P, tally["score"]["current"])
+        score_current(g, t, x, y, z, flux, P, tally["score"]["current"])
     if tally["eddington"]:
-        score_eddington(s, g, t, x, y, z, flux, P, tally["score"]["eddington"])
+        score_eddington(g, t, x, y, z, flux, P, tally["score"]["eddington"])
 
 
 @njit
@@ -2208,7 +2201,6 @@ def score_exit(P, x, mcdc):
     tally = mcdc["tally"]
     material = mcdc["materials"][P["material_ID"]]
 
-    s = P["sensitivity_ID"]
     mu, azi = mesh_get_angular_index(P, tally["mesh"])
     g, outside_energy = mesh_get_energy_index(P, tally["mesh"], mcdc)
 
@@ -2218,27 +2210,27 @@ def score_exit(P, x, mcdc):
 
     # Score
     flux = P["w"] / abs(P["ux"])
-    score_flux(s, g, 0, x, 0, 0, mu, azi, flux, tally["score"]["exit"])
+    score_flux(g, 0, x, 0, 0, mu, azi, flux, tally["score"]["exit"])
 
 
 @njit
-def score_flux(s, g, t, x, y, z, mu, azi, flux, score):
+def score_flux(g, t, x, y, z, mu, azi, flux, score):
     # score["bin"][s, g, t, x, y, z, mu, azi] += flux
-    adapt.global_add(score["bin"], (s, g, t, x, y, z, mu, azi), flux)
+    adapt.global_add(score["bin"], (g, t, x, y, z, mu, azi), flux)
 
 
 @njit
-def score_current(s, g, t, x, y, z, flux, P, score):
+def score_current(g, t, x, y, z, flux, P, score):
     # score["bin"][s, g, t, x, y, z, 0] += flux * P["ux"]
     # score["bin"][s, g, t, x, y, z, 1] += flux * P["uy"]
     # score["bin"][s, g, t, x, y, z, 2] += flux * P["uz"]
-    adapt.global_add(score["bin"], (s, g, t, x, y, z, 0), flux * P["ux"])
-    adapt.global_add(score["bin"], (s, g, t, x, y, z, 1), flux * P["uy"])
-    adapt.global_add(score["bin"], (s, g, t, x, y, z, 2), flux * P["uz"])
+    adapt.global_add(score["bin"], (g, t, x, y, z, 0), flux * P["ux"])
+    adapt.global_add(score["bin"], (g, t, x, y, z, 1), flux * P["uy"])
+    adapt.global_add(score["bin"], (g, t, x, y, z, 2), flux * P["uz"])
 
 
 @njit
-def score_eddington(s, g, t, x, y, z, flux, P, score):
+def score_eddington(g, t, x, y, z, flux, P, score):
     ux = P["ux"]
     uy = P["uy"]
     uz = P["uz"]
@@ -2248,12 +2240,12 @@ def score_eddington(s, g, t, x, y, z, flux, P, score):
     # score["bin"][s, g, t, x, y, z, 3] += flux * uy * uy
     # score["bin"][s, g, t, x, y, z, 4] += flux * uy * uz
     # score["bin"][s, g, t, x, y, z, 5] += flux * uz * uz
-    adapt.global_add(score["bin"], (s, g, t, x, y, z, 0), flux * ux * ux)
-    adapt.global_add(score["bin"], (s, g, t, x, y, z, 1), flux * ux * uy)
-    adapt.global_add(score["bin"], (s, g, t, x, y, z, 2), flux * ux * uz)
-    adapt.global_add(score["bin"], (s, g, t, x, y, z, 3), flux * uy * uy)
-    adapt.global_add(score["bin"], (s, g, t, x, y, z, 4), flux * uy * uz)
-    adapt.global_add(score["bin"], (s, g, t, x, y, z, 5), flux * uz * uz)
+    adapt.global_add(score["bin"], (g, t, x, y, z, 0), flux * ux * ux)
+    adapt.global_add(score["bin"], (g, t, x, y, z, 1), flux * ux * uy)
+    adapt.global_add(score["bin"], (g, t, x, y, z, 2), flux * ux * uz)
+    adapt.global_add(score["bin"], (g, t, x, y, z, 3), flux * uy * uy)
+    adapt.global_add(score["bin"], (g, t, x, y, z, 4), flux * uy * uz)
+    adapt.global_add(score["bin"], (g, t, x, y, z, 5), flux * uz * uz)
 
 
 @njit
@@ -2800,9 +2792,6 @@ def surface_crossing(P, prog):
     # Small shift to ensure crossing
     surface_shift(P, surface, trans, mcdc)
 
-    # Record old material for sensitivity quantification
-    material_ID_old = P["material_ID"]
-
     # Tally particle exit
     if mcdc["tally"]["exit"] and not P["alive"]:
         # Reflectance if P["surface_ID"] == 0, else transmittance
@@ -2818,17 +2807,6 @@ def surface_crossing(P, prog):
             trans = trans_struct["values"]
             P["cell_ID"] = get_particle_cell(P, UNIVERSE_ROOT, trans, mcdc)
 
-    # Sensitivity quantification for surface?
-    if surface["sensitivity"] and (
-        P["sensitivity_ID"] == 0
-        or mcdc["technique"]["dsm_order"] == 2
-        and P["sensitivity_ID"] <= mcdc["setting"]["N_sensitivity"]
-    ):
-        material_ID_new = get_particle_material(P, mcdc)
-        if material_ID_old != material_ID_new:
-            # Sample derivative source particles
-            sensitivity_surface(P, surface, material_ID_old, material_ID_new, prog)
-
 
 # =============================================================================
 # Collision
@@ -2940,7 +2918,6 @@ def sample_phasespace_scattering(P, material, P_new, mcdc):
     P_new["y"] = P["y"]
     P_new["z"] = P["z"]
     P_new["t"] = P["t"]
-    P_new["sensitivity_ID"] = P["sensitivity_ID"]
 
     if mcdc["setting"]["mode_MG"]:
         scattering_MG(P, material, P_new)
@@ -2955,7 +2932,6 @@ def sample_phasespace_scattering_nuclide(P, nuclide, P_new, mcdc):
     P_new["y"] = P["y"]
     P_new["z"] = P["z"]
     P_new["t"] = P["t"]
-    P_new["sensitivity_ID"] = P["sensitivity_ID"]
 
     scattering_MG(P, nuclide, P_new)
 
@@ -3230,7 +3206,6 @@ def sample_phasespace_fission(P, material, P_new, mcdc):
     P_new["y"] = P["y"]
     P_new["z"] = P["z"]
     P_new["t"] = P["t"]
-    P_new["sensitivity_ID"] = P["sensitivity_ID"]
 
     # Sample isotropic direction
     P_new["ux"], P_new["uy"], P_new["uz"] = sample_isotropic_direction(P_new)
@@ -3291,7 +3266,6 @@ def sample_phasespace_fission_nuclide(P, nuclide, P_new, mcdc):
     P_new["y"] = P["y"]
     P_new["z"] = P["z"]
     P_new["t"] = P["t"]
-    P_new["sensitivity_ID"] = P["sensitivity_ID"]
 
     # Sample isotropic direction
     P_new["ux"], P_new["uy"], P_new["uz"] = sample_isotropic_direction(P_new)
@@ -3516,346 +3490,6 @@ def weight_roulette(P, mcdc):
         P["alive"] = False
 
 
-# ==============================================================================
-# Sensitivity quantification (Derivative Source Method)
-# =============================================================================
-
-
-@njit
-def sensitivity_surface(P, surface, material_ID_old, material_ID_new, prog):
-
-    mcdc = adapt.device(prog)
-
-    # Sample number of derivative sources
-    xi = surface["dsm_Np"]
-    if xi != 1.0:
-        Np = int(math.floor(xi + rng(P)))
-    else:
-        Np = 1
-
-    # Terminate and put the current particle into the secondary bank
-    P["alive"] = False
-    adapt.add_active(copy_record(P), prog)
-
-    # Get sensitivity ID
-    ID = surface["sensitivity_ID"]
-    if mcdc["technique"]["dsm_order"] == 2:
-        ID1 = min(P["sensitivity_ID"], ID)
-        ID2 = max(P["sensitivity_ID"], ID)
-        ID = get_DSM_ID(ID1, ID2, mcdc["setting"]["N_sensitivity"])
-
-    # Get materials
-    material_old = mcdc["materials"][material_ID_old]
-    material_new = mcdc["materials"][material_ID_new]
-
-    # Determine the plus and minus components and then their weight signs
-    trans = P["translation"]
-    sign_origin = surface_normal_component(P, surface, trans)
-    if sign_origin > 0.0:
-        # New is +, old is -
-        sign_new = -1.0
-        sign_old = 1.0
-    else:
-        sign_new = 1.0
-        sign_old = -1.0
-
-    # Get XS
-    g = P["g"]
-    SigmaT_old = material_old["total"][g]
-    SigmaT_new = material_new["total"][g]
-    SigmaS_old = material_old["scatter"][g]
-    SigmaS_new = material_new["scatter"][g]
-    SigmaF_old = material_old["fission"][g]
-    SigmaF_new = material_new["fission"][g]
-    nu_s_old = material_old["nu_s"][g]
-    nu_s_new = material_new["nu_s"][g]
-    nu_old = material_old["nu_f"][g]
-    nu_new = material_new["nu_f"][g]
-    nuSigmaS_old = nu_s_old * SigmaS_old
-    nuSigmaS_new = nu_s_new * SigmaS_new
-    nuSigmaF_old = nu_old * SigmaF_old
-    nuSigmaF_new = nu_new * SigmaF_new
-
-    # Get source type probabilities
-    delta = -(SigmaT_old * sign_old + SigmaT_new * sign_new)
-    scatter = nuSigmaS_old * sign_old + nuSigmaS_new * sign_new
-    fission = nuSigmaF_old * sign_old + nuSigmaF_new * sign_new
-    p_delta = abs(delta)
-    p_scatter = abs(scatter)
-    p_fission = abs(fission)
-    p_total = p_delta + p_scatter + p_fission
-
-    # Get inducing flux
-    #   Apply constant flux approximation for tangent direction
-    #   [Dupree 2002, Eq. (7.39)]
-    mu = abs(sign_origin)
-    epsilon = 0.01
-    if mu < epsilon:
-        mu = epsilon / 2
-    flux = P["w"] / mu
-
-    # Base weight
-    w_hat = p_total * flux / xi
-
-    # Sample the derivative sources
-    for n in range(Np):
-        # Create new particle
-        P_new = split_particle(P)
-
-        # Sample source type
-        xi = rng(P) * p_total
-        tot = p_delta
-        if tot > xi:
-            # Delta source
-            sign_delta = delta / p_delta
-            P_new["w"] = w_hat * sign_delta
-        else:
-            tot += p_scatter
-            if tot > xi:
-                # Scattering source
-                total_scatter = nuSigmaS_old + nuSigmaS_new
-                w_s = w_hat * total_scatter / p_scatter
-
-                # Sample if it is from + or - component
-                if nuSigmaS_old > rng(P) * total_scatter:
-                    sample_phasespace_scattering(P, material_old, P_new, mcdc)
-                    P_new["w"] = w_s * sign_old
-                else:
-                    sample_phasespace_scattering(P, material_new, P_new, mcdc)
-                    P_new["w"] = w_s * sign_new
-            else:
-                # Fission source
-                total_fission = nuSigmaF_old + nuSigmaF_new
-                w_f = w_hat * total_fission / p_fission
-
-                # Sample if it is from + or - component
-                if nuSigmaF_old > rng(P) * total_fission:
-                    sample_phasespace_fission(P, material_old, P_new, mcdc)
-                    P_new["w"] = w_f * sign_old
-                else:
-                    sample_phasespace_fission(P, material_new, P_new, mcdc)
-                    P_new["w"] = w_f * sign_new
-
-        # Assign sensitivity_ID
-        P_new["sensitivity_ID"] = ID
-
-        # Shift back if needed to ensure crossing
-        sign = surface_normal_component(P_new, surface, trans)
-        if sign_origin * sign > 0.0:
-            # Get surface normal
-            nx, ny, nz = surface_normal(P_new, surface, trans)
-
-            # The shift
-            if sign > 0.0:
-                P_new["x"] -= nx * 2 * SHIFT
-                P_new["y"] -= ny * 2 * SHIFT
-                P_new["z"] -= nz * 2 * SHIFT
-            else:
-                P_new["x"] += nx * 2 * SHIFT
-                P_new["y"] += ny * 2 * SHIFT
-                P_new["z"] += nz * 2 * SHIFT
-
-        # Put the current particle into the secondary bank
-        adapt.add_active(P_new, prog)
-
-    # Sample potential second-order sensitivity particles?
-    if mcdc["technique"]["dsm_order"] < 2 or P["sensitivity_ID"] > 0:
-        return
-
-    # Get total probability
-    p_total = 0.0
-    for material in [material_new, material_old]:
-        if material["sensitivity"]:
-            N_nuclide = material["N_nuclide"]
-            for i in range(N_nuclide):
-                nuclide = mcdc["nuclides"][material["nuclide_IDs"][i]]
-                if nuclide["sensitivity"]:
-                    sigmaT = nuclide["total"][g]
-                    sigmaS = nuclide["scatter"][g]
-                    sigmaF = nuclide["fission"][g]
-                    nu_s = nuclide["nu_s"][g]
-                    nu = nuclide["nu_f"][g]
-                    nusigmaS = nu_s * sigmaS
-                    nusigmaF = nu * sigmaF
-                    total = sigmaT + nusigmaS + nusigmaF
-                    p_total += total
-
-    # Base weight
-    w = p_total * flux / surface["dsm_Np"]
-
-    # Sample source
-    for n in range(Np):
-        source_obtained = False
-
-        # Create new particle
-        P_new = split_particle(P)
-
-        # Sample term
-        xi = rng(P_new) * p_total
-        tot = 0.0
-
-        for idx in range(2):
-
-            if idx == 0:
-                material_ID = material_ID_old
-                sign = sign_old
-            else:
-                material_ID = material_ID_new
-                sign = sign_new
-
-            material = mcdc["materials"][material_ID]
-            if material["sensitivity"]:
-                N_nuclide = material["N_nuclide"]
-                for i in range(N_nuclide):
-                    nuclide = mcdc["nuclides"][material["nuclide_IDs"][i]]
-                    if nuclide["sensitivity"]:
-                        # Source ID
-                        ID1 = min(nuclide["sensitivity_ID"], surface["sensitivity_ID"])
-                        ID2 = max(nuclide["sensitivity_ID"], surface["sensitivity_ID"])
-                        ID_source = get_DSM_ID(
-                            ID1, ID2, mcdc["setting"]["N_sensitivity"]
-                        )
-
-                        sigmaT = nuclide["total"][g]
-                        sigmaS = nuclide["scatter"][g]
-                        sigmaF = nuclide["fission"][g]
-                        nu_s = nuclide["nu_s"][g]
-                        nu = nuclide["nu_f"][g]
-                        nusigmaS = nu_s * sigmaS
-                        nusigmaF = nu * sigmaF
-
-                        tot += sigmaT
-                        if tot > xi:
-                            # Delta source
-                            P_new["w"] = -w * sign
-                            P_new["sensitivity_ID"] = ID_source
-                            adapt.add_active(P_new, prog)
-                            source_obtained = True
-                        else:
-                            P_new["w"] = w * sign
-
-                            tot += nusigmaS
-                            if tot > xi:
-                                # Scattering source
-                                sample_phasespace_scattering_nuclide(
-                                    P, nuclide, P_new, mcdc
-                                )
-                                P_new["sensitivity_ID"] = ID_source
-                                adapt.add_active(P_new, prog)
-                                source_obtained = True
-                            else:
-                                tot += nusigmaF
-                                if tot > xi:
-                                    # Fission source
-                                    sample_phasespace_fission_nuclide(
-                                        P, nuclide, P_new, mcdc
-                                    )
-                                    P_new["sensitivity_ID"] = ID_source
-                                    adapt.add_active(P_new, prog)
-                                    source_obtained = True
-                    if source_obtained:
-                        break
-                if source_obtained:
-                    break
-
-
-@njit
-def sensitivity_material(P, prog):
-
-    mcdc = adapt.device(prog)
-
-    # The incident particle is already terminated
-
-    # Get material
-    material = mcdc["materials"][P["material_ID"]]
-
-    # Check if sensitivity nuclide is sampled
-    g = P["g"]
-    SigmaT = material["total"][g]
-    N_nuclide = material["N_nuclide"]
-    if N_nuclide == 1:
-        nuclide = mcdc["nuclides"][material["nuclide_IDs"][0]]
-    else:
-        xi = rng(P) * SigmaT
-        tot = 0.0
-        for i in range(N_nuclide):
-            nuclide = mcdc["nuclides"][material["nuclide_IDs"][i]]
-            density = material["nuclide_densities"][i]
-            tot += density * nuclide["total"][g]
-            if xi < tot:
-                break
-    if not nuclide["sensitivity"]:
-        return
-
-    # Sample number of derivative sources
-    xi = nuclide["dsm_Np"]
-    if xi != 1.0:
-        Np = int(math.floor(xi + rng(P)))
-    else:
-        Np = 1
-
-    # Get sensitivity ID
-    ID = nuclide["sensitivity_ID"]
-    double = False
-    if mcdc["technique"]["dsm_order"] == 2:
-        ID1 = min(P["sensitivity_ID"], ID)
-        ID2 = max(P["sensitivity_ID"], ID)
-        ID = get_DSM_ID(ID1, ID2, mcdc["setting"]["N_sensitivity"])
-        if ID1 == ID2:
-            double = True
-
-    # Undo implicit capture
-    if mcdc["technique"]["implicit_capture"]:
-        SigmaC = material["capture"][g]
-        P["w"] *= SigmaT / (SigmaT - SigmaC)
-
-    # Get XS
-    g = P["g"]
-    sigmaT = nuclide["total"][g]
-    sigmaS = nuclide["scatter"][g]
-    sigmaF = nuclide["fission"][g]
-    nu_s = nuclide["nu_s"][g]
-    nu = nuclide["nu_f"][g]
-    nusigmaS = nu_s * sigmaS
-    nusigmaF = nu * sigmaF
-
-    # Base weight
-    total = sigmaT + nusigmaS + nusigmaF
-    w = total * P["w"] / sigmaT / xi
-
-    # Double if it's self-second-order
-    if double:
-        w *= 2
-
-    # Sample the derivative sources
-    for n in range(Np):
-        # Create new particle
-        P_new = split_particle(P)
-
-        # Sample source type
-        xi = rng(P_new) * total
-        tot = sigmaT
-        if tot > xi:
-            # Delta source
-            P_new["w"] = -w
-        else:
-            P_new["w"] = w
-
-            tot += nusigmaS
-            if tot > xi:
-                # Scattering source
-                sample_phasespace_scattering_nuclide(P, nuclide, P_new, mcdc)
-            else:
-                # Fission source
-                sample_phasespace_fission_nuclide(P, nuclide, P_new, mcdc)
-
-        # Assign sensitivity_ID
-        P_new["sensitivity_ID"] = ID
-
-        # Put the current particle into the secondary bank
-        adapt.add_active(P_new, prog)
-
-
 # ==============================================================================
 # Particle tracker
 # ==============================================================================
@@ -3890,29 +3524,6 @@ def allocate_pid(P, mcdc):
     P["track_pid"] = adapt.global_add(mcdc["particle_track_particle_ID"], 0, 1)
 
 
-# ==============================================================================
-# Derivative Source Method (DSM)
-# ==============================================================================
-
-
-@njit
-def get_DSM_ID(ID1, ID2, Np):
-    # First-order sensitivity
-    if ID1 == 0:
-        return ID2
-
-    # Self second-order
-    if ID1 == ID2:
-        return Np + ID1
-
-    # Cross second-order
-    ID1 -= 1
-    ID2 -= 1
-    return int(
-        2 * Np + (Np * (Np - 1) / 2) - (Np - ID1) * ((Np - ID1) - 1) / 2 + ID2 - ID1
-    )
-
-
 # =============================================================================
 # Continuous Energy Physics
 # =============================================================================
diff --git a/mcdc/loop.py b/mcdc/loop.py
index a614bc19..a3d9b04b 100644
--- a/mcdc/loop.py
+++ b/mcdc/loop.py
@@ -498,15 +498,6 @@ def step_particle(P, prog):
             elif event == EVENT_FISSION:
                 kernel.fission(P, prog)
 
-            # Sensitivity quantification for nuclide?
-            material = mcdc["materials"][P["material_ID"]]
-            if material["sensitivity"] and (
-                P["sensitivity_ID"] == 0
-                or mcdc["technique"]["dsm_order"] == 2
-                and P["sensitivity_ID"] <= mcdc["setting"]["N_sensitivity"]
-            ):
-                kernel.sensitivity_material(P, prog)
-
     # Surface crossing
     if event & EVENT_SURFACE:
         kernel.surface_crossing(P, prog)
@@ -565,7 +556,6 @@ def generate_precursor_particle(DNP, particle_idx, seed_work, prog):
     P_new["rng_seed"] = part_seed
     P_new["alive"] = True
     P_new["w"] = 1.0
-    P_new["sensitivity_ID"] = 0
 
     # Set position
     P_new["x"] = DNP["x"]
diff --git a/mcdc/main.py b/mcdc/main.py
index d47f7e91..06b9a0c8 100644
--- a/mcdc/main.py
+++ b/mcdc/main.py
@@ -428,7 +428,7 @@ def prepare():
     N_nuclide = len(input_deck.nuclides)
     for i in range(N_nuclide):
         # General data
-        for name in ["ID", "fissionable", "sensitivity", "sensitivity_ID", "dsm_Np"]:
+        for name in ["ID", "fissionable"]:
             copy_field(mcdc["nuclides"][i], input_deck.nuclides[i], name)
 
         # MG data
@@ -765,12 +765,6 @@ def prepare():
             mcdc["technique"]["iqmc"]["score"][name] = value
         # minimum particle weight
         iqmc["w_min"] = 1e-13
-    # =========================================================================
-    # Derivative Source Method
-    # =========================================================================
-
-    # Threshold
-    mcdc["technique"]["dsm_order"] = input_deck.technique["dsm_order"]
 
     # =========================================================================
     # Variance Deconvolution - UQ
diff --git a/mcdc/type_.py b/mcdc/type_.py
index 43b0e333..72592ca3 100644
--- a/mcdc/type_.py
+++ b/mcdc/type_.py
@@ -184,7 +184,6 @@ def make_type_particle(input_deck):
         ("surface_ID", int64),
         ("translation", float64, (3,)),
         ("event", int64),
-        ("sensitivity_ID", int64),
         ("rng_seed", uint64),
     ]
 
@@ -223,7 +222,6 @@ def make_type_particle_record(input_deck):
         ("g", uint64),
         ("E", float64),
         ("w", float64),
-        ("sensitivity_ID", int64),
         ("rng_seed", uint64),
     ]
 
@@ -348,9 +346,6 @@ def make_type_nuclide(input_deck):
     struct = [
         ("ID", int64),
         ("fissionable", bool_),
-        ("sensitivity", bool_),
-        ("sensitivity_ID", int64),
-        ("dsm_Np", float64),
         ("uq", bool_),
     ]
 
@@ -446,7 +441,6 @@ def make_type_material(input_deck):
     struct = [
         ("ID", int64),
         ("N_nuclide", int64),
-        ("sensitivity", bool_),
         ("nuclide_IDs", int64, (Nmax_nuclide,)),
         ("nuclide_densities", float64, (Nmax_nuclide,)),
         ("uq", bool_),
@@ -506,9 +500,6 @@ def make_type_surface(input_deck):
             ("nx", float64),
             ("ny", float64),
             ("nz", float64),
-            ("sensitivity", bool_),
-            ("sensitivity_ID", int64),
-            ("dsm_Np", float64),
         ]
     )
 
@@ -659,14 +650,6 @@ def make_type_source(input_deck):
 def make_type_tally(input_deck):
     global tally
 
-    # Number of sensitivitys parameters
-    N_sensitivity = input_deck.setting["N_sensitivity"]
-
-    # Number of tally scores
-    Ns = 1 + N_sensitivity
-    if input_deck.technique["dsm_order"] == 2:
-        Ns = 1 + 2 * N_sensitivity + int(0.5 * N_sensitivity * (N_sensitivity - 1))
-
     # Get card
     card = input_deck.tally
 
@@ -688,13 +671,13 @@ def make_type_score(shape):
 
     # Scores and shapes
     scores_shapes = [
-        ["flux", (Ns, Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
-        ["density", (Ns, Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
-        ["fission", (Ns, Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
-        ["total", (Ns, Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
-        ["current", (Ns, Ng, Nt, Nx, Ny, Nz, 3)],
-        ["eddington", (Ns, Ng, Nt, Nx, Ny, Nz, 6)],
-        ["exit", (Ns, Ng, Nt, 2, Ny, Nz, Nmu, N_azi)],
+        ["flux", (Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
+        ["density", (Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
+        ["fission", (Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
+        ["total", (Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
+        ["current", (Ng, Nt, Nx, Ny, Nz, 3)],
+        ["eddington", (Ng, Nt, Nx, Ny, Nz, 6)],
+        ["exit", (Ng, Nt, 2, Ny, Nz, Nmu, N_azi)],
     ]
 
     # Add score flags to structure
@@ -760,8 +743,6 @@ def make_type_setting(deck):
         ("IC_file", bool_),
         ("IC_file_name", str_),
         ("N_precursor", uint64),
-        # TODO: Move to technique
-        ("N_sensitivity", uint64),
     ]
 
     # Finalize setting type
@@ -990,14 +971,6 @@ def make_type_technique(input_deck):
         ("IC_fission", float64),
     ]
 
-    # =========================================================================
-    # Derivative Source Method
-    # =========================================================================
-
-    struct += [
-        ("dsm_order", int64),
-    ]
-
     # =========================================================================
     # Variance Deconvolution
     # =========================================================================
@@ -1022,9 +995,6 @@ def make_type_uq_score(shape):
     # Tally estimator flags
     struct = []
 
-    # Number of tally scores
-    Ns = 1 + input_deck.setting["N_sensitivity"]
-
     # Tally card
     tally_card = input_deck.tally
 
@@ -1033,13 +1003,13 @@ def make_type_uq_score(shape):
 
     # Scores and shapes
     scores_shapes = [
-        ["flux", (Ns, Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
-        ["density", (Ns, Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
-        ["fission", (Ns, Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
-        ["total", (Ns, Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
-        ["current", (Ns, Ng, Nt, Nx, Ny, Nz, 3)],
-        ["eddington", (Ns, Ng, Nt, Nx, Ny, Nz, 6)],
-        ["exit", (Ns, Ng, Nt, 2, Ny, Nz, Nmu, N_azi)],
+        ["flux", (Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
+        ["density", (Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
+        ["fission", (Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
+        ["total", (Ng, Nt, Nx, Ny, Nz, Nmu, N_azi)],
+        ["current", (Ng, Nt, Nx, Ny, Nz, 3)],
+        ["eddington", (Ng, Nt, Nx, Ny, Nz, 6)],
+        ["exit", (Ng, Nt, 2, Ny, Nz, Nmu, N_azi)],
     ]
 
     # Add score flags to structure
diff --git a/test/regression/dsm_azurv1/answer.h5 b/test/regression/dsm_azurv1/answer.h5
deleted file mode 100644
index 0c1afb236da165f4c7919f3ecea2eca2c3c3ecb6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 265800
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
N-5<x}=wE`z{{y{yts?*c

diff --git a/test/regression/dsm_azurv1/input.py b/test/regression/dsm_azurv1/input.py
deleted file mode 100644
index 2b358100..00000000
--- a/test/regression/dsm_azurv1/input.py
+++ /dev/null
@@ -1,37 +0,0 @@
-import numpy as np
-import h5py
-
-import mcdc
-
-
-# =========================================================================
-# Set model and run
-# =========================================================================
-
-n1 = mcdc.nuclide(capture=np.array([0.5]))
-n2 = mcdc.nuclide(
-    capture=np.array([0.1]),
-    fission=np.array([0.4]),
-    nu_p=np.array([2.5]),
-    sensitivity=True,
-)
-
-m = mcdc.material(nuclides=[(n1, 1.0), (n2, 1.0)])
-
-s1 = mcdc.surface("plane-x", x=-1e10, bc="reflective")
-s2 = mcdc.surface("plane-x", x=1e10, bc="reflective")
-
-mcdc.cell(+s1 & -s2, m)
-
-mcdc.source(point=[0.0, 0.0, 0.0], isotropic=True)
-
-scores = ["flux"]
-mcdc.tally(
-    scores=scores,
-    x=np.linspace(-20.0, 20.0, 202),
-    t=np.linspace(0.0, 20.0, 21),
-)
-
-mcdc.setting(N_particle=30)
-
-mcdc.run()
diff --git a/test/regression/dsm_lattice/answer.h5 b/test/regression/dsm_lattice/answer.h5
deleted file mode 100644
index ea8ee263168e7a66774d101961cd98b5a4fccb43..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 205048
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

diff --git a/test/regression/dsm_lattice/c5g7.h5 b/test/regression/dsm_lattice/c5g7.h5
deleted file mode 100644
index 218b300f5f762dd74ccccea1acbc60fc80f4dac6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 49104
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
a+Up{BJH)du{++uWMyNBcaJS=k?f(J8mg=1V

diff --git a/test/regression/dsm_lattice/input.py b/test/regression/dsm_lattice/input.py
deleted file mode 100644
index 7fc70b08..00000000
--- a/test/regression/dsm_lattice/input.py
+++ /dev/null
@@ -1,49 +0,0 @@
-import numpy as np
-import h5py
-
-import mcdc
-
-
-# =========================================================================
-# Set model and run
-# =========================================================================
-
-lib = h5py.File("c5g7.h5", "r")
-
-
-def set_mat(mat):
-    return mcdc.material(
-        capture=mat["capture"][:],
-        scatter=mat["scatter"][:],
-        fission=mat["fission"][:],
-        nu_p=mat["nu_p"][:],
-        nu_d=mat["nu_d"][:],
-        chi_p=mat["chi_p"][:],
-        chi_d=mat["chi_d"][:],
-        speed=mat["speed"],
-        decay=mat["decay"],
-        sensitivity=True,
-    )
-
-
-mat_uo2 = set_mat(lib["uo2"])  # Fuel: UO2
-mat_mod = set_mat(lib["mod"])  # Moderator
-mat_cr = set_mat(lib["cr"])  # Control rod
-
-s1 = mcdc.surface("plane-x", x=0.0, bc="reflective")
-s2 = mcdc.surface("plane-x", x=0.5, sensitivity=True)
-s3 = mcdc.surface("plane-x", x=1.5, sensitivity=True)
-s4 = mcdc.surface("plane-x", x=2.0, bc="reflective")
-
-mcdc.cell(+s1 & -s2, mat_uo2)
-mcdc.cell(+s2 & -s3, mat_mod)
-mcdc.cell(+s3 & -s4, mat_cr)
-
-mcdc.source(point=[1.0, 0.0, 0.0], energy=[1, 0, 0, 0, 0, 0, 0], isotropic=True)
-
-scores = ["flux"]
-mcdc.tally(scores=scores, x=np.linspace(0.0, 2.0, 11), g="all")
-
-mcdc.setting(N_particle=3, active_bank_buff=1000)
-
-mcdc.run()

From 2be8ac8e83cfd4b83145e542c055d586c8002892 Mon Sep 17 00:00:00 2001
From: Ilham Variansyah <variansi@oregonstate.edu>
Date: Sat, 17 Aug 2024 20:35:56 +0700
Subject: [PATCH 2/2] fix unit test

---
 test/unit/test_input_.py | 81 +---------------------------------------
 1 file changed, 1 insertion(+), 80 deletions(-)

diff --git a/test/unit/test_input_.py b/test/unit/test_input_.py
index 59158962..b7c8660e 100644
--- a/test/unit/test_input_.py
+++ b/test/unit/test_input_.py
@@ -50,7 +50,6 @@ def test_nuclide_basic():
         ),
         speed=np.array([1.0, 2.0, 3.0, 4.0]),
         decay=np.array([1.0, 2.0, 3.0]),
-        sensitivity=True,
     )
 
     assert n1.tag == "Nuclide"
@@ -80,8 +79,6 @@ def test_nuclide_basic():
     assert (n1.chi_s == np.ones([4, 4]) * 0.25).all()
     assert (n1.chi_p == np.ones([4, 4]) * 0.25).all()
     assert (n1.chi_d == np.ones([3, 4]) * 0.25).all()
-    assert n1.sensitivity == True
-    assert n1.sensitivity_ID == 1
 
 
 def test_nuclide_default():
@@ -109,8 +106,6 @@ def test_nuclide_default():
     assert (n1.chi_s == np.zeros((5, 5))).all()
     assert (n1.chi_p == np.zeros((5, 5))).all()
     assert (n1.chi_d == np.zeros((0, 5))).all()
-    assert n1.sensitivity == False
-    assert n1.sensitivity_ID == 0
 
     assert (n2.capture == np.zeros(5)).all()
     assert (n2.scatter == np.ones(5) * 5.0).all()
@@ -122,8 +117,6 @@ def test_nuclide_default():
     assert (n2.chi_s == np.ones((5, 5)) * 0.2).all()
     assert (n2.chi_p == np.zeros((5, 5))).all()
     assert (n2.chi_d == np.zeros((0, 5))).all()
-    assert n2.sensitivity == False
-    assert n2.sensitivity_ID == 0
 
     assert (n3.capture == np.zeros(5)).all()
     assert (n3.scatter == np.zeros(5)).all()
@@ -135,45 +128,6 @@ def test_nuclide_default():
     assert (n3.chi_s == np.zeros((5, 5))).all()
     assert (n3.chi_p == np.ones((5, 5)) * 0.2).all()
     assert (n3.chi_d == np.zeros((0, 5))).all()
-    assert n3.sensitivity == False
-    assert n3.sensitivity_ID == 0
-
-
-def test_nuclide_IDs_sensitivity():
-    # Start fresh
-    mcdc.reset()
-
-    # Create nuclides with various sensitivity tags
-    n1 = mcdc.nuclide(capture=np.array([1.0]), sensitivity=True)
-    n2 = mcdc.nuclide(capture=np.array([1.0]))
-    n3 = mcdc.nuclide(capture=np.array([1.0]), sensitivity=True)
-    n4 = mcdc.nuclide(capture=np.array([1.0]), sensitivity=True)
-    n5 = mcdc.nuclide(capture=np.array([1.0]))
-    n6 = mcdc.nuclide(capture=np.array([1.0]))
-    n7 = mcdc.nuclide(capture=np.array([1.0]), sensitivity=True)
-
-    # Checks
-    assert n1.ID == 0
-    assert n2.ID == 1
-    assert n3.ID == 2
-    assert n4.ID == 3
-    assert n5.ID == 4
-    assert n6.ID == 5
-    assert n7.ID == 6
-    assert n1.sensitivity
-    assert not n2.sensitivity
-    assert n3.sensitivity
-    assert n4.sensitivity
-    assert not n5.sensitivity
-    assert not n6.sensitivity
-    assert n7.sensitivity
-    assert n1.sensitivity_ID == 1
-    assert n2.sensitivity_ID == 0
-    assert n3.sensitivity_ID == 2
-    assert n4.sensitivity_ID == 3
-    assert n5.sensitivity_ID == 0
-    assert n6.sensitivity_ID == 0
-    assert n7.sensitivity_ID == 4
 
 
 # ======================================================================================
@@ -224,7 +178,6 @@ def test_material_single():
         ),
         speed=np.array([1.0, 2.0, 3.0, 4.0]),
         decay=np.array([1.0, 2.0, 3.0]),
-        sensitivity=True,
     )
 
     # Checks
@@ -256,7 +209,6 @@ def test_material_single():
     assert (m1.nu_f == np.array([4.0, 8.0, 12.0, 16.0])).all()
     assert (m1.chi_s == np.ones([4, 4]) * 0.25).all()
     assert (m1.chi_p == np.ones([4, 4]) * 0.25).all()
-    assert m1.sensitivity == True
 
     # Check if the nuclide was registered
     n2 = mcdc.nuclide(capture=np.ones(5))
@@ -269,7 +221,7 @@ def test_material_multi():
 
     # Create a multi-nuclide material
     n1 = mcdc.nuclide(capture=np.ones(5), speed=np.ones(5) * 1)
-    n2 = mcdc.nuclide(scatter=np.ones((5, 5)), speed=np.ones(5) * 2, sensitivity=True)
+    n2 = mcdc.nuclide(scatter=np.ones((5, 5)), speed=np.ones(5) * 2)
     n3 = mcdc.nuclide(
         fission=np.ones(5), nu_p=np.ones(5), chi_p=np.ones((5, 5)), speed=np.ones(5) * 3
     )
@@ -285,37 +237,6 @@ def test_material_multi():
     assert m1.J == 0
     assert (m1.total == np.ones(5) * 14).all()
     assert (m1.speed == np.ones(5) * 30 / 14).all()
-    assert m1.sensitivity == True
-
-
-def test_material_IDs_sensitivity():
-    # Start fresh
-    mcdc.reset()
-
-    # Create materials with various sensitivity tags
-    m1 = mcdc.material(capture=np.array([1.0]), sensitivity=True)
-    m2 = mcdc.material(capture=np.array([1.0]))
-    m3 = mcdc.material(capture=np.array([1.0]), sensitivity=True)
-    m4 = mcdc.material(capture=np.array([1.0]), sensitivity=True)
-    m5 = mcdc.material(capture=np.array([1.0]))
-    m6 = mcdc.material(capture=np.array([1.0]))
-    m7 = mcdc.material(capture=np.array([1.0]), sensitivity=True)
-
-    # Checks
-    assert m1.ID == 0
-    assert m2.ID == 1
-    assert m3.ID == 2
-    assert m4.ID == 3
-    assert m5.ID == 4
-    assert m6.ID == 5
-    assert m7.ID == 6
-    assert m1.sensitivity
-    assert not m2.sensitivity
-    assert m3.sensitivity
-    assert m4.sensitivity
-    assert not m5.sensitivity
-    assert not m6.sensitivity
-    assert m7.sensitivity
 
 
 # ======================================================================================