Compare commits

..

No commits in common. '73109ce2e7fd538773eed03ebe7a90a9ed256a11' and 'c617962fd283b9aeef4662e0f590897e311d1006' have entirely different histories.

Binary file not shown.

@ -1,41 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?> <script type="importmap">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/strict.dtd">
<html xmlns="http://www.w3.org/TR/xhtml1/strict" >
<head>
<title>Simulador de Aerogeneradores y Parques Eólicos (SAPE), CSC-CONICET</title>
<script type="importmap">
{ {
"imports": { "imports": {
"three": "https://cdn.jsdelivr.net/npm/three@0.136/build/three.module.js", "three": "https://cdn.jsdelivr.net/npm/three@0.136/build/three.module.js",
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.136/examples/jsm/" "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.136/examples/jsm/"
} }
} }
</script> </script>
<link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Encode+Sans:wdth,wght@87.5,100..900&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Encode+Sans:wdth,wght@87.5,100..900&display=swap" rel="stylesheet">
<link href="style.css" rel="stylesheet"> <link href="style.css" rel="stylesheet">
<script type="module" src="js/main.js"></script> <script type="module" src="js/main.js"></script>
<script> <script>
function hide() { function hide() {
document.getElementById("popup").style.display = "none"; document.getElementById("popup").style.display = "none";
} }
</script> </script>
</head> <body>
<body> <div id="container">
<div id="container"> <div id="popup">
<div id="popup"> <div id="close" onclick="hide();"></div>
<div id="close" onclick="hide();"></div> <div id="text">
<div id="text"> <img src="logooscuro.png" style="width: 30vh;" /><br />
<img src="assets/logooscuro.png" style="width: 30vh;" /><br /> <p>Simulador de Aerogeneradores y Parques Eólicos (SAPE)</p>
<p>Simulador de Aerogeneradores y Parques Eólicos (SAPE)</p> <p>Centro de Simulación Computacional para Aplicaciones Tecnológicas - CONICET</p>
<p>Centro de Simulación Computacional para Aplicaciones Tecnológicas - CONICET</p> </div>
</div> </div>
</div> <div id="button" onclick="ws.simulate();">¡SIMULAR!</div>
<div id="button" onclick="ws.simulate();">¡SIMULAR!</div> <div id="copyright">&copy;2024 Centro de Simulación Computacional para Aplicaciones Tecnológicas (CSC) - CONICET</div>
<div id="copyright">&copy;2024 Centro de Simulación Computacional para Aplicaciones Tecnológicas (CSC) - CONICET</div> <div id="rotate"><img src="rotar_telefono.png" /><p>Rotá tu<br />dispositivo</p></div>
<div id="rotate"><img src="assets/rotar_telefono.png" /><p>Rotá tu<br />dispositivo</p></div> <div id="logo"><a href="http://www.csc.gob.ar"><img src="logooscuro.png" /></a></div>
<div id="logo"><a href="http://www.csc.gob.ar"><img src="logooscuro.png" /></a></div> </div>
</div>
</body> </body>
</html>

@ -37,7 +37,7 @@ class WindSimulation {
scene.add(this.checkBoard); scene.add(this.checkBoard);
const loader = new STLLoader(); const loader = new STLLoader();
loader.load('assets/MonumentoBandera.stl', (geometry) => { loader.load('./MonumentoBandera.stl', (geometry) => {
var material = new THREE.MeshBasicMaterial({color: 0xffffff}); var material = new THREE.MeshBasicMaterial({color: 0xffffff});
var mesh = new THREE.Mesh(geometry, material); var mesh = new THREE.Mesh(geometry, material);
var scale = 0.0093; var scale = 0.0093;
@ -175,7 +175,7 @@ var width = 10;
var height = 10; var height = 10;
var ws = new WindSimulation(width, height, 5); var ws = new WindSimulation(width, height, 5);
var screen = new Screen(camera, renderer, new THREE.Vector3(width / 2 + 0.5, height / 2, -0.65)); var screen = new Screen(camera, renderer, new THREE.Vector3(width / 2 + 0.5, height / 2, -0.95));
screen.setMoveCallBack((pos, end) => { ws.move(pos, end); }); screen.setMoveCallBack((pos, end) => { ws.move(pos, end); });
screen.onResize(); screen.onResize();

@ -14,11 +14,11 @@ class Screen {
this.pointerScreen = new THREE.Vector2(); this.pointerScreen = new THREE.Vector2();
this.pointerWorld = new THREE.Vector3(); this.pointerWorld = new THREE.Vector3();
this.radius = 24; this.radius = 23;
this.phi = -0.5; this.phi = -0.5;
this.theta = 0.45; this.theta = 0.45;
this.z = 15; this.z = 15;
this.aspect = 2.13; this.aspect = 2.24;
this.clicked = false; this.clicked = false;

@ -9,10 +9,10 @@ class WindMill extends THREE.Group {
static { static {
const loader = new STLLoader(); const loader = new STLLoader();
loader.load('assets/aspas_126m_85.stl', function(geometry) { loader.load('./aspas_126m_85.stl', function(geometry) {
WindMill.geometryBlades = geometry; WindMill.geometryBlades = geometry;
}); });
loader.load('assets/cuerpo_126m_50.stl', function(geometry) { loader.load('./cuerpo_126m_50.stl', function(geometry) {
WindMill.geometryBody = geometry; WindMill.geometryBody = geometry;
}); });
} }
@ -39,7 +39,7 @@ class WindMill extends THREE.Group {
var geometry = new THREE.CircleGeometry(0.5, 20); var geometry = new THREE.CircleGeometry(0.5, 20);
this.meshCircle = new THREE.Mesh(geometry, this.materialCircle); this.meshCircle = new THREE.Mesh(geometry, this.materialCircle);
this.meshCircle.position.z = 0.001; this.meshCircle.position.z = 0.01;
this.meshCircle.visible = false; this.meshCircle.visible = false;
this.add(this.meshBlades); this.add(this.meshBlades);

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

@ -1,4 +1,5 @@
from flask import Flask, request, abort from flask import Flask
from flask import request
import json import json
app = Flask(__name__) app = Flask(__name__)
@ -7,15 +8,15 @@ import xxx
@app.route("/", methods=['GET', 'POST']) @app.route("/", methods=['GET', 'POST'])
def index(): def index():
if request.method != 'POST' or not request.data: if request.method == 'POST':
return abort(400); if request.data:
params = json.loads(request.data.decode(encoding='utf-8')) params = json.loads(request.data.decode(encoding='utf-8'))
pos = params['pos']; pos = params['pos'];
ws = xxx.run(pos); ws = xxx.run(pos);
return { return {
'pos': pos, 'pos': pos,
'ws': ws, 'ws': ws,
} }
if __name__ == "__main__": if __name__ == "__main__":
app.run(host='localhost', port='1234') app.run(host='0.0.0.0', port='1234')

@ -1,13 +1,11 @@
from py_wake.wind_turbines import WindTurbine from py_wake.wind_turbines import WindTurbine
from py_wake.wind_turbines.power_ct_functions import PowerCtTabular from py_wake.wind_turbines.power_ct_functions import PowerCtTabular
from py_wake.site._site import UniformSite from py_wake.site._site import UniformSite
from py_wake.site.xrsite import XRSite
from py_wake.wind_farm_models import PropagateDownwind from py_wake.wind_farm_models import PropagateDownwind
from py_wake.deficit_models.gaussian import TurboGaussianDeficit from py_wake.deficit_models.gaussian import TurboGaussianDeficit
from py_wake.flow_map import XYGrid from py_wake.flow_map import XYGrid
import numpy as np import numpy as np
import xarray as xr
D = 126 #Diametro del wT D = 126 #Diametro del wT
h = 90 #Altura del WT h = 90 #Altura del WT
@ -73,15 +71,9 @@ windTurbines = py_wake_Initial_Cong(D, 'NREL_5MW', h, U_ref)
def run(initial_position=initial_position, U_ref=U_ref): def run(initial_position=initial_position, U_ref=U_ref):
initial_position = np.array(initial_position); initial_position = np.array(initial_position);
#site = UniformSite(p_wd=[1], site = UniformSite(p_wd=[1],
# ws=U_ref, ws=U_ref,
# initial_position=initial_position*D) initial_position=initial_position*D)
ds = xr.Dataset(
data_vars={'P': ('wd', [1])},
coords={'wd': [0]})
ds['TI'] = 0.1
site = XRSite(ds, interp_method='nearest', initial_position=initial_position*D, default_ws=np.atleast_1d(U_ref))
wt_x, wt_y = site.initial_position.T/D wt_x, wt_y = site.initial_position.T/D
wfm = PropagateDownwind(site, windTurbines, wake_deficitModel=TurboGaussianDeficit()) wfm = PropagateDownwind(site, windTurbines, wake_deficitModel=TurboGaussianDeficit())
grid = XYGrid(x=np.arange(0, 10.01, 0.1)*126, y=np.arange(0, 10.01, 0.1)*126) grid = XYGrid(x=np.arange(0, 10.01, 0.1)*126, y=np.arange(0, 10.01, 0.1)*126)

Loading…
Cancel
Save