SOLARIS_Web_Simulation/WoodsSaxon.js
2023-07-25 19:11:12 -04:00

92 lines
2.6 KiB
JavaScript

var V0;
var R0;
var a0;
var VSO;
var RSO;
var aSO;
var Z;
var Rc;
var nStep;
var dr;
class State{
constructor(energy, jpi){
this.energy = energy;
this.jpi = jpi;
}
}
var states = [];
function WSCal(){
V0 = parseFloat(document.getElementById('V0').value);
R0 = parseFloat(document.getElementById('R0').value);
a0 = parseFloat(document.getElementById('a0').value);
VSO = parseFloat(document.getElementById('VSO').value);
RSO = parseFloat(document.getElementById('RSO').value);
aSO = parseFloat(document.getElementById('aSO').value);
Z = parseInt(document.getElementById('Z').value);
Rc = parseFloat(document.getElementById('Rc').value);
nStep = parseInt(document.getElementById('nStep').value);
dr = parseFloat(document.getElementById('dr').value);
let str = 'WoodsSaxon.py?V0=' + V0 +
'&R0=' + R0 +
'&a0=' + a0 +
'&VSO=' + VSO +
'&RSO=' + RSO +
'&aSO=' + aSO +
'&Z=' + Z +
'&Rc=' + Rc +
'&nStep=' + nStep +
'&dr=' + dr ;
console.log(str);
states = [];
let client = new XMLHttpRequest();
client.onreadystatechange = function() {
let haha = client.responseText.split('\n').slice(11);
haha.forEach(line =>{
console.log(line);
if( !line.includes("=====") && line.length != 0) {
let jpi = line.substring(4, 12);
let energy = parseFloat(line.substring(13,25));
states.push(new State(energy, jpi));
}
});
}
client.open('GET', str, false);
client.send();
states.forEach(st =>{
console.log( st.jpi + ", " + st.energy);
})
Plotly.purge("Plot_WS");
let nEx = states.length;
let data = [];
for( let i = 0; i < nEx; i++){
let newData = {
x : [0,1],
y : [states[i].energy, states[i].energy],
mode:"lines",
name: states[i].jpi,
type:"scatter"
}
data.push(newData);
}
let layout = {
xaxis: {range: [-1, 2], title: { text : "Ex", standoff : 1}, mirror : "allticks", linewidth : "1"},
yaxis: {range: [V0, 0], title: "Energy [MeV]" , mirror : "allticks", linewidth : "1"},
//dragmode : "pan",
margin: { l: 40, r: 40, b : 60, t : 40},
legend: {yanchor:"top", xanchor:"left", x:"0.01",y:"0.99" }
};
Plotly.newPlot( "Plot_WS", data, layout, {responsive: true});
}