iceraytracing

Code that does analytic raytracing in ice

https://github.com/uzairlatif90/iceraytracing

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (9.5%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

Code that does analytic raytracing in ice

Basic Info
  • Host: GitHub
  • Owner: uzairlatif90
  • License: gpl-3.0
  • Language: C++
  • Default Branch: master
  • Size: 3.97 MB
Statistics
  • Stars: 1
  • Watchers: 2
  • Forks: 2
  • Open Issues: 0
  • Releases: 0
Created over 6 years ago · Last pushed almost 2 years ago
Metadata Files
Readme License Citation

README.md

AnalyticRayTracing in Ice

C++ code, which uses analytic ray tracing for tracing rays between any two points in ice. Currently I have set it to work with AraSim n(z)=1.78-0.43exp(0.0132z)

  • IceRayTracing.C : This script takes in as arguments of the Tx and Rx coordinates. Then it calculates the two possible rays between them. It prints out the launch angle, receive angle and propagation time for both rays.

It can also be made to print out the respective ray paths in text files called "DirectRay.txt","ReflectedRay.txt" and "RefractedRay.txt". For turning this feature ON you have to set the boolean "StoreRayPaths" in "IceRayTracing()" to be true. The files contain the following columns:

  • the entry number, Ray path x values, Ray path z values

    • IceRayTracing_WROOTplot.C : This script ALSO takes in as arguments of the Tx and Rx coordinates. Then it calculates the two possible rays between them. It prints out the launch angle, receive angle and propagation time for both rays.

It can also be made to print out AND plot the respective ray paths in text files called "DirectRay.txt","ReflectedRay.txt" and "RefractedRay.txt". For turning this feature ON you have to set the boolean "Plot" in "IceRayTracing()" to be true. The files contain the following columns:

  • the entry number, Ray path x values, Ray path z values

Example Ray Plot An example of the output ray plots produced by IceRayTracing_WROOTplot.C.

  • MultRay.C : This plots a Multi-Ray diagram of rays launching from a given transmitter (Tx) position. It takes in the given Tx depth and angle step size for launching rays and launches rays from 0 to 90 deg. Here the angle is measured w.r.t vertical where 0 deg is straight up. This macro depends on IceRayTracing_wROOTplot.C.

Angle Conventions

namepsace "IceRayTracing"

The namespace folder contains two subfolders "wROOT" and "woROOT". I made a namespace for my raytracing functions, making it easier to include them as part of another code. The namespace is contained in "IceRayTracing.cc" and "IceRayTracing.hh".

  • The namespace in the folder "wROOT" has ROOT dependency and contains some ROOT functions which are used for plotting the rays.
  • The namespace in the folder "woROOT" does NOT have a ROOT dependency, and instead of using ROOT functions for plotting, it stores ray paths in c++ vectors.
  • The script "uzairRayTrace.cc" contains an example of how to call functions from within the namespace to do raytracing in ice.
  • To compile the code do make uzairRayTrace

Prerequisites

You will need to have a functioning installation of GSL (2.4 is verified to work). - You will need to set the environment variable GSLDIR to your local installation of GSL. - You will also need to have GSLDIR in your LD_LIBRARY_PATH. - For Mac users: you can locate your GSL installation via gsl-config --prefix, i.e. export GSLDIR=$(gsl-config --prefix) - If you have Ubuntu or Linux you can skip all of the above and get it from the repository by doing: sudo apt install libgsl-dev

How to install and run the scripts

IceRayTracing.C as standalone package

To run, you have to do: - Make it: make IceRayTracing - Run it: ./IceRayTracing 0 0 -100 0 100 -5 - Here the first three arguments are Tx coordinates (i.e., xTx=0 m, yTx=0 m, zTx=-100 m) and the second three arguments are Rx coordinates (i.e., xRx=0 m, yRx=100 m, zRx=-5 m). - The main is at the bottom of the code, which you can modify to your liking.

IceRayTracing_wROOTplot.C as standalone package

To run, you have to do: - root -l 'IceRayTracing_wROOTplot.C('0','0','-100','0','100','-5')' - Here the first three arguments are Tx coordinates (i.e., xTx=0 m, yTx=0 m, zTx=-100 m) and the second three arguments are Rx coordinates (i.e., xRx=0 m, yRx=100 m, zRx=-5 m).

MultRay.C as standalone package

To run, you have to do: - root -l 'MultRay.C('-180','0.25')' - Here the two arguments are the Tx depth (i.e., Txz=-180 m) and the launch angle step size (i.e., 0.25 deg) - Please note that MultRay.C depends on IceRayTracingwROOTplot.C, so you will have to include the two files in the same directory.

Owner

  • Login: uzairlatif90
  • Kind: user

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
  - family-names: Latif
    given-names: Uzair Abdul
    orcid: https://orcid.org/0000-0002-7609-1266
title: "IceRayTracing"
version: 1.0.0
doi: 
date-released: 2020-08-01
url: https://github.com/uzairlatif90/IceRayTracing

GitHub Events

Total
Last Year