-
Antoine Cyril David Hoffmann authoredAntoine Cyril David Hoffmann authored
setup.m 6.63 KiB
%% _______________________________________________________________________
SIMDIR = ['../results/',SIMID,'/'];
% Grid parameters
GRID.pmax = PMAX; % Hermite moments
GRID.jmax = JMAX; % Laguerre moments
GRID.Nx = NX; % x grid resolution
GRID.Lx = LX; % x length
GRID.Nexc = NEXC; % to extend Lx when s>0
GRID.Ny = NY; % y ''
GRID.Ly = LY; % y ''
GRID.Nz = NZ; % z resolution
if SG; GRID.SG = '.true.'; else; GRID.SG = '.false.';end;
% Geometry
GEOM.geom = ['''',GEOMETRY,''''];
GEOM.q0 = Q0; % q factor
GEOM.shear = SHEAR; % shear
GEOM.eps = EPS; % inverse aspect ratio
GEOM.kappa = KAPPA; % elongation
GEOM.delta = DELTA; % triangularity
GEOM.zeta = ZETA; % squareness
GEOM.parallel_bc = ['''',PARALLEL_BC,''''];
GEOM.shift_y = SHIFT_Y;
GEOM.Npol = NPOL;
% Model parameters
MODEL.LINEARITY = ['''',LINEARITY,''''];
if RM_LD_T_EQ; MODEL.RM_LD_T_EQ = '.true.'; else; MODEL.RM_LD_T_EQ = '.false.'; end;
MODEL.Na = NA;
if ADIAB_E; MODEL.ADIAB_E = '.true.'; else; MODEL.ADIAB_E = '.false.';end;
MODEL.beta = BETA;
MODEL.mu_x = MU_X;
MODEL.mu_y = MU_Y;
MODEL.N_HD = N_HD;
MODEL.mu_z = MU_Z;
MODEL.HYP_V = ['''',HYP_V,''''];
MODEL.mu_p = MU_P;
MODEL.mu_j = MU_J;
MODEL.nu = NU; % hyper diffusive coefficient nu for HW
% temperature ratio T_a/T_e
MODEL.tau_e = TAU;
MODEL.tau_i = TAU;
% mass ratio sqrt(m_a/m_i)
MODEL.sigma_e = SIGMA_E;
MODEL.sigma_i = 1.0;
% charge q_a/e
MODEL.q_e =-1.0;
MODEL.q_i = 1.0;
if MODEL.q_e == 0; SIMID = [SIMID,'_i']; end;
% gradients L_perp/L_x
MODEL.K_Ni = K_Ni;
MODEL.K_Ne = K_Ne;
MODEL.K_Ti = K_Ti;
MODEL.K_Te = K_Te;
MODEL.k_gB = k_gB; % Magnetic gradient
MODEL.k_cB = k_cB; % Magnetic curvature
MODEL.lambdaD = LAMBDAD;
% CLOSURE parameters
CLOSURE.hierarchy_closure = ['''',HRCY_CLOS,''''];
CLOSURE.nonlinear_closure = ['''',NLIN_CLOS,''''];
CLOSURE.dmax = DMAX;
CLOSURE.nmax = NMAX;
% Collision parameters
COLL.collision_model = ['''',CO,''''];
if (GKCO); COLL.GK_CO = '.true.'; else; COLL.GK_CO = '.false.';end;
if (ABCO); COLL.INTERSPECIES = '.true.'; else; COLL.INTERSPECIES = '.false.';end;
COLL.mat_file = 'null';
switch CO
case 'SG'
COLL.mat_file = 'gk_sugama_P_20_J_10_N_150_kpm_8.0.h5';
% COLL.mat_file = 'gk.hacked_sugama_P_10_J_5_N_150_kpm_8.0.h5';
% COLL.mat_file = 'gk.hacked_sugama_P_4_J_2_N_75_kpm_5.0.h5';
case 'LR'
COLL.mat_file = 'gk_pitchangle_8_P_20_J_10_N_150_kpm_8.0.h5';
case 'LD'
COLL.mat_file = 'gk_landau_P10_J5_dk_5e-2_km_2.0_NFLR_12.h5';
% COLL.mat_file = 'gk_landau_P11_J7_dk_5e-2_km_2.0_NFLR_16.h5';
% COLL.mat_file = 'gk_coulomb_NFLR_12_P_4_J_2_N_50_kpm_4.0.h5';
% COLL.mat_file = 'LDGKii_P10_J5_dk_5e-2_km_5_NFLR_12_k2trunc.h5';
% COLL.mat_file = 'LDGKii_P10_J5_dk_5e-2_km_5_NFLR_30.h5';
% COLL.mat_file = 'LDGK_P6_J3_dk_5e-2_km_2.5_NFLR_20.h5';
end
COLL.mat_file = [gyacomodir,'iCa/',COLL.mat_file];
COLL.mat_file = ['''',COLL.mat_file,''''];
COLL.coll_kcut = COLL_KCUT;
% Time integration and intialization parameters
TIME_INTEGRATION.numerical_scheme = ['''',NUMERICAL_SCHEME,''''];
INITIAL.INIT_OPT = ['''',INIT_OPT,''''];
INITIAL.init_background = BCKGD0;
INITIAL.init_noiselvl = NOISE0;
INITIAL.iseed = 42;
% Naming and creating input file
CONAME = CO;
if GKCO
CONAME = [CONAME,'GK'];
else
CONAME = [CONAME,'DK'];
end
if ~ABCO
CONAME = [CONAME,'aa'];
end
CLOSNAME = [HRCY_CLOS,' dmax=',num2str(DMAX)];
NLCLOSNAME = [NLIN_CLOS,' nmax=',num2str(NMAX)];
% Hermite-Laguerre degrees naming
HLdeg_ = ['_',num2str(PMAX+1),'x',num2str(JMAX+1)];
% temp. dens. drives
drives_ = [];
if abs(K_Ni) > 0; drives_ = [drives_,'_kN_',num2str(K_Ni)]; end;
if abs(K_Ti) > 0; drives_ = [drives_,'_kT_',num2str(K_Ti)]; end;
% collision
coll_ = ['_nu_%1.1e_',CONAME];
coll_ = sprintf(coll_,NU);
% nonlinear
lin_ = [];
if ~LINEARITY; lin_ = '_lin'; end
adiabe_ = [];
if ADIAB_E; adiabe_ = '_adiabe'; end
% resolution and boxsize
res_ = [num2str(GRID.Nx),'x',num2str(GRID.Ny)];
if (LX ~= LY)
geo_ = ['_Lx_',num2str(LX),'_Ly_',num2str(LY)];
else
geo_ = ['_L_',num2str(LX)];
end
if (NZ > 1) %3D case
res_ = [res_,'x',num2str(NZ)];
if abs(Q0) > 0
geo_ = [geo_,'_q0_',num2str(Q0)];
end
if abs(EPS) > 0
geo_ = [geo_,'_e_',num2str(EPS)];
end
if abs(SHEAR) > 0
geo_ = [geo_,'_s_',num2str(SHEAR)];
end
end
switch GEOMETRY
case 'circular'
geo_ = [geo_,'_cir_'];
case 's-alpha'
geo_ = [geo_,'_s-a_'];
case 'miller'
geo_ = [geo_,'_mil_'];
end
% put everything together in the param character chain
u_ = '_'; % underscore variable
PARAMS = [res_,HLdeg_,geo_,drives_,coll_,lin_,adiabe_];
BASIC.RESDIR = [SIMDIR,PARAMS,'/'];
BASIC.MISCDIR = ['/misc/HeLaZ_outputs/',SIMDIR(4:end),PARAMS,'/'];
BASIC.PARAMS = PARAMS;
BASIC.SIMID = SIMID;
BASIC.nrun = 1e8;
BASIC.dt = DT;
BASIC.tmax = TMAX; %time normalized to 1/omega_pe
BASIC.maxruntime = str2num(CLUSTER.TIME(1:2))*3600 ...
+ str2num(CLUSTER.TIME(4:5))*60 ...
+ str2num(CLUSTER.TIME(7:8));
% Outputs parameters
OUTPUTS.dtsave_0d = DTSAVE0D;
OUTPUTS.dtsave_1d = -1;
OUTPUTS.dtsave_2d = DTSAVE2D;
OUTPUTS.dtsave_3d = DTSAVE3D;
OUTPUTS.dtsave_5d = DTSAVE5D;
if W_DOUBLE; OUTPUTS.write_doubleprecision = '.true.'; else; OUTPUTS.write_doubleprecision = '.false.';end;
if W_GAMMA; OUTPUTS.write_gamma = '.true.'; else; OUTPUTS.write_gamma = '.false.';end;
if W_HF; OUTPUTS.write_hf = '.true.'; else; OUTPUTS.write_hf = '.false.';end;
if W_PHI; OUTPUTS.write_phi = '.true.'; else; OUTPUTS.write_phi = '.false.';end;
if W_NA00; OUTPUTS.write_Na00 = '.true.'; else; OUTPUTS.write_Na00 = '.false.';end;
if W_NAPJ; OUTPUTS.write_Napj = '.true.'; else; OUTPUTS.write_Napj = '.false.';end;
if W_SAPJ; OUTPUTS.write_Sapj = '.true.'; else; OUTPUTS.write_Sapj = '.false.';end;
if W_DENS; OUTPUTS.write_dens = '.true.'; else; OUTPUTS.write_dens = '.false.';end;
if W_TEMP; OUTPUTS.write_temp = '.true.'; else; OUTPUTS.write_temp = '.false.';end;
OUTPUTS.job2load = JOB2LOAD;
%% Create directories
if ~exist(SIMDIR, 'dir')
mkdir(SIMDIR)
end
if ~exist(BASIC.RESDIR, 'dir')
mkdir(BASIC.RESDIR)
end
% if ~exist(BASIC.MISCDIR, 'dir')
% mkdir(BASIC.MISCDIR)
% end
%% Compile and WRITE input file
INPUT = write_fort90(OUTPUTS,GRID,GEOM,MODEL,CLOSURE,COLL,INITIAL,TIME_INTEGRATION,BASIC);
nproc = 1;
MAKE = 'cd ..; make; cd wk';
% system(MAKE);
%%
disp(['Set up ',SIMID]);
disp([res_,geo_,HLdeg_]);
if JOB2LOAD>=0
disp(['- restarting from JOBNUM = ',num2str(JOB2LOAD)]); else
disp(['- starting from T = 0']);
end