Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > de.comp.lang.javascript > #5297

Re: Fehler bei Berechnungen in JavaScript

Path csiph.com!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From Leo Baumann <ib@leobaumann.de>
Newsgroups de.comp.lang.javascript
Subject Re: Fehler bei Berechnungen in JavaScript
Date Wed, 1 Dec 2021 14:29:36 +0100
Message-ID <so7tca$r0h$1@solani.org> (permalink)
References <snrfh9$9hi$1@solani.org>
Mime-Version 1.0
Content-Type text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding 8bit
Injection-Date Wed, 1 Dec 2021 13:29:46 -0000 (UTC)
Injection-Info solani.org; logging-data="27665"; mail-complaints-to="abuse@news.solani.org"
User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2
Cancel-Lock sha1:saOaD2AHpFh+vkA6WsFbg0EfNxA=
In-Reply-To <snrfh9$9hi$1@solani.org>
X-User-ID eJwFwQkBwDAIA0BLECBt5YzPv4TdhVFZxxn02FirpxM3XxskPmdJtbXN6JtiY6/gTKR9Pip+kVtIBcDk9A9W+xWt
Xref csiph.com de.comp.lang.javascript:5297

Show key headers only | View raw


Am 26.11.2021 um 21:19 schrieb Leo Baumann:
> Hallo,
> das Programm berechnet das Integral (Simpson) der rel. Bestahlungsstärke 
> einer geneigten Fläche durch die Sonne.
> 
> Zwei funtionierende Programme für waagerechte und senkrechte Bestrahlung 
> sind beigefügt.
> 
> Simpsonneig() ist die Integration nach Simpson, function cosen() ist die 
> Funktion für die rel. Bestrahlungsstärke.
> 
> Die zugehörige Eingabe und der Aufruf für Simpsonneig() ist ganz unten.
> 
> Für die eingetragenen Parameter kommt ein sinnvolles Ergebnis heraus, 
> variiert man die Parameter, gibt es Probleme.

Das Script funktioniert jetzt für die meisten Parameter, aber wie sich 
durch Vergleich mit dem anderen, zweiten Script zeigt, liefert die 
Berechnungsgleichung für senkrechte Flächen falsche Ergebnisse. Die 
Berechnungsgleichung aus dem Internet

https://www.lti.kit.edu/rd_download/Solarenergie_20081024_Sonne.pdf

e=(-Math.cos(ele)*Math.sin(neig)*Math.cos(ris-rif)+Math.sin(ele)*Math.cos(neig));

ist wohl falsch.

> 
> Hier die Programme:

<!DOCTYPE HTML>
<html lang="de">
<head>
<script language="JavaScript">
		
		function cose(t,bb,lb,pi,nwk)
		{
		ls=2*pi/24*t-pi;
		bs=Math.sin(2*pi/8760*t-pi/2)*nwk;
		e=Math.sin(bb)*Math.sin(bs)+Math.cos(bb)*Math.cos(bs)*Math.cos(ls-lb);
		if (e<=0) e=0;            // wenn die Sonne unter dem Horizont steht 
wird das nicht mit gerechnet
		return e
		}

         function sine(t,bb,lb,pi,nwk)
		{
		ls=2*pi/24*t-pi;
		bs=Math.sin(2*pi/8760*t-pi/2)*nwk;
	 
eh=Math.sin(bb)*Math.sin(bs)+Math.cos(bb)*Math.cos(bs)*Math.cos(ls-lb); 
  // *****cos(e)
         e=Math.sqrt(1-Math.pow(eh,2));  // *****sin(e)
		if (eh<0) e=0;            // *****wenn die Sonne unter dem Horizont 
steht wird das nicht mit gerechnet
		return e
		}

        function cosen(t,bb,lb,pi,nwk,neig,rif)
		{
		ls=2*pi/24*t-pi;                          // Länge Sonne
		bs=Math.sin(2*pi/8760*t-pi/2)*nwk;        // Breite Sonne

 
cose1=Math.sin(bb)*Math.sin(bs)+Math.cos(bb)*Math.cos(bs)*Math.cos(ls-lb); 
  // cos des Winkels zum Subsonnenpunkt
		h=Math.acos(cose1);   // Winkel des Subsonnenpunktes im Ermittelpunkt 

		if (h!=0) 
{rish=Math.sin(bb)-Math.sin(bs)*cose1/Math.cos(bs)/Math.sin(h); 
ris=Math.abs(Math.acos(rish))} else if (h==0) {ris=0;} // Richtung zur Sonne
		if (h!=0) {vz=Math.sin(ls-lb)*Math.cos(bs)/Math.sin(h);} else if 
(h>=0) {vz=1;};
		if (vz<0) {ris=-ris;}

 
ele=pi/2-Math.acos(Math.sin(bb)*Math.sin(bs)+Math.cos(bb)*Math.cos(bs)*Math.cos(ls-lb)); 
        // Sonnenhöhe
         if ((ele<=0)||(ele>=pi-neig)) {e=0;} else 
{e=(-Math.cos(ele)*Math.sin(neig)*Math.cos(ris-rif)+Math.sin(ele)*Math.cos(neig));} 
// /Math.sin(ele);}
         //console.log(e);
		return e
		}

         // Simpson() integriert über cose() von t=0 bis t=8760 Stunden, 
also ein Jahr  (waagerechte Fläche auf der Erde)
		function Simpson()
		{
		var pi=Math.PI;
		var lb=0;
		var bb=Math.abs(parseFloat(document.eingabe3.gb.value)*pi/180);
		var g=0;
		var s=0;
		var ug=0;
		var og=8760;
		var min=1023;
		var nwk=23.5*pi/180;
	
		var n=1;
		var gs=2;
		var te=Math.pow(10,-gs);
		var sw=(og-ug)/2;
		var c=cose(ug,bb,lb,pi,nwk)+cose(og,bb,lb,pi,nwk);
		var u=cose(ug+sw,bb,lb,pi,nwk);
		var sa=sw/3*(c+4*u);
		do
			{
			sw=sw/2;
			n=2*n+1;
			g=g+u;
			u=0;

			for (t=1;t<=n;t=t+2)
				{
				u=u+cose(u+t*sw,bb,lb,pi,nwk);
				}

			s=sw/3*(c+2*g+4*u);
			if (s==0) s=te;
			fe=Math.abs((s-sa)/(15*s));
			sa=s;
			}while ((fe>te) || (n<min));

		document.eingabe3.schritte.value=String(n+1);
		document.eingabe3.fehler.value=String(Math.round(fe*1e8)/1e8);
		document.eingabe3.erg.value=String(Math.round(sa/8760*1e4)/100);
		document.eingabe3.erg1.value=String(Math.round(sa*100)/100);
		}

         // Simpsonsenk() integriert über sine() von t=0 bis t=8760 
Stunden, also ein Jahr (senkrechte Fläche auf der Erde)
         function Simpsonsenk()
		{
		var pi=Math.PI;
		var lb=0;
		var bb=Math.abs(parseFloat(document.eingabe10.gb.value)*pi/180);
		var g=0;
		var s=0;
		var ug=0;
		var og=8760;
		var min=1023;
		var nwk=23.5*pi/180;
	
		var n=1;
		var gs=2;
		var te=Math.pow(10,-gs);
		var sw=(og-ug)/2;
		var c=sine(ug,bb,lb,pi,nwk)+cose(og,bb,lb,pi,nwk);
		var u=sine(ug+sw,bb,lb,pi,nwk);
		var sa=sw/3*(c+4*u);

         if (bb<=nwk) nwk=bb;    // *****für den Fall, dass der 
Beobachter innerhalb des Wendekreises ist
		do
			{
			sw=sw/2;
			n=2*n+1;
			g=g+u;
			u=0;

			for (t=1;t<=n;t=t+2)
				{
				u=u+sine(u+t*sw,bb,lb,pi,nwk);
				}

			s=sw/3*(c+2*g+4*u);
			if (s==0) s=te;
			fe=Math.abs((s-sa)/(15*s));
			sa=s;
			}while ((fe>te) || (n<min));

		document.eingabe10.schritte.value=String(n+1);
		document.eingabe10.fehler.value=String(Math.round(fe*1e8)/1e8);
		document.eingabe10.erg.value=String(Math.round(sa/8760*1e4)/100);
		document.eingabe10.erg1.value=String(Math.round(sa*100)/100);
		}

         // Simpsonneig() integriert über cose() von t=0 bis t=8760 
Stunden, also ein Jahr (geneigte Fläche auf der Erde)
        function Simpsonneig()
		{
		var pi=Math.PI;
		var lb=0;
		var bb=Math.abs(parseFloat(document.eingabe11.gb.value)*pi/180);
         var neig=parseFloat(document.eingabe11.neig.value)*pi/180;
         var rif=parseFloat(document.eingabe11.rif.value)*pi/180;
		var g=0;
		var s=0;
		var ug=0;
		var og=8760;
		var min=1023;
		var nwk=23.5*pi/180;
	
		var n=1;
		var gs=2;
		var te=Math.pow(10,-gs);
		var sw=(og-ug)/2;
		var c=cosen(ug,bb,lb,pi,nwk,neig,rif)+cosen(og,bb,lb,pi,nwk,neig,rif);
		var u=cosen(ug+sw,bb,lb,pi,nwk,neig,rif);
		var sa=sw/3*(c+4*u);

         if (bb<=nwk) nwk=bb;    // *****für den Fall, dass der 
Beobachter innerhalb des Wendekreises ist
		do
			{
			sw=sw/2;
			n=2*n+1;
			g=g+u;
			u=0;

			for (t=1;t<=n;t=t+2)
				{
				u=u+cosen(u+t*sw,bb,lb,pi,nwk,neig,rif);
				}

			s=sw/3*(c+2*g+4*u);
			if (s==0) s=te;
			fe=Math.abs((s-sa)/(15*s));
			sa=s;
			}while ((fe>te) || (n<min));

		document.eingabe11.schritte.value=String(n+1);
		document.eingabe11.fehler.value=String(Math.round(fe*1e8)/1e8);
		document.eingabe11.erg.value=String(Math.round(sa/8760*1e4)/100);
		document.eingabe11.erg1.value=String(Math.round(sa*100)/100);
		}

</script>

</head>

<a name="Start"></a>
<body  link="#0000cb" vlink="#00008b" alink="#ff8c00" 
background="grid.gif">
	<p><center><font face="Eras Bold ITC"><h1 style= "color: 
#0000cb"><u>Berechnungsprogramme</u></h1></font></center></p>

	<p><table border=1 bordercolor="0000b0" cellspacing="7" bgcolor="#fffff0">
	<tr><th>Art der Berechnung:</th></tr>
	<tr><td><img src="pfeilre.gif"><a href="#Sonne">effektive 
Sonnenbestrahlung, waagerechte Fl&auml;che</a></td></tr>
     <tr><td><img src="pfeilre.gif"><a href="#Sonnesenk">effektive 
Sonnenbestrahlung, senkrechte Fl&auml;che</a></td></tr>
     <tr><td><img src="pfeilre.gif"><a href="#Sonneneig">effektive 
Sonnenbestrahlung, geneigte Fl&auml;che</a></td></tr>
	</table></p>

	<p><hr noshade color="#000000" size=1></p>

	

	<a name="Sonne"></a>
	<p><h4 style="color:#000000"><u><b>Berechnung der effektiven 
Bestrahlungsst&auml;rke der waagerechten Fl&auml;che durch die 
Sonne</b></u></h4></p>

	<p>Wieviel Prozent der Sonnenstrahlung f&auml;llt auf eine waagerechte 
Fl&auml;che an der angegebenen geografischen Position, weil die Sonne ja 
nicht
	unbedingt senkrecht &uuml;ber dieser steht und au&szlig;erdem dem 
Tageszeiten- und Jahreszeitenverlauf unterliegt? Die eingetragenen
	Koordinaten geh&ouml;ren zu Mainflingen-Offenbach. Die Berechnung ist 
schwierig, weil &uuml;ber folgende Gro&szlig;kreisformel
	integriert werden mu&szlig, und zwar von 0 bis 365 x 24 Stunden.</p>
	<p><center>cos(e) = sin(bf)*sin(bs)+cos(bf)*cos(bs)*cos(ls-lf)</center>
	<center>mit ls=2*pi/24*t-pi und bs=nWK*sin(2*pi/365/24*t-pi/2) den 
Koordinaten des Subsonnenpunktes</center></p>
	<p>Auch in Kugelkoordinaten ist diese Berechnung schwierig. Darum 
empfiehlt sich hier die SIMPSON-Formel. F&uuml;r beliebige Koordinaten auf
	der Erdoberfl&auml;che ist diese Iteration hier geeignet.</p>

	<p><table border=1 bordercolor="#0000b0"cellpadding="10" 
cellspacing="7" bgcolor="#fffff0">
	<tr><th colspan="2">effektive Sonnenbestrahlung, 
Bestrahlungsst&auml;rke, waagerechte Fl&auml;che</th></tr><tr><td>
	<form name="eingabe3">
		<input name="gb" type="text" size=12 value="50.1"> geografische Breite 
der Fl&auml;che in Dezimalgrad (s&uuml;dlich negativ)<br>
		<input name="schritte" type="text" readonly size=12> <span 
style="color:#ff0000;">Anzahl der Intervalle der Integration</span><br>
		<input name="fehler" type="text" readonly size=12> <span 
style="color:#0000ff;">Rechenfehler</span><br>
		<input name="erg" type="text" readonly size=12> <span 
style="color:#ff0000;">% der wirksamen Bestrahlungsst&auml;rke durch die 
Sonne</span><br>
		<input name="erg1" type="text" readonly size=12> <span 
style="color:#0000ff;">&auml;quivalente Sonnen-Stunden senkrechter 
Einstrahlung</span><br>
		<input name="rechnen" type="button" value="Berechnen" 
onClick="Simpson()"><center><img src="sunshine.gif"></center>
	</form>
	</table></p>

     <a name="Sonnesenk"></a>
	<p><h4 style="color:#000000"><u><b>Berechnung der effektiven 
Bestrahlungsst&auml;rke der senkrechten Fl&auml;che durch die 
Sonne</b></u></h4></p>

	<p>Wieviel Prozent der Sonnenstrahlung f&auml;llt auf eine senkrechte, 
nach S&uuml;den bzw. Norden zeigende Fl&auml;che an der angegebenen 
geografischen Position, weil die Sonne ja nicht
	unbedingt senkrecht &uuml;ber dieser steht und au&szlig;erdem dem 
Tageszeiten- und Jahreszeitenverlauf unterliegt? Die eingetragenen
	Koordinaten geh&ouml;ren zu Mainflingen-Offenbach. Die Berechnung ist 
schwierig, weil &uuml;ber folgende Gro&szlig;kreisformel
	integriert werden mu&szlig, und zwar von 0 bis 365 x 24 Stunden.</p>
	<p><center>sin(e) = 
sqrt(1-(sin(bf)*sin(bs)+cos(bf)*cos(bs)*cos(ls-lf))²)</center>
	<center>mit ls=2*pi/24*t-pi und bs=nWK*sin(2*pi/365/24*t-pi/2) den 
Koordinaten des Subsonnenpunktes</center></p>
	<p>Auch in Kugelkoordinaten ist diese Berechnung schwierig. Darum 
empfiehlt sich hier die SIMPSON-Formel. F&uuml;r beliebige Koordinaten auf
	der Erdoberfl&auml;che ist diese Iteration hier geeignet.</p></p>

	<p><table border=1 bordercolor="#0000b0"cellpadding="10" 
cellspacing="7" bgcolor="#fffff0">
	<tr><th colspan="2">effektive Sonnenbestrahlung, 
Bestrahlungsst&auml;rke, senkrechte Fl&auml;che</th></tr><tr><td>
	<form name="eingabe10">
		<input name="gb" type="text" size=12 value="50.1"> geografische Breite 
der Fl&auml;che in Dezimalgrad (s&uuml;dlich negativ)<br>
		<input name="schritte" type="text" readonly size=12> <span 
style="color:#ff0000;">Anzahl der Intervalle der Integration</span><br>
		<input name="fehler" type="text" readonly size=12> <span 
style="color:#0000ff;">Rechenfehler</span><br>
		<input name="erg" type="text" readonly size=12> <span 
style="color:#ff0000;">% der wirksamen Bestrahlungsst&auml;rke durch die 
Sonne</span><br>
		<input name="erg1" type="text" readonly size=12> <span 
style="color:#0000ff;">&auml;quivalente Sonnen-Stunden senkrechter 
Einstrahlung</span><br>
		<input name="rechnen" type="button" value="Berechnen" 
onClick="Simpsonsenk()"><center><img src="sunshine.gif"></center>
	</form>
	</table></p>

	<a href="#Start">[Oben]</a><a href="index.htm" 
target="_parent">[Anfang]</a>

	<p><hr noshade color="#000000" size=1></p>

     <a name="Sonneneig"></a>
	<p><h4 style="color:#000000"><u><b>Berechnung der effektiven 
Bestrahlungsst&auml;rke der geneigten Fl&auml;che durch die 
Sonne</b></u></h4></p>

	<p>Wieviel Prozent der Sonnenstrahlung f&auml;llt auf eine geneigte, 
nach S&uuml;den bzw. Norden zeigende Fl&auml;che an der angegebenen 
geografischen Position, weil die Sonne ja nicht
	unbedingt senkrecht &uuml;ber dieser steht und au&szlig;erdem dem 
Tageszeiten- und Jahreszeitenverlauf unterliegt? Die eingetragenen
	Koordinaten geh&ouml;ren zu Mainflingen-Offenbach.</p>

	<p><table border=1 bordercolor="#0000b0"cellpadding="10" 
cellspacing="7" bgcolor="#fffff0">
	<tr><th colspan="2">effektive Sonnenbestrahlung, 
Bestrahlungsst&auml;rke, geneigte Fl&auml;che</th></tr><tr><td>
	<form name="eingabe11">
		<input name="gb" type="text" size=12 value="50.1"> geografische Breite 
der Fl&auml;che in Dezimalgrad (s&uuml;dlich negativ)<br>
         <input name="neig" type="text" size=12 value="45"> Neigung der 
Fl&auml;che in Grad<br>
         <input name="rif" type="text" size=12 value="180"> Richtung der 
Fl&auml;che in Grad<br>
         <input name="schritte" type="text" readonly size=12> <span 
style="color:#ff0000;">Anzahl der Intervalle der Integration</span><br>
		<input name="fehler" type="text" readonly size=12> <span 
style="color:#0000ff;">Rechenfehler</span><br>
		<input name="erg" type="text" readonly size=12> <span 
style="color:#ff0000;">% der wirksamen Bestrahlungsst&auml;rke durch die 
Sonne</span><br>
		<input name="erg1" type="text" readonly size=12> <span 
style="color:#0000ff;">&auml;quivalente Sonnen-Stunden senkrechter 
Einstrahlung</span><br>
		<input name="rechnen" type="button" value="Berechnen" 
onClick="Simpsonneig()"><center><img src="sunshine.gif"></center>
	</form>
	</table></p>

	<a href="#Start">[Oben]</a><a href="index.htm" 
target="_parent">[Anfang]</a>

</body>
</html>

Back to de.comp.lang.javascript | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-26 21:19 +0100
  Re: Fehler bei Berechnungen in JavaScript Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-11-27 02:53 +0100
    Re: Fehler bei Berechnungen in JavaScript Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-11-27 02:59 +0100
    Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-27 03:31 +0100
      Re: Fehler bei Berechnungen in JavaScript Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-11-27 04:32 +0100
        Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-27 04:51 +0100
          Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-27 06:00 +0100
            Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-27 06:28 +0100
          Re: Fehler bei Berechnungen in JavaScript Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-11-27 06:50 +0100
            Re: Fehler bei Berechnungen in JavaScript Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-11-27 19:41 +0100
          Re: Fehler bei Berechnungen in JavaScript Stefan Reuther <stefan.news@arcor.de> - 2021-11-27 10:59 +0100
            Re: Fehler bei Berechnungen in JavaScript Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-11-27 16:28 +0100
          Re: Fehler bei Berechnungen in JavaScript Arno Welzel <usenet@arnowelzel.de> - 2021-11-28 00:53 +0100
            Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-28 05:47 +0100
              Re: Fehler bei Berechnungen in JavaScript Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-11-29 00:51 +0100
                Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-29 15:41 +0100
                Re: Fehler bei Berechnungen in JavaScript Arno Welzel <usenet@arnowelzel.de> - 2021-11-29 16:12 +0100
                Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-29 16:23 +0100
                Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-29 16:30 +0100
                Re: Fehler bei Berechnungen in JavaScript Arno Welzel <usenet@arnowelzel.de> - 2021-11-29 16:56 +0100
                Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-29 17:00 +0100
                Re: Fehler bei Berechnungen in JavaScript Arno Welzel <usenet@arnowelzel.de> - 2021-11-29 17:02 +0100
                Re: Fehler bei Berechnungen in JavaScript Arno Welzel <usenet@arnowelzel.de> - 2021-11-29 17:02 +0100
                Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-29 17:06 +0100
                Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-29 17:10 +0100
                Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-29 23:46 +0100
                Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-11-30 04:12 +0100
  Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-12-01 14:29 +0100
    Re: Fehler bei Berechnungen in JavaScript Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-12-02 01:27 +0100
      Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-12-02 02:20 +0100
        Re: Fehler bei Berechnungen in JavaScript Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-12-02 04:00 +0100
          Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-12-02 07:11 +0100
            Re: Fehler bei Berechnungen in JavaScript Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-12-03 03:51 +0100
              Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-12-03 04:57 +0100
                Re: Fehler bei Berechnungen in JavaScript Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2021-12-03 05:33 +0100
              Re: Fehler bei Berechnungen in JavaScript Leo Baumann <ib@leobaumann.de> - 2021-12-03 05:18 +0100

csiph-web