def perfect_simulations_from_dirs(dirlist,normlist,species,psiN_to_psi=sentinel,global_term_multiplier=sentinel): #for now, assumes that the simulations have been previously finished if type(normlist) is not list: normlist=[normlist]*len(dirlist) if type(species) is not list: species=[species]*len(dirlist) if psiN_to_psi != sentinel: if type(psiN_to_psi) is not list: psiN_to_psi=[psiN_to_psi]*len(dirlist) if global_term_multiplier != sentinel: if type(global_term_multiplier) is not list: global_term_multiplier=[global_term_multiplier]*len(dirlist) input="input.namelist" output="perfectOutput.h5" i=0 simuls=[] for dir in dirlist: input_filename=dir+"/"+input output_filename=dir+"/"+output norm_filename=normlist[i] species_filename=species[i] if psiN_to_psi != sentinel: psiN_to_psi_filename = psiN_to_psi[i] else: psiN_to_psi_filename = None if global_term_multiplier != sentinel: global_term_multiplier_filename = global_term_multiplier[i] else: global_term_multiplier_filename = None print species_filename print psiN_to_psi_filename print global_term_multiplier_filename simuls.append(normalized_perfect_simulation(input_filename,norm_filename,species_filename,output_filename,psiN_to_psi_filename,global_term_multiplier_filename)) simuls[i].description=dir #simuls[i].species=species i=i+1 return simuls
simul.inputs.charges[index] = Z simul.inputs.masses[index] = mHat # str_of_array=' '.join(map(str,l)) simul.inputs.changevar("speciesParameters", "charges", " ".join(map(str, simul.inputs.charges))) simul.inputs.changevar("speciesParameters", "masses", " ".join(map(str, simul.inputs.masses))) # simulation initialization input_filename = "input.namelist" norm_filename = "norms.namelist" species_filename = "species" psiN_to_psi_filename = "psiAHat.h5" output_filename = "perfectOutput.h5" simul = normalized_perfect_simulation(input_filename, norm_filename, species_filename, None, None) species = simul.species_list # indicate which index in the above list that corresponds to main ions, impurity ions, and electrons. # main ions: will have density given by input. Potential calculated from this. # impurity: will have density given by its eta and the potential # electron: will be assumed to not violate perfect orderings and thus use inputs. mI = 0 zI = 1 eI = 2 Tped = 0.9 a = 0.7 # minor radius in meters xwidth = 0.03 # pedestal width in r dxdpsiN = drdpsiN_of_r(a, simul) # generate dr/dpsi_N. Returns a function upShift_denom = 2
from generate_compatible_profiles import generate_compatible_profiles from generate_psi_of_r import drdpsiN_of_r def simul_manipulation(simul,group,field,change): #increase field in group by change simul.inputs.inputfile[group][field]=simul.inputs.inputfile[group][field]+change simul.inputs.changevar(group,field,simul.inputs.inputfile[group][field]) #simulation initialization input_filename="input.namelist" norm_filename="norms.namelist" output_filename="perfectOutput.h5" original_simul=normalized_perfect_simulation(input_filename,norm_filename,None) original_simul.species=["d","N","e"] Tped=0.9 mI=0 zI=1 eI=2 a=0.7 #minor radius in meters xwidth=0.03 #pedestal width in r imp_conc=0.01 #factor relating impurity and main ion concentration at pedestal top dxdpsiN=drdpsiN_of_r(a,original_simul) #generate dr/dpsi_N. Returns a function Tped_e=0.9 dTCoredx_e=-0.1*Tped_e/xwidth