Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F100639698
ggetZiforCosmoSims
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Sat, Feb 1, 09:58
Size
4 KB
Mime Type
text/x-python
Expires
Mon, Feb 3, 09:58 (1 d, 20 h)
Engine
blob
Format
Raw Data
Handle
24004940
Attached To
rGTOOLS Gtools
ggetZiforCosmoSims
View Options
#!/usr/bin/env python
from
optparse
import
OptionParser
import
Ptools
as
pt
import
sys
from
numpy
import
*
import
scipy.integrate
as
si
from
scipy
import
optimize
def
parse_options
():
usage
=
"usage: %prog [options] file"
parser
=
OptionParser
(
usage
=
usage
)
parser
.
add_option
(
"--N1"
,
action
=
"store"
,
dest
=
"N1"
,
type
=
"float"
,
default
=
512
,
help
=
"number of particles for the higest level along one dimension"
,
metavar
=
" FLOAT"
)
parser
.
add_option
(
"--N2"
,
action
=
"store"
,
dest
=
"N2"
,
type
=
"float"
,
default
=
None
,
help
=
"number of particles for the higest level along one dimension"
,
metavar
=
" FLOAT"
)
parser
.
add_option
(
"-L"
,
action
=
"store"
,
dest
=
"L"
,
type
=
"float"
,
default
=
100
,
help
=
"box size in Mpc/h"
,
metavar
=
" FLOAT"
)
parser
.
add_option
(
"--param"
,
action
=
"store"
,
dest
=
"param"
,
type
=
"string"
,
default
=
None
,
help
=
"Gadget parameter file"
,
metavar
=
" FILE"
)
parser
.
add_option
(
"--Omega_b"
,
action
=
"store"
,
dest
=
"Omega_b"
,
type
=
"float"
,
default
=
None
,
help
=
"Omega_b"
,
metavar
=
" FLOAT"
)
parser
.
add_option
(
"--Omega_m"
,
action
=
"store"
,
dest
=
"Omega_m"
,
type
=
"float"
,
default
=
None
,
help
=
"Omega_m"
,
metavar
=
" FLOAT"
)
parser
.
add_option
(
"--Omega_de"
,
action
=
"store"
,
dest
=
"Omega_de"
,
type
=
"float"
,
default
=
None
,
help
=
"Omega_de"
,
metavar
=
" FLOAT"
)
parser
.
add_option
(
"--sigma8"
,
action
=
"store"
,
dest
=
"sigma8"
,
type
=
"float"
,
default
=
None
,
help
=
"sigma8"
,
metavar
=
" FLOAT"
)
parser
.
add_option
(
"--h"
,
action
=
"store"
,
dest
=
"h"
,
type
=
"float"
,
default
=
None
,
help
=
"h"
,
metavar
=
" FLOAT"
)
parser
.
add_option
(
"--n"
,
action
=
"store"
,
dest
=
"n"
,
type
=
"float"
,
default
=
None
,
help
=
"n"
,
metavar
=
" FLOAT"
)
(
options
,
args
)
=
parser
.
parse_args
()
#pt.check_files_number(args)
files
=
args
return
files
,
options
########################################################################
# MAIN
########################################################################
try
:
from
cosmicpy
import
*
except
ImportError
:
print
"
%s
requires cosmicpy"
%
sys
.
argv
[
0
]
sys
.
exit
()
files
,
opt
=
parse_options
()
if
opt
.
param
!=
None
:
print
"You want to use a parameter file to change the cosmology, this is not implemented"
cosmo
=
cosmology
()
if
opt
.
h
!=
None
:
cosmo
.
h
=
opt
.
h
if
opt
.
Omega_b
!=
None
:
cosmo
.
Omega_b
=
opt
.
Omega_b
if
opt
.
Omega_m
!=
None
:
cosmo
.
Omega_m
=
opt
.
Omega_m
if
opt
.
Omega_de
!=
None
:
cosmo
.
Omega_de
=
opt
.
Omega_de
if
opt
.
sigma8
!=
None
:
cosmo
.
sigma8
=
opt
.
sigma8
if
opt
.
n
!=
None
:
cosmo
.
n
=
opt
.
n
def
_sigmasq_integrand_log_l
(
logk
,
z
):
"""Integrand used internally by the sigma_r function.
"""
k
=
exp
(
logk
)
# The 1e-10 factor in the integrand is added to avoid roundoff
# error warnings. It is divided out later.
#print k,power_spectrum(k, z, **cosmology),z
a
=
z2a
(
z
)
return
(
k
*
(
1.e-10
/
(
2.
*
math
.
pi
**
2.
))
*
k
**
2.
*
cosmo
.
pk_lin
(
k
,
a
,
type
=
'eisenhu'
)
)
def
compute_Sigma
(
kmin
,
kmax
,
z
):
# Integrate over logk from -infinity to infinity.
integral
,
error
=
si
.
quad
(
_sigmasq_integrand_log_l
,
log
(
kmin
),
log
(
kmax
),
args
=
(
z
),
limit
=
10000
)
#, epsabs=1e-9, epsrel=1e-9)
sigma
=
sqrt
(
1.e10
*
integral
)
return
sigma
def
getZ
(
z
,
kmin
,
kmax
,
sigma
):
return
compute_Sigma
(
kmin
,
kmax
,
z
)
-
sigma
#######################
# first level
#######################
kmin
=
2
*
pi
/
opt
.
L
kmax
=
pi
*
opt
.
N1
/
opt
.
L
zi1
=
optimize
.
bisect
(
getZ
,
a
=
5
,
b
=
500
,
args
=
(
kmin
,
kmax
,
0.1
),
xtol
=
1e-3
,
maxiter
=
500
)
zi2
=
optimize
.
bisect
(
getZ
,
a
=
5
,
b
=
500
,
args
=
(
kmin
,
kmax
,
0.2
),
xtol
=
1e-3
,
maxiter
=
500
)
print
"N=
%5d
zinit(max)=
%4.1f
zinit(min)=
%4.1f
"
%
(
opt
.
N1
,
zi1
,
zi2
)
#######################
# second level
#######################
if
opt
.
N2
!=
None
:
kmin
=
2
*
pi
/
opt
.
L
kmax
=
pi
*
opt
.
N2
/
opt
.
L
zi1b
=
optimize
.
bisect
(
getZ
,
a
=
5
,
b
=
500
,
args
=
(
kmin
,
kmax
,
0.1
),
xtol
=
1e-3
,
maxiter
=
500
)
zi2b
=
optimize
.
bisect
(
getZ
,
a
=
5
,
b
=
500
,
args
=
(
kmin
,
kmax
,
0.2
),
xtol
=
1e-3
,
maxiter
=
500
)
print
"N=
%5d
zinit(max)=
%4.1f
zinit(min)=
%4.1f
"
%
(
opt
.
N2
,
zi1b
,
zi2b
)
# find the intersection
print
if
opt
.
N1
<
opt
.
N2
:
print
"zinit should be in [
%4.1f
,
%4.1f
]"
%
(
zi2b
,
zi1
)
else
:
print
"zinit should be in [
%4.1f
,
%4.1f
]"
%
(
zi2
,
zi1b
)
print
Event Timeline
Log In to Comment