IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

fonction se rapprochant d'une sinusoide avec "filtre passe-haut"


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    porteur de projet
    Inscrit en
    Décembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : porteur de projet

    Informations forums :
    Inscription : Décembre 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut fonction se rapprochant d'une sinusoide avec "filtre passe-haut"
    Bonsoir,

    je suis totalement débutant en vb.net (depuis avant hier...) et bidouille actuellement un programme tout fait permettant de simuler une diffusion thermique dans un matériau lambda, et ce pour un projet d'une association loi 1901 s'occupant d'autonomie énergétique et alimentaire. Un des projets concerne une solution innovante de stockage de l'énergie solaire dans le sol. Le soft développé en vb permet une approche visuelle en 2D ce qu'il se passerait dans le sol, mais il n'a pas été spécifiquement développé pour ça. J'ai le projet vb complet à disposition.

    Pour se rapprocher de la réalité, il faudrait pouvoir simuler une charge solaire journalière, grâce à une sinusoïde dont on enlèverait la partie inférieure, ou une courbe de Gauss qu'on répèterait à intervalles réguliers. Ceci traduirait une charge solaire débutant le matin, montant en température au plus chaud de la journée pour redescendre à la température initiale au coucher du soleil. Mais pour être réaliste, il faudrait pouvoir "effacer" la partie basse de la sinusoïde, le soft l'interprétant comme "aucune charge", et laisse donc la chaleur du jour se diffuser dans le matériau.

    Actuellement, il existe une fonction "température variable" dont j'ai isolé la ligne de code permettant le calcul. J'ai apporté une modification à la fonction sinus de base (f(t)=A+B Sin 2*Pi*t/T) pour tenter une courbe différente, mais on s'éloigne encore plus de la réalité, car la fonction ci dessous simulerait une charge nocturne plus importante que la sinusoide simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    'Ici : on effectue un nombre de pas définis
            If radioNbrePas.Checked = True Then
                For i As Integer = 1 To CInt(txtNbrePas.Text)
                    'On modifie la température instantanée des zones "conditions aux limites variables"
                    Sim.CLTempératureVariable = (CInt(frmParamètres.txtA.Text) + CInt(frmParamètres.txtB.Text) * (Sin((2 * PI * i * Sim.PasTemporel) / CInt(frmParamètres.txtT.Text))) / Tan((PI * i * Sim.PasTemporel) / (2 * CInt(frmParamètres.txtT.Text))))
                    'On avance le calcul d'un pas
                    Sim.AvancerUnPas()
                Next
            End If
    Si une telle fonction "filtre passe haut" existe, la période permettrait de régler la durée du jour/nuit, mais ne permet pas des jours plus courts/longs que les nuits. Une sorte de courbe de Gauss reproduite à intervalles réguliers permettrait de différencier ces durées, le pas entre début et fin de course=jour, le pas entre 2 courbes=nuit, le haut de la courbe=midi, pour schématiser.

    Je ne suis pas sûr que mon message soit très clair et m'en excuse d'avance.

    Un grand merci pour votre aide.
    Bonne soirée

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je ne promets rien pour to cas particulier, mais il existe des bibliothèques numériques et scientifiques pour .net. Plusieurs sont en packages NuGet et il y en a qui sont gratuites, notamment AForge et Accord
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    porteur de projet
    Inscrit en
    Décembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : porteur de projet

    Informations forums :
    Inscription : Décembre 2018
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    merci pour l'info, je vais regarder ça de plus près.

    J'ai jeté un oeil sur les bibliothèques, il y a bien un module "filtre passe haut" dans les traitements d'un signal audio, mais aucune idée de ce que je peux en faire, la programmation n'étant pas du tout mon domaine
    Si j'ai bien compris la démarche du développeur du logiciel de diffusion thermique, un historique du calcul pour chaque point de la fonction est stocké dans un tableau permettant d'afficher un graphique de température "en coupe" pour chaque point de la simulation. Ces données sont ensuite utilisées pour générer un bitmap permettant de voir la propagation du front de chaleur en 2D (cf fichier joint).

    Une façon peut-être plus simple de procéder, en faisant l'impasse sur une différence de durée jour/nuit (on garde des cycles de 12h charge/repos ce qui est déjà bien), serait de procéder au calcul de la sinusoïde f(x)=A+B sin(2Pi*x)/T, puis programmer de ne garder que les points voulus, cad les valeurs y>= à la température en début et fin de charge?

    Si l'un d'entre vous a la gentillesse, le temps et la motivation de jeter un oeil, j'ai à disposition le projet complet et vous mets en PJ un pdf expliquant les méthodes de calcul mentionné plus haut.

    Merci beaucoup.

    Bon dimanche
    Images attachées Images attachées

Discussions similaires

  1. [XL-2013] Vérouiller celulles en fonction du choix d'une liste avec feuille protégé
    Par borisp dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 15/04/2016, 15h37
  2. Réponses: 0
    Dernier message: 31/07/2013, 05h13
  3. [AC-2010] Fonction VraiFaux à partir d'une requête avec critère Comme[ ]
    Par CmzxNene dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 26/11/2012, 21h56
  4. [VB.NET] Pb MAJ d'une table avec datagrid filtré
    Par Syrrus dans le forum Accès aux données
    Réponses: 8
    Dernier message: 17/04/2007, 16h34
  5. connecter a une base avec mot de passe
    Par torNAdE dans le forum Sécurité
    Réponses: 30
    Dernier message: 02/08/2006, 20h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo