Skip to content

Commit

Permalink
Merge pull request #43 from lanl/dempsey/dust_update
Browse files Browse the repository at this point in the history
Convert dust params from cgs
  • Loading branch information
adamdempsey90 authored Jan 14, 2025
2 parents c98a205 + 72984f6 commit b9e1093
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 14 deletions.
2 changes: 1 addition & 1 deletion src/artemis.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ Packages_t ProcessPackages(std::unique_ptr<ParameterInput> &pin) {
if (do_nbody) packages.Add(NBody::Initialize(pin.get(), constants));
if (do_gravity) packages.Add(Gravity::Initialize(pin.get(), constants, packages));
if (do_gas) packages.Add(Gas::Initialize(pin.get(), units, constants, packages));
if (do_dust) packages.Add(Dust::Initialize(pin.get()));
if (do_dust) packages.Add(Dust::Initialize(pin.get(), units));
if (do_rotating_frame) packages.Add(RotatingFrame::Initialize(pin.get()));
if (do_cooling) packages.Add(Gas::Cooling::Initialize(pin.get()));
if (do_drag) packages.Add(Drag::Initialize(pin.get()));
Expand Down
23 changes: 14 additions & 9 deletions src/dust/dust.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,16 @@
#include "utils/artemis_utils.hpp"
#include "utils/fluxes/fluid_fluxes.hpp"
#include "utils/history.hpp"
#include "utils/units.hpp"

using ArtemisUtils::VI;

namespace Dust {
//----------------------------------------------------------------------------------------
//! \fn StateDescriptor Dust::Initialize
//! \brief Adds intialization function for dust hydrodynamics package
std::shared_ptr<StateDescriptor> Initialize(ParameterInput *pin) {
std::shared_ptr<StateDescriptor> Initialize(ParameterInput *pin,
ArtemisUtils::Units &units) {
auto dust = std::make_shared<StateDescriptor>("dust");
Params &params = dust->AllParams();

Expand Down Expand Up @@ -99,10 +101,13 @@ std::shared_ptr<StateDescriptor> Initialize(ParameterInput *pin) {

// Dust sizes
const auto size_dist = pin->GetOrAddString("dust", "size_input", "direct");
const Real length_conv = units.GetLengthPhysicalToCode();
const Real rho_conv = units.GetMassDensityPhysicalToCode();

if (size_dist == "linspace") {
// uniform
auto min_size = pin->GetReal("dust", "min_size");
auto max_size = pin->GetReal("dust", "max_size");
auto min_size = length_conv * pin->GetReal("dust", "min_size");
auto max_size = length_conv * pin->GetReal("dust", "max_size");

ParArray1D<Real> sizes("sizes", nspecies);
auto h_sizes = sizes.GetHostMirror();
Expand All @@ -117,8 +122,8 @@ std::shared_ptr<StateDescriptor> Initialize(ParameterInput *pin) {

} else if (size_dist == "logspace") {
// uniform in log-space
const auto lmin = std::log10(pin->GetReal("dust", "min_size"));
const auto lmax = std::log10(pin->GetReal("dust", "max_size"));
const auto lmin = std::log10(length_conv * pin->GetReal("dust", "min_size"));
const auto lmax = std::log10(length_conv * pin->GetReal("dust", "max_size"));

ParArray1D<Real> sizes("sizes", nspecies);
auto h_sizes = sizes.GetHostMirror();
Expand All @@ -138,7 +143,7 @@ std::shared_ptr<StateDescriptor> Initialize(ParameterInput *pin) {
ParArray1D<Real> sizes("sizes", nspecies);
auto h_sizes = sizes.GetHostMirror();
for (int n = 0; n < nspecies; n++) {
h_sizes(n) = sizes_v[n];
h_sizes(n) = length_conv * sizes_v[n];
}
sizes.DeepCopy(h_sizes);
params.Add("sizes", sizes);
Expand All @@ -153,11 +158,11 @@ std::shared_ptr<StateDescriptor> Initialize(ParameterInput *pin) {
auto h_sizes = sizes.GetHostMirror();
if (data.size() == 1) {
for (int n = 0; n < nspecies; n++) {
h_sizes(n) = data[0][n];
h_sizes(n) = length_conv * data[0][n];
}
} else {
for (int n = 0; n < nspecies; n++) {
h_sizes(n) = data[n][0];
h_sizes(n) = length_conv * data[n][0];
}
}
sizes.DeepCopy(h_sizes);
Expand All @@ -168,7 +173,7 @@ std::shared_ptr<StateDescriptor> Initialize(ParameterInput *pin) {
}

// Dust density
params.Add("grain_density", pin->GetOrAddReal("dust", "grain_density", 1.0));
params.Add("grain_density", rho_conv * pin->GetOrAddReal("dust", "grain_density", 1.0));

// Scratch for dust flux
const int scr_level = pin->GetOrAddInteger("dust", "scr_level", 0);
Expand Down
7 changes: 3 additions & 4 deletions src/dust/dust.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,16 @@
#ifndef DUST_DUST_HPP_
#define DUST_DUST_HPP_

// Parthenon includes
#include <parthenon/package.hpp>

// Artemis includes
#include "artemis.hpp"
#include "utils/units.hpp"

using namespace parthenon::package::prelude;

namespace Dust {

std::shared_ptr<StateDescriptor> Initialize(ParameterInput *pin);
std::shared_ptr<StateDescriptor> Initialize(ParameterInput *pin,
ArtemisUtils::Units &units);

template <Coordinates GEOM>
Real EstimateTimestepMesh(MeshData<Real> *md);
Expand Down

0 comments on commit b9e1093

Please sign in to comment.