LoginSignup
1

More than 5 years have passed since last update.

ADDA > tool > make_beta_gamma_tbl_pySphere_171217.py > v0.1 > to obtain [beta, gamma] tables for [Icosahedral nodes] and [Hammersley nodes]

Last updated at Posted at 2018-02-03
Environment
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 16.04 LTS desktop amd64
TensorFlow v1.2.1
cuDNN v5.1 for Linux
CUDA v8.0
Python 3.5.2
IPython 6.0.0 -- An enhanced Interactive Python.
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
scipy v0.19.1
geopandas v0.3.0
MATLAB R2017b (Home Edition)
ADDA v.1.3b6

This article is related to ADDA (light scattering simulator based on the discrete dipole approximation).

Link

About

A Python script to make table for [Icosahedral nodes] and [Hammersley nodes] by using pySpherepts_171126.

The output file can be used with loop_beta_gamma_171216.py to run sequentially ADDA for different values of [beta] and [gamma] for orientations by Euler angles (Note: [alpha] is fixed as 0.0).

This is a script written on the package [ADDA_pySpherepts_171217] on GitHub.

Requirements

Code v0.1

make_beta_gamma_tbl_pySphere_171217.py
import numpy as np
import polarAzimuthCalc_171209 as pAC
import getIcosNodes_171126 as gIN
import getHammersleyNodes_171203 as gHN
import sys

'''
Dec. 17, 2017
This script requires the setup of [pySpherepts_171126] package shown at
    https://github.com/yasokada/pySpherepts_171126
for [getIcosNodes_171126]
'''

'''
v0.1 Dec. 17, 2017
   - add Test_run_getIcosNodes()
   - add make_beta_gamma_tbl_gIN()
'''

kFile_output_gIN = 'beta_gamma_gIN.tbl'
kFile_output_gHN = 'beta_gamma_gHN.tbl'


def output_file(outlst, filename):
    hdrtxt = 'beta(deg),gamma(deg)'
    np.savetxt(filename, outlst, fmt='%.3f',
               delimiter=",", header=hdrtxt)
    msg = "[{0}] is created".format(filename)
    print(msg)


def make_beta_gamma_tbl_gIN(kIndex, typeIndex):
    xs, tris = gIN.getIcosNodes(kIndex, typeIndex)
    outlst = []
    for elem in xs:
        beta_rad = pAC.calc_beta_rad(elem)
        gamma_rad = pAC.calc_gamma_rad(elem)

        beta_deg = np.rad2deg(beta_rad)
        gamma_deg = np.rad2deg(gamma_rad)

        outlst += [[beta_deg, gamma_deg]]
    output_file(outlst, kFile_output_gIN)


def make_beta_gamma_tbl_gHN(nodeNumber):
    xs = gHN.getHammersleyNodes(nodeNumber)
    outlst = []
    for elem in xs:
        beta_rad = pAC.calc_beta_rad(elem)
        gamma_rad = pAC.calc_gamma_rad(elem)

        beta_deg = np.rad2deg(beta_rad)
        gamma_deg = np.rad2deg(gamma_rad)

        outlst += [[beta_deg, gamma_deg]]
    output_file(outlst, kFile_output_gHN)


def Test_run_gIN():
    # make_beta_gamma_tbl_gIN(0, typeIndex=0)  # 12 points
    # make_beta_gamma_tbl_gIN(1, typeIndex=0)  # 42 points
    # make_beta_gamma_tbl_gIN(2, typeIndex=0)  # 162 points
    # make_beta_gamma_tbl_gIN(3, typeIndex=0)  # 642 points
    make_beta_gamma_tbl_gIN(4, typeIndex=0)  # 2562 points


def Test_run_gHN():
    make_beta_gamma_tbl_gHN(60)


if __name__ == '__main__':
    Test_run_gIN()
    Test_run_gHN()

Run example

$ python3 make_beta_gamma_tbl_pySphere_171217.py 
[beta_gamma_gIN.tbl] is created
[beta_gamma_gHN.tbl] is created

Tables for [Icosahedral nodes (noted as gIN)] and [Hammersley nodes (noted as gHN)] are created.

In the above code, the [Icosahedral nodes] is configured to take kindex of 4 and typeIndex of 0, resulting in N=2562 points.
On the other hand, the [Hammersley nodes] is configured to have N=60 points.

By changing the parameters in Test_run_gIN() and Test_run_gHN(), different numbers of the point sets for both cases can be obtained.

Example of the output

Below, the file is renamed from beta_gamma_gHN.tbl.

beta_gamma_gHN_N0030.tbl
# beta(deg),gamma(deg)
180.000,0.000
90.000,18.000
120.000,30.000
60.000,42.000
138.590,54.000
75.522,66.000
104.478,78.000
41.410,90.000
151.045,102.000
82.819,114.000
112.024,126.000
51.318,138.000
128.682,150.000
67.976,162.000
97.181,174.000
28.955,186.000
159.636,198.000
86.417,210.000
115.944,222.000
55.771,234.000
133.433,246.000
71.790,258.000
100.807,270.000
35.659,282.000
144.341,294.000
79.193,306.000
108.210,318.000
46.567,330.000
124.229,342.000
64.056,354.000

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1