From b1f8e393c437573e394972b5a06e322c20b901a1 Mon Sep 17 00:00:00 2001 From: Jeff Candy Date: Fri, 20 Dec 2024 05:39:25 +0000 Subject: [PATCH] DMD fixes --- .gitignore | 1 + cgyro/bin/cgyrodmd | 32 ++++++++++++++++---------------- shared/bin/gacode_setup | 12 ------------ shared/bin/gacode_setup.tcsh | 35 ----------------------------------- shared/bin/update_gacode.csh | 27 --------------------------- 5 files changed, 17 insertions(+), 90 deletions(-) delete mode 100755 shared/bin/gacode_setup.tcsh delete mode 100644 shared/bin/update_gacode.csh diff --git a/.gitignore b/.gitignore index 5a061923c..82e9fe8d6 100644 --- a/.gitignore +++ b/.gitignore @@ -56,6 +56,7 @@ tglf/tools/ptglf/src/ptglf tgyro/src/tgyro_main le3/src/le3 le3/profiles_3d/profiles_3d +xgyro/src/xgyro f2py/build f2py/gacode.egg-info f2py/pygacode.egg-info diff --git a/cgyro/bin/cgyrodmd b/cgyro/bin/cgyrodmd index 14709552c..3ea0d0d49 100755 --- a/cgyro/bin/cgyrodmd +++ b/cgyro/bin/cgyrodmd @@ -55,7 +55,7 @@ def opts(): # DMD utility: helper function for plotting def axishelp(ax,x,ylabel): - + ax.set_xlabel(r"$\theta_*$") ax.set_ylabel(ylabel) ax.grid(which="both",ls=":") @@ -64,7 +64,7 @@ def axishelp(ax,x,ylabel): ax.set_xlim(-max(x),max(x)) return ax -# DMD utility: Map from (kx,theta) to theta_* +# DMD utility: Map from (kx,theta) to theta_* def map1d(f2d,q): nr = f2d.shape[0] nt = f2d.shape[1] @@ -93,7 +93,7 @@ def downsample(f,n,eps=0.01): w = 1/(1+eps*u*u) w = w/np.sum(w) - + fdown = np.sum(f[:,:m].reshape(npar,-1,n)*w[None,None,:],axis=2) return fdown @@ -131,7 +131,7 @@ if sim.hiprec_flag == 0: sys.exit() t = sim.t -n_radial = sim.n_radial +n_radial = sim.n_radial n_theta = sim.theta_plot n_species = sim.n_species @@ -165,7 +165,7 @@ ovec['ee'],a0 = map1d(y,sim.q) dt = k*(t[1]-t[0]) #--------------------------------------------------------------------------- -# Initialize (classic) DMD object +# Initialize (classic) DMD object dmd = DMD(svd_rank=0,exact=True,sorted_eigs='abs') # dictionary of eigenvalues @@ -173,7 +173,7 @@ edict = {} # dictionary of eigenmodes mdict = {} for x in ostr: - down = downsample(ovec[x],k) + down = downsample(ovec[x],k) dmd.fit(down) edict[x] = 1j*np.log(dmd.eigs)/dt mdict[x] = dmd.modes @@ -185,7 +185,7 @@ evec = np.zeros([3,nmode],dtype=complex) # vector of sorted eigenmodes mvec = np.zeros([3,n_radial*n_theta,nmode],dtype=complex) for i,x in enumerate(ostr): - z = edict[x] + z = edict[x] zi = z.imag k = np.flip(np.argsort(zi)) evec[i,:] = z[k[:nmode]] @@ -196,8 +196,8 @@ m01 = [] m02 = [] for i in range(nmode): for j in range(nmode): - em = abs(zvec[0,i]-zvec[1,j]) - en = abs(zvec[0,i]-zvec[2,j]) + em = abs(evec[0,i]-evec[1,j]) + en = abs(evec[0,i]-evec[2,j]) if em < tol: m01.append([i,j]) if en < tol: @@ -224,7 +224,7 @@ ax.grid(which="both",ls=":") ax.grid(which="major",ls=":") for x in ostr: - ax.scatter(evec[x].real,evec[x].imag,s=60,**args[x],alpha=0.15) + ax.scatter(edict[x].real,edict[x].imag,s=60,**args[x],alpha=0.15) freqs = [] field = [] @@ -234,18 +234,18 @@ for v in m01: if v[0] == w[0]: i0 = v[0] ; i1 = v[1] ; i2 = w[1] rvec = np.array([i0,i1,i2]) - e0 = (zvec[0,i0]+zvec[1,i1]+zvec[2,i2])/3 - err = abs(zvec[0,i1]-e0)+abs(zvec[1,i1]-e0)+abs(zvec[2,i2]-e0) + e0 = (evec[0,i0]+evec[1,i1]+evec[2,i2])/3 + err = abs(evec[0,i1]-e0)+abs(evec[1,i1]-e0)+abs(evec[2,i2]-e0) print("gamma = {:+.3f} omega = {:+.3f} | err = {:.3e}".format(e0.imag,e0.real,err)) for i,x in enumerate(ostr): if haslabel: - ax.scatter(zvec[i,rvec[i]].real,zvec[i,rvec[i]].imag,s=60,**args[x]) + ax.scatter(evec[i,rvec[i]].real,evec[i,rvec[i]].imag,s=60,**args[x]) else: - ax.scatter(zvec[i,rvec[i]].real,zvec[i,rvec[i]].imag,s=60,**args[x],label=fdict[x]) + ax.scatter(evec[i,rvec[i]].real,evec[i,rvec[i]].imag,s=60,**args[x],label=fdict[x]) haslabel = True freqs.append(e0) - field.append(mvec[:,:,i1]) + field.append(mvec[:,:,i1]) xmax = max(np.real(freqs))+0.05 xmin = min(np.real(freqs))-0.05 @@ -292,7 +292,7 @@ for m in range(nm): ax.plot(xt,yr,color='k',linewidth=2,alpha=0.3,linestyle='--') ax.plot(xt,yi,color='r',linewidth=2,alpha=0.3,linestyle='--') - # DMD + # DMD p = np.argmax(abs(field[m][i,:])) a0d = field[m][i,p] yr = np.real(field[m][i,:]/a0d) diff --git a/shared/bin/gacode_setup b/shared/bin/gacode_setup index 3afa61637..606b7ef56 100755 --- a/shared/bin/gacode_setup +++ b/shared/bin/gacode_setup @@ -13,19 +13,7 @@ export PATH=$GACODE_ROOT/tglf/bin:${PATH} export PATH=$GACODE_ROOT/le3/bin:${PATH} export PATH=$GACODE_ROOT/profiles_gen/bin:${PATH} export PATH=$GACODE_ROOT/shared/bin:${PATH} -export PATH=$GACODE_ROOT/gftm/bin:${PATH} export PATH=$GACODE_ROOT/qlgyro/bin:${PATH} -if [ -d $GACODE_ROOT/../gacode_add ] -then - export GACODE_ADD_ROOT=$GACODE_ROOT/../gacode_add - export PATH=$GACODE_ADD_ROOT/freya/bin:${PATH} - export PATH=$GACODE_ADD_ROOT/prefreya/bin:${PATH} -fi - export PYTHONPATH=$GACODE_ROOT/f2py:${PYTHONPATH} export PYTHONPATH=$GACODE_ROOT/f2py/pygacode:${PYTHONPATH} - -export EPEDNN_MODEL_DIR=$GACODE_ROOT/../neural/eped1nn/models/EPED1_H_superH/ -export TGLFNN_MODEL_DIR=$GACODE_ROOT/../neural/tglfnn/models/DIIID_ion_stiffness_60_rotation/ - diff --git a/shared/bin/gacode_setup.tcsh b/shared/bin/gacode_setup.tcsh deleted file mode 100755 index f331414c2..000000000 --- a/shared/bin/gacode_setup.tcsh +++ /dev/null @@ -1,35 +0,0 @@ -#-------------------------------------------- -# Environment variable setup for gacode -#-------------------------------------------- -#!/bin/tcsh - -setenv PATH $GACODE_ROOT/tgyro/bin:${PATH} -setenv PATH $GACODE_ROOT/gyro/bin:${PATH} -setenv PATH $GACODE_ROOT/cgyro/bin:${PATH} -setenv PATH $GACODE_ROOT/neo/bin:${PATH} -setenv PATH $GACODE_ROOT/vgen/bin:${PATH} -setenv PATH $GACODE_ROOT/tglf/bin:${PATH} -setenv PATH $GACODE_ROOT/glf23/bin:${PATH} -setenv PATH $GACODE_ROOT/le3/bin:${PATH} -setenv PATH $GACODE_ROOT/shared/bin:${PATH} -setenv PATH $GACODE_ROOT/profiles_gen/bin:${PATH} - -if ( $?GACODE_ADD_ROOT ) then - setenv PATH $GACODE_ADD_ROOT/freya/bin:${PATH} - setenv PATH $GACODE_ADD_ROOT/prefreya/bin:${PATH} -endif - -if ( $?PYTHONPATH ) then - setenv PYTHONPATH $GACODE_ROOT/f2py:$GACODE_ROOT/f2py/pygacode:${PYTHONPATH} -else - setenv PYTHONPATH $GACODE_ROOT/f2py:$GACODE_ROOT/f2py/pygacode -endif - -if ( $?IDL_PATH ) then - setenv IDL_PATH $GACODE_ROOT/gyro/vugyro:${IDL_PATH} -else - setenv IDL_PATH $GACODE_ROOT/gyro/vugyro -endif - -setenv EPEDNN_MODEL_DIR $GACODE_ROOT/../neural/eped1nn/models/EPED1_H_superH/ -setenv TGLFNN_MODEL_DIR $GACODE_ROOT/../neural/tglfnn/models/DIIID_ion_stiffness_60_rotation/ diff --git a/shared/bin/update_gacode.csh b/shared/bin/update_gacode.csh deleted file mode 100644 index cec997f64..000000000 --- a/shared/bin/update_gacode.csh +++ /dev/null @@ -1,27 +0,0 @@ -date -echo ' Setting up the environment' -env | grep -i gacode -source $GACODE_ROOT/shared/env/env.${GACODE_PLATFORM}.tcsh -source $GACODE_ROOT/shared/bin/gacode_setup.tcsh -echo 'Done setting up the environment' -echo 'Changing to directory /tmp/gacode' -(cd /tmp/gacode && git pull) || (cd /tmp && rm -rf gacode && git clone git@github.com:gafusion/gacode.git ) -cd /tmp/gacode - -echo ' Cleaning GACODE; log in /tmp/gacode.make_clean.log' -make clean > /tmp/gacode.make_clean.log -echo 'Done cleaning GACODE' - -echo ' Making GACODE; log in /tmp/gacode.make.log' -make > /tmp/gacode.make.log -echo 'Done making GACODE' - -tail -n5 /tmp/gacode.make.log - -set tmp_dir=`dirname $GACODE_ROOT` - -cp -ru /tmp/gacode ${tmp_dir} -python -m compileall ${GACODE_ROOT}/python -chgrp -R atom $GACODE_ROOT -chmod -R g+rwX $GACODE_ROOT -date