Commit 5996f816 authored by Antoine RAVETTA's avatar Antoine RAVETTA

Merge remote-tracking branch 'origin/master'

parents feb5be31 70a4877b
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 2
}
......@@ -4,7 +4,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"DATA PRODUCTION\n",
"# Data Production\n",
"\n",
"We define some constants for the whole problem, as well as some functions :\n",
"\n",
......@@ -15,17 +15,9 @@
},
{
"cell_type": "code",
"execution_count": 5,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"diff : 5.570423008216336e-08j\n"
]
}
],
"outputs": [],
"source": [
"import numpy as np\n",
"from CCCN import CrankNicolson\n",
......@@ -68,18 +60,9 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/antoine/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:20: RuntimeWarning: divide by zero encountered in true_divide\n",
"/home/antoine/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:20: RuntimeWarning: invalid value encountered in true_divide\n"
]
}
],
"outputs": [],
"source": [
"crank = CrankNicolson()\n",
"\n",
......@@ -98,7 +81,7 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
......
"""
Solution of filamentation with charge density coupled
"""
import numpy as np
import scipy.sparse
import scipy.linalg as la
class CrankNicolsonFilamentation:
"""A class that solves the entire filamentation"""
# Cylindrical grid with rectangular time
def set_grid(self, r_max, n_r, z_min, z_max, n_z, t_min, t_max, n_t):
self.r_max, self.n_r = r_max, n_r
self.z_min, self.z_max, self.n_z = z_min, z_max, n_z
self.t_min, self.t_max, self.n_t = t_min, t_max, n_t
self.r_pts, self.delta_r = np.linspace(0, r_max, n_r, retstep=True, endpoint=False, dtype=complex)
self.z_pts, self.delta_z = np.linspace(z_min, z_max, n_z, retstep=True, endpoint=False, dtype=complex)
self.t_pts, self.delta_t = np.linspace(t_min, t_max, n_t, retstep=True, endpoint=False, dtype=complex)
# Parameters of the scheme
# Dr for diffraction, Dt for dispersion
def set_parameters(self, Dr, Dt, V, ofi, ava, K, sigma, omega0, tau, f):
# V has to be vectorised
self.Dr, self.Dt, self.V, self.ofi, self.ava, self.K, self.sigma, self.omega0, self.tau, self.f = \
Dr, Dt, V, ofi, ava, K, sigma, omega0, tau, f
# One solving step for r dependency and t dependency
def solve(self, E_init):
# Coefficient of matrices
sig_r = self.Dr * (self.delta_z) / 2. / self.delta_r**2
sig_t = self.Dt * (self.delta_z/2) / 2. / (self.delta_t)**2 # (half t operator)
nu = lambda x : -self.V(x) * (self.delta_z) / 4. / self.delta_r # minus sign for V convention
# Empty solution matrices (z,r,t)
self.E_matrix = np.zeros([self.n_z, self.n_r, self.n_t], dtype=complex)
self.rho_matrix = np.zeros([self.n_z, self.n_r, self.n_t])
#self.nonlin1 = np.zeros([self.n_z, self.n_r, self.n_t], dtype=complex)
#self.nonlin2 = np.zeros([self.n_z, self.n_r, self.n_t], dtype=complex)
# Sparse solver
Ar = self._fillAr_sp(sig_r, nu, self.n_r)
Br = self._fillBr_sp(sig_r, nu, self.n_r)
At = self._fillAt_sp(sig_t, self.n_t) # null advection coefficient
Bt = self._fillBt_sp(sig_t, self.n_t) # null advection coefficient
# Set boundary conditions
# Spatial:
# Dirichlet at infinity
Ar[1,-1] = 1.0
Ar[2,-2] = 0.0
Br[-1,-1] = 0.0
Br[-1,-2] = 0.0
# Neumann at r=0
Ar[0,1] = -2*sig_r
Br[0,1] = 2*sig_r
# Time
# Neumann at t=t_min, t_max
for b in [0,1]:
At[1,-b] = 1.0
At[2*b,1-3*b] = 0.0
Bt[-b,-b] = 0.0
Bt[-b,1-3*b] = 0.0
# Propagate
E = E_init.copy()
E1 = E_init.copy()
E2 = E_init.copy()
rho = np.zeros([self.n_r, self.n_t])
for n in range(self.n_z):
# General step initialisation
self.E_matrix[n,:,:] = E
self.rho_matrix[n,:,:] = rho
# First fourth step
# t solver for each r with half non linear
fE1 = self.f(E) - self.sigma/2*(1 + 1j*self.omega0*self.tau) * rho[:,:] * E[:,:]
#self.nonlin1[n] = fE1.copy()
#print('Focus :', self.f(E)[0,self.n_t//2] / E[0,self.n_t//2])
#print('Defocus :', fE1[0,self.n_t//2] / E[0,self.n_t//2])
# Non linear term at origin
if n==0:
fE_old = fE1.copy()
# Half non linear term with half sum
for i in range(self.n_r):
E1[i,:] = la.solve_banded((1,1), At, Bt.dot(E[i,:]) + \
(self.delta_z/2.) * (1.5 * fE1[i,:] - 0.5 * fE_old[i,:]), \
check_finite=False)
# Non linear term update
fE_old = fE1.copy()
# Middle half step
# r solver solver for each t
for i in range(self.n_t):
E2[:,i] = la.solve_banded((1,1), Ar, Br.dot(E1[:,i]), \
check_finite=False)
# Second fourth step
# t solver for each r with half non linear
fE2 = self.f(E2) - self.sigma/2*(1 + 1j*self.omega0*self.tau) * rho[:,:] * E2[:,:]
#self.nonlin2[n] = fE2.copy()
# Half non linear term with half sum (old already defined even at n=0)
for i in range(self.n_r):
E[i,:] = la.solve_banded((1,1), At, Bt.dot(E2[i,:]) + \
(self.delta_z/2.) * (1.5 * fE2[i,:] - 0.5 * fE_old[i,:]), \
check_finite=False)
# Non linear term update
fE_old = fE2.copy()
# E has been updated, put into E_matrix at next step
# Density coupling (notations article)
# Vectorised Calculation for all r
# Time integration from null conditions
for k in range(self.n_t-1):
# Trapeze integral
a = np.exp(self.ava*self.delta_t * (np.abs(E[:,k+1])**2 + np.abs(E[:,k])**2)*0.5)
# Next t step calculation for next z step
rho[:,k+1] = a * (rho[:,k] + (self.delta_t/2) * self.ofi*np.abs(E[:,k])**(2*self.K)) \
+ (self.delta_t/2) * self.ofi*np.abs(E[:,k+1])**(2*self.K)
# rho has been updated, put into rho_matrix at next step
# Deep copy of results for export
# np.savetxt ?
def get_data(self):
return self.E_matrix.copy(), self.rho_matrix.copy()
# Diagonal packing for banded r
def _fillAr_sp(self, sig, nu, n):
"""Returns a tridiagonal matrix in compact form ab[1+i-j,j]=a[i,j]"""
A = np.zeros([3,n], dtype=complex) # A has three diagonals and size n
# Superdiagonal
A[0,1:] = -(sig - nu(self.r_pts[:-1]))
# Diagonal
A[1] = 1+2*sig
# Subdiagonal
A[2,:-1] = -(sig + nu(self.r_pts[1:]))
return A
# Diagonal packing for banded t
def _fillAt_sp(self, sig, n):
"""Returns a tridiagonal matrix in compact form ab[1+i-j,j]=a[i,j]"""
_o = np.ones(n, dtype=complex)
A = np.zeros([3,n], dtype=complex) # A has three diagonals and size n
# Superdiagonal
A[0,1:] = -sig
# Diagonal
A[1] = 1+2*sig
# Subdiagonal
A[2,:-1] = -sig
return A
# Sparse tridiagonal storage for r
def _fillBr_sp(self, sig, nu, n):
"""Returns a tridiagonal sparse matrix in csr-form"""
_o = np.ones(n, dtype=complex)
supdiag = (sig - nu(self.r_pts[:-1]))
diag = (1-2*sig)*_o
subdiag = (sig + nu(self.r_pts[1:]))
return scipy.sparse.diags([supdiag, diag, subdiag], [1,0,-1], (n,n), format="csr")
# Sparse tridiagonal storage for t
def _fillBt_sp(self, sig, n):
"""Returns a tridiagonal sparse matrix in csr-form"""
_o = np.ones(n, dtype=complex)
supdiag = sig*_o[:-1]
diag = (1-2*sig)*_o
subdiag = sig*_o[:-1]
return scipy.sparse.diags([supdiag, diag, subdiag], [1,0,-1], (n,n), format="csr")
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Functions"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def potential(r):\n",
" try:\n",
" return diff_coeff / r\n",
" except ZeroDivisionError:\n",
" return 0\n",
"\n",
"\n",
"def gaussian(r, t, r0=0, w0=1, t0=0, tp=1, Pin=1):\n",
" return np.sqrt(2*Pin/(np.pi*w0**2)) * np.exp(-(r-r0)** 2/(w0**2) - (t-t0)** 2/(tp**2))\n",
"\n",
"\n",
"def initial_enveloppe(r_pts, t_pts, w0, tp, Pin):\n",
" return np.array([[gaussian(r_pts[i], t_pts[j], w0=w0, tp=tp, Pin=Pin) for j in range(len(t_pts))] \\\n",
" for i in range(len(r_pts))])\n",
"\n",
"#----- Non linearities --------------\n",
"\n",
"def kerr(E):\n",
" return 1j * k * n2 * np.abs(E)**2 * E\n",
"\n",
"def answer(t):\n",
" pass\n",
" \n",
"def kerr_delay(E):\n",
" pass\n",
" \n",
"\n",
"def kerr_MPA(E):\n",
" return 1j*k*n2*np.abs(E)**2 * E - beta/2 * np.abs(E)**(2*K-2) * E"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Parameters"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"from FCN import CrankNicolsonFilamentation\n",
"\n",
"# Beam\n",
"c = 3e8\n",
"lambd = 0.7e-6\n",
"w0 = 1e-3\n",
"tp = 85e-15\n",
"#tp = 1\n",
"Pcr = 1.8e9\n",
"#Pin = 5 * Pcr\n",
"Pin = 2*Pcr\n",
"\n",
"# Dispersion\n",
"k = 2 * np.pi / lambd\n",
"k_2 = 2e-28\n",
"\n",
"# Kerr Effect\n",
"n2 = 5.57e-23\n",
"#n2 = 7e-23\n",
"\n",
"# MPA\n",
"K = 7\n",
"beta = 6.5e-104\n",
"\n",
"# Density\n",
"omega0 = k * c\n",
"ofi = 8.84e-71/omega0\n",
"#ofi = 0\n",
"ava = 2.9e-6\n",
"#ava = 0\n",
"sigma = 5.1e-24\n",
"tau = 3.5e-13\n",
"\n",
"diff_coeff = 1j*1/(2 * k)\n",
"#diff_coeff = 0\n",
"#diff_coeff = 1e-4\n",
"disp_coeff = -1j*k_2/2\n",
"#disp_coeff = 1j * 1e-25\n",
"#disp_coeff = 0\n",
"\n",
"print('diff :', diff_coeff)\n",
"print('disp :', disp_coeff)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Instantiation"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"delta_z = 2e-4\n",
"z_max = 4\n",
"n_z = int(z_max/delta_z)\n",
"\n",
"crank = CrankNicolsonFilamentation()\n",
"\n",
"crank.set_grid(r_max=2e-3, n_r=150, z_min=0, z_max=z_max, n_z=n_z, t_min=-2e-13, t_max=2e-13, n_t=150)\n",
"crank.set_parameters(Dr=diff_coeff, Dt=disp_coeff, V=potential, ofi=ofi, ava=ava ,K=K, sigma=sigma, \\\n",
" omega0=omega0, tau=tau, f=kerr_MPA)\n",
"\n",
"crank.solve(initial_enveloppe(crank.r_pts, crank.t_pts, w0, tp, Pin))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Initial conditions"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"\n",
"mat = initial_enveloppe(crank.r_pts, crank.t_pts, w0, tp, Pin)\n",
"\n",
"fig, ax = plt.subplots()\n",
"mesh = ax.pcolormesh(np.real(crank.t_pts), np.real(crank.r_pts), np.abs(mat)**2)\n",
"plt.colorbar(mesh, ax=ax)\n",
"#ax.set_ylim(0,1e-2)\n",
"fig.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plots"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"E, rho = crank.get_data()\n",
"#E, rho = crank.E_matrix.copy(), crank.rho_matrix.copy()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fig, ax = plt.subplots()\n",
"#mesh = ax.pcolormesh(np.real(crank.r_pts), np.real(crank.z_pts), np.abs(E[:,:,crank.n_t//2])**2)\n",
"mesh = ax.pcolormesh(np.abs(E[:,:,crank.n_t//2])**2)\n",
"#mesh = ax.pcolormesh(np.log(np.abs(E[:,:,crank.n_t//2])**2))\n",
"plt.colorbar(mesh, ax=ax)\n",
"#ax.set_ylim(2,2.5)\n",
"ax.set_xlim(0, 20)\n",
"#plt.savefig('kerr', dpi=300)\n",
"fig.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#listemax = np.array([np.amax(np.abs(E[i,:,:])**2) for i in range(crank.n_z)])\n",
"listemax = np.array([np.amax(np.abs(E[i,2,:])**2) for i in range(crank.n_z)])\n",
"\n",
"maxi = crank.n_z\n",
"\n",
"plt.figure()\n",
"plt.plot(np.real(crank.z_pts[:maxi]), listemax[:maxi]/Pcr)\n",
"plt.xlabel('Propagation distance (m)')\n",
"plt.ylabel('Squared field amplitude ($V^2 \\cdot m^{-2}$)')\n",
"plt.savefig('filamentation_2P.png', dpi=300)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print('Kerr: ', 1/(n2*k*3e17))\n",
"print('Plasma: ', 1/(sigma/2*omega0*tau*5e22))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The two caracteristic distances are around 5 mm. Therefore $\\Delta z$ has to be chosen around 0.5 mm and 0.1 mm is even better."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"listemax = np.array([np.amax(rho[i,:,:]) for i in range(crank.n_z)])\n",
"\n",
"maxi = crank.n_z\n",
"\n",
"plt.figure()\n",
"plt.plot(np.real(crank.z_pts[:maxi]), listemax[:maxi])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"fig, ax = plt.subplots()\n",
"mesh = ax.pcolormesh(np.real(crank.r_pts), np.real(crank.z_pts), rho[:,:,-1])\n",
"plt.colorbar(mesh, ax=ax)\n",
"#ax.set_ylim(1.29999999,1.30000001)\n",
"#ax.set_xlim(0, 4e-5)\n",
"#plt.savefig('kerr', dpi=300)\n",
"fig.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"plt.figure()\n",
"plt.plot(np.abs(E[4500,:,crank.n_t//2])**2)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
......@@ -12,7 +12,6 @@ $$
E(z_i, r_j, t_k)
$$
**Warning**: Non linear term treated with **space half step**. Initial conditions at $z=0$ in **2D**.
Half step $\Delta z/2$ in the scheme.
"""
import numpy as np
......@@ -156,4 +155,4 @@ class CrankNicolsonDisp:
diag = (1-2*sig)*_o
subdiag = sig*_o[:-1]
return scipy.sparse.diags([supdiag, diag, subdiag], [1,0,-1], (n,n), format="csr")
\ No newline at end of file
return scipy.sparse.diags([supdiag, diag, subdiag], [1,0,-1], (n,n), format="csr")
......@@ -2,18 +2,9 @@
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"diff : 5.570423008216336e-08j\n",
"disp : -1e-28j\n"
]
}
],
"outputs": [],
"source": [
"import numpy as np\n",
"from HSCN import CrankNicolsonDisp\n",
......@@ -57,18 +48,9 @@
},
{
"cell_type": "code",
"execution_count": 4,
"execution_count": null,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/antoine/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:27: RuntimeWarning: divide by zero encountered in true_divide\n",
"/home/antoine/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:27: RuntimeWarning: invalid value encountered in true_divide\n"
]
}
],
"outputs": [],
"source": [
"crank = CrankNicolsonDisp()\n",
"\n",
......@@ -80,7 +62,7 @@
},
{
"cell_type": "code",
"execution_count": 7,
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
......
......@@ -8,7 +8,6 @@ Add non linear integrations in a symmetric manner:
* Half $z$ step and total $r$ step;
* Fourth $z$ step and half $t$ step with half non linear terms.
**Warning**: do not forget $\Delta z/4$, $\Delta z/2$ and $\Delta t/2$ factors to obtain the right scale.
"""
import numpy as np
......@@ -180,4 +179,4 @@ class CrankNicolsonFocus:
diag = (1-2*sig)*_o
subdiag = sig*_o[:-1]
return scipy.sparse.diags([supdiag, diag, subdiag], [1,0,-1], (n,n), format="csr")
\ No newline at end of file
return scipy.sparse.diags([supdiag, diag, subdiag], [1,0,-1], (n,n), format="csr")
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
This diff is collapsed.
......@@ -13,26 +13,9 @@
},
{
"cell_type": "code",
"execution_count": 6,
"execution_count": null,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "could not convert string to float: \"\\x93NUMPY\\x01\\x00v\\x00{'descr':\"",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-6-b909b49c3304>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 26\u001b[0;31m \u001b[0mdata_ary\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mr_pts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mz_pts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mt_pts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mimport_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata_path\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 27\u001b[0m \u001b[0mplot_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mr_pts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mt_pts\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata_ary\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m<ipython-input-6-b909b49c3304>\u001b[0m in \u001b[0;36mimport_data\u001b[0;34m(path)\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mimport_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mdata_array\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloadtxt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m'E.npy'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencoding\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'latin1'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0mr_pts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m'r_pts.npy'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencoding\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'latin1'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mz_pts\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m'z_pts.npy'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencoding\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'latin1'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36mloadtxt\u001b[0;34m(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin, encoding, max_rows)\u001b[0m\n\u001b[1;32m 1139\u001b[0m \u001b[0;31m# converting the data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1140\u001b[0m \u001b[0mX\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1141\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mread_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_loadtxt_chunksize\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1142\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mX\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1143\u001b[0m \u001b[0mX\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36mread_data\u001b[0;34m(chunk_size)\u001b[0m\n\u001b[1;32m 1066\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1067\u001b[0m \u001b[0;31m# Convert each value according to its column and store\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1068\u001b[0;31m \u001b[0mitems\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mconv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mval\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mconv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mval\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconverters\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1069\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1070\u001b[0m \u001b[0;31m# Then pack it according to the dtype's nesting\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 1066\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1067\u001b[0m \u001b[0;31m# Convert each value according to its column and store\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1068\u001b[0;31m \u001b[0mitems\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mconv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mval\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mconv\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mval\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mconverters\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvals\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1069\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1070\u001b[0m \u001b[0;31m# Then pack it according to the dtype's nesting\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36mfloatconv\u001b[0;34m(x)\u001b[0m\n\u001b[1;32m 773\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'0x'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 774\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mfloat\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfromhex\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 775\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 776\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 777\u001b[0m \u001b[0mtyp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtype\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mValueError\u001b[0m: could not convert string to float: \"\\x93NUMPY\\x01\\x00v\\x00{'descr':\""
]
}
],
"outputs": [],
"source": [
"%matplotlib inline\n",
"\n",
......
This diff is collapsed.
This diff is collapsed.
No preview for this file type
......@@ -3,32 +3,32 @@
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
%Mise en page
% Mise en page
\usepackage[bottom=2cm,top=3cm,inner=2cm,outer=2cm,headheight=15pt]{geometry}
%Colonnes
% Colonnes
\usepackage{multicol}
\setlength{\columnsep}{0.5cm}
\usepackage{graphicx,tikz}
%Utopia with standard \mathcal
% Utopia with standard \mathcal
\usepackage[utopia,cal=cmcal]{mathdesign}
\usepackage{bm} %Bold symbols
\usepackage{amsmath}
%Mise en forme du texte
% Mise en forme du texte
\setlength{\parindent}{0.5cm}
\setlength{\parskip}{2pt}
\usepackage{setspace}
\setstretch{1.1}
%Document information
% Document information
\title{Laser Filamentation}
\author{Mathieu Rasson \and Antoine Ravetta}
\date{November and December 2019}
%En-tête et pied
% En-tête et pied
\makeatletter
\usepackage{fancyhdr}
......@@ -71,8 +71,6 @@ The propagation of a high intensity laser pulse in air is considered. As the int
\section*{November 5th 2019}
%Beginning of the project. Organisation. Physics approach of coupled non linear propagation equations. Terms elaborated. Coding steps listed. Work division and documents sharing (with coordinators) to be done.
Course about versions management with a \texttt{git} tool. Delocalised recovery of files on \texttt{Gitlab} provided by the BR. \textbf{Warning}: give access to Couairon and Ferrero.
\subsubsection*{Physics of the Problem}
......@@ -222,6 +220,23 @@ Non linear algorithm does end with Kerr effect. Creation of a concentration poin
\item Add defocusing terms.