Projet

Général

Profil

Evolution #269

temps de calcul fonction nD

Ajouté par Julien Troufflard il y a presque 4 ans. Mis à jour il y a presque 4 ans.

Statut:
En cours
Priorité:
Normal
Assigné à:
Version cible:
-
Début:
10/12/2020
Echéance:
% réalisé:

100%

Temps estimé:
Temps passé:

Description

Gérard,

donc suite au ticket #268, j'ai mis en place le calcul suivant : un déploiement de ballon dont la pression de gonflage dépend de fonctions nD qui calcule des centres de gravité de nuage de noeuds.

Dans mon calcul, je détermine 5 centres de gravité. Le numéro de centre de gravite apparait dans le nom des fonctions nD ("numero" dans l'explication ci-dessous). Le chargement de pression est appliqué sur 5 groupes d'éléments (chacun étant en relation avec un centre de gravité).

Le calcul de la pression de gonflage sur un groupe d'élément E_seg_fps_[numero] suit la logique suivante :
1) calcul d'un centre de gravité => fonction nD de nom f_cdg_X1_[numero], f_cdg_X2_[numero] et f_cdg_X3_[numero]
2) calcul d'un produit scalaire entre la normale au pti et la position moins le centre de gravité => fonction nD de nom f_ps_[numero]
3) calcul d'une pression en fonction de f_ps_[numero] => fonction nD de nom f_chargement_[numero]

la chaine est donc (f_cdg_X1_[numero], f_cdg_X2_[numero], f_cdg_X3_[numero]) => f_ps_[numero] => f_chargement_[numero].

Voici maintenant le problème :
Le calcul fonctionne mais est très lent. Et pour cause : pour chaque pti, il y a recalcul des fonctions de centre de gravité (f_cdg_X1_[numero], f_cdg_X2_[numero], f_cdg_X3_[numero]). Or ce centre de gravité pourrait être calculé une seule fois par itération.

Et donc, est-ce que ce serait possible de définir des fonctions nD qui seraient calculées une seule fois au début d'une itération et dont le résultat serait ensuite dispo en tant que variables dans les fonctions nD ?
Dans l'idée, cela serait une fonctionnalité analogue aux intégrales "integrale_sur_volume_" qui donnent accès à des nouvelles variables. Cela mériterait peut-être une rubrique à part entière comme "integrale_sur_volume_" et ensuite une règle de nommage des nouvelles variables créées.

Je ne suis pas dans le programme Herezh++ mais j'ai l'impression que ce serait quasi un copier/coller de integrale_sur_volume_ (en plus simple puisqu'il n'y a pas la partie intégration).

pour comparer les temps de calcul, je t'ai joint 2 archives :
- le calcul qui est lent à cause des centre de gravité : pb_fct_nD_temps_de_calcul.tar
- un calcul à peu près identique sans centre de gravité : pb_fct_nD_temps_de_calcul_sans_cdg.tar


Fichiers

pb_fct_nD_temps_de_calcul_sans_cdg.tar (117 ko) pb_fct_nD_temps_de_calcul_sans_cdg.tar Julien Troufflard, 10/12/2020 13:26
pb_fct_nD_temps_de_calcul.tar (144 ko) pb_fct_nD_temps_de_calcul.tar Julien Troufflard, 10/12/2020 13:26
pb_fct_nD_temps_de_calcul_stats.tar (140 ko) pb_fct_nD_temps_de_calcul_stats.tar Julien Troufflard, 25/01/2021 15:46
bug_2.png (9,79 ko) bug_2.png Julien Troufflard, 25/01/2021 23:14
pb_fct_nD_temps_de_calcul_stats.tar (364 ko) pb_fct_nD_temps_de_calcul_stats.tar Julien Troufflard, 25/01/2021 23:14

Formats disponibles : Atom PDF

Redmine Appliance - Powered by TurnKey Linux