utils_inject

Module

Description

Utility routines for geodesic sphere injection

References:

None

Owner:

Siméon

Runtime parameters:

None

Dependencies:

geometry, icosahedron, part, partinject, physcon, random, units, vectorutils

Quick access

Variables:

edge_velocity, jets, opening_angle, phi, seed_random

Routines:

get_neighb_distance(), init_jets(), inject_geodesic_sphere(), make_rotation_matrix(), optimal_rot_angles(), rotation_frame(), velocity_jets(), velocity_rotating_sink()

Needed modules

  • physcon (pi()): Physical and mathematical constants (as in sphNG)

Variables

  • injectutils/edge_velocity [real]
  • injectutils/jets [logical,optional/default=.false.]
  • injectutils/opening_angle [real]
  • injectutils/phi [real,parameter=(sqrt(5.)+1.)/2.]
  • injectutils/seed_random [integer,optional/default=-1]

Subroutines and functions

function  injectutils/get_neighb_distance(nps)
Parameters:

nps [integer,in]

Return:

get_neighb_distance [real]

subroutine  injectutils/inject_geodesic_sphere(sphere_number, first_particle, ires, r, v, u, rho, npart, npartoftype, xyzh, vxyzu, itype, x0, v0, isink[, jkmus[, rstar[, mstar[, omega_vec[, vwind_terminal]]]]])
Parameters:
  • sphere_number [integer,in]

  • first_particle [integer,in]

  • ires [integer,in]

  • r [real,in]

  • v [real,in]

  • u [real,in]

  • rho [real,in]

  • npart [integer,inout]

  • npartoftype (*) [integer,inout]

  • xyzh (,) [real,inout]

  • vxyzu (,) [real,inout]

  • itype [integer,in]

  • x0 (3) [real,in]

  • v0 (3) [real,in]

  • isink [integer,in]

  • jkmus (*) [real,in,]

  • rstar [real,in,]

  • mstar [real,in,]

  • omega_vec (3) [real,in,]

  • vwind_terminal [real,in,]

Use :

icosahedron (fibonacci_sphere(), fibonacci_jets()), partinject (add_or_update_particle()), part (hrho()), units (unit_velocity()), physcon (km())

Call to:

optimal_rot_angles(), make_rotation_matrix(), velocity_jets(), velocity_rotating_sink()

subroutine  injectutils/make_rotation_matrix(rotation_angles, rot_m)
Parameters:
  • rotation_angles (3) [real,in]

  • rot_m (3,3) [real,out]

Called from:

inject_geodesic_sphere()

subroutine  injectutils/rotation_frame(vector, axis_a, axis_b)
Parameters:
  • vector (3) [real,inout]

  • axis_a (3) [real,in]

  • axis_b (3) [real,in]

Use :

vectorutils (cross_product3d())

Called from:

velocity_rotating_sink()

Call to:

cross_product3d()

subroutine  injectutils/velocity_rotating_sink(radial_unit_vector, r, v, omega, omega_axis, particle_position, particle_velocity, rstar, omega_vec)
Parameters:
  • radial_unit_vector (3) [real]

  • r [real,in]

  • v [real,in]

  • omega [real,in]

  • omega_axis (3) [real,in]

  • particle_position (3) [real,out]

  • particle_velocity (3) [real,out]

  • rstar [real,in]

  • omega_vec (3) [real,in]

Use :

vectorutils (cross_product3d()), geometry (vector_transform(), coord_transform())

Called from:

inject_geodesic_sphere()

Call to:

cross_product3d(), rotation_frame(), coord_transform(), vector_transform()

subroutine  injectutils/init_jets(jet_edge_vel, jet_opening_angle)
Parameters:
  • jet_edge_vel [real,in]

  • jet_opening_angle [real,in]

Use :

physcon (km()), units (unit_velocity())

subroutine  injectutils/velocity_jets(radial_unit_vector, r, v, edge_velocity, opening_angle, particle_position, particle_velocity, vwind_terminal)
Parameters:
  • radial_unit_vector (3) [real]

  • r [real]

  • v [real]

  • edge_velocity [real]

  • opening_angle [real]

  • particle_position (3) [real,out]

  • particle_velocity (3) [real,out]

  • vwind_terminal [real]

Use :

geometry (vector_transform(), coord_transform())

Called from:

inject_geodesic_sphere()

Call to:

coord_transform(), vector_transform()

subroutine  injectutils/optimal_rot_angles(ires, rotation_angles[, rot_jets])
Parameters:
  • ires [integer,in]

  • rotation_angles (3) [real,out]

  • rot_jets [logical,in,]

Use :

random (ran2())

Called from:

inject_geodesic_sphere()

Call to:

ran2()