Vous êtes sur la page 1sur 93

ENSAM

Ecole Nationale Suprieure dArts et Mtiers


ANNE 1999/2000
RAPPORT FINAL
PFE LMS ESP 1
Prsent par :
Alexis MEUNIER
Professeurs responsables :
M. BARRACO
M. HERNNDEZ FRAS
M. PETUYA ARCOCHA
PROCD DE CALCUL DE VITESSES ET
DACCLRATIONS DE MCANISMES PLANS
ANNEE : 1999-2000 GROUPE : LMS NUMERO DE PFE : ESP 1
AUTEUR : Alexis MEUNIER
TITRE : Procedimiento de clculo de velocidades y aceleraciones en mecanismos
planos. (Procd de calcul de vitesses et acclrations pour mcanismes plans)
ENCADREMENT DU PFE :M. BARRACO
M. HERNNDEZ FRAS
M. PETUYA ARCOCHA
PARTENAIRE DU PFE : Escuela Superior de Ingenieros de Bilbao,
Departamento de ingeniera mecnica.
(Ecole Suprieur dIngnieurs de Bilbao,
Dpartement dingnierie mcanique, ESPAGNE)
NOMBRE DE PAGES : 16 + 72
NOMBRE DE REFERENCES BIBLIOGRAPHIQUES : 12
RESUME : Dans le cadre du partenariat avec lEcole Suprieure dIngnieurs de
Bilbao, ce projet consiste dvelopper une partie dun programme en cours de
ralisation. Ce programme est dvelopp sur Microsoft Fortran Powerstation et doit
permettre de simuler des mcanismes plans un degr de libert. Le projet concerne le
calcul des vitesses et acclrations dune barre quelconque dun systme et leur
affichage graphique sous forme dune courbe en fonction de langle de la barre dentre
en utilisant la mthode des coefficients dinfluence.
Le projet consiste en :
Se familiariser avec le langage Fortran,
Etudier la mthode des coefficients dinfluence,
Programmer.
MOTS CLES : FORTRAN
COEFFICIENTS DINFLUENCE
DERIVATION NUMERIQUE
CUBIC SPLINES
PARTIE A REMPLIR PAR LE PROFESSEUR RESPONSABLE DU PROJET
ACCESSIBILIT DE CE RAPPORT ( entourer la mention correcte ) :
LIBRE CONFIDENTIEL pendant : ___ an(s)
DATE : Nom du Signataire : Signature :
PFE 2000 Page 3
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
1. REMERCIEMENTS
Avant de commencer, je tiens remercier le Dpartement dIngnierie
Mcanique de lEcole Suprieure dIngnieurs de Bilbao pour son accueil.
Je voudrais remercier tout particulirement Alfonso HERNNDEZ FRAS et
Vctor PETUYA ARCOCHA qui ont toujours t disponibles pour maider.
Grce eux, mon sjour fut trs agrable et trs instructif.
Je remercie aussi Andr BARRACO, mon responsable de PFE ENSAM, et
Ricardo NOGUERA, responsable des relations avec lEspagne, sans lesquels ce projet
naurait pu tre possible.
PFE 2000 Page 4
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
2. SOMMAIRE
1. REMERCIEMENTS ............................................................................... 3
2. SOMMAIRE ........................................................................................... 4
3. INTRODUCTION ................................................................................... 5
4. CONTEXTE ............................................................................................ 6
4.1. Paris ...............................................................................................................6
4.2. Bilbao ............................................................................................................ 6
5. Mthode des coefficients dinfluence .......................................................8
6. Drive numrique ...................................................................................8
7. Interpolation avec les cubic splines ..................................................... 9
8. Structure du programme .........................................................................10
9. Instructions pour utiliser le programme ................................................ 11
9.1. Comment charger le programme? ............................................................... 11
9.2. Comment utiliser le programme? ............................................................... 12
10. Comparaison entre la mthode des coefficients dinfluence
et la MEF ............................................................................................. 14
11. LIMITES ............................................................................................. 15
12. CONCLUSION ................................................................................... 16
PFE 2000 Page 5
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
3. INTRODUCTION
Ce Projet de Fin dEtudes a t ralis dans le cadre des changes entre l Ecole
Nationale Suprieure dArts et Mtiers (ENSAM) et lEcole Suprieure dIngnieurs de
Bilbao (ETSII e IT)
Le projet sest droul durant deux semestres :
Un jour par semaine pendant le premier semestre au Laboratoire de Mcanique des
Structures Paris (professeur : Andr Barraco),
et le second semestre au Dpartement dIngnierie Mcanique Bilbao (professeurs :
Alfonso Hernndez Fras et Vctor Petuya Arcocha).
Mon projet rentre dans cadre du dveloppement dun programme de simulation
de mcanismes plans avec un degr de libert se droulant et lEcole Suprieure
dIngnieurs de Bilbao et sur lequel travaillent plusieurs lves. Ce programme sera
utilis dans lavenir par les tudiants de lcole.
Le sujet est le suivant :
Procd de calcul de vitesses et acclrations de mcanismes plans un degr de
libert avec la mthode des coefficients dinfluence.
Connaissances ncessaires :
Thorie de la mcanique,
Mthode des coefficients dinfluence,
Mthodes de drivation numrique,
Programmation avec FORTRAN Powerstation de Microsoft,
Affichage graphique sur ordinateurs.
PFE 2000 Page 6
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
4. CONTEXTE
Ce projet sest droul en deux tapes :
4.1. Paris
Pendant le premier semestre, le projet a progress assez lentement puisquune
journe par semaine lui tait consacr. Il tait difficile de se familiariser avec le Fortran
car lENSAM ne possde pas le logiciel en question. Par consquent, mon travail
Paris a t essentiellement thorique : recherche et consultation de livres et revues
scientifiques sur le langage Fortran et sur la mthode des coefficients dinfluence.
4.2. Bilbao
Pour commencer, je me suis familiaris avec le langage Fortran en utilisant le
programme FORTRAN Powerstation de Microsoft, et en particulier avec la
programmation graphique.
Ensuite, jai commenc utiliser et tudier le programme existant pour
comprendre comment il fonctionnait et savoir comment inclure ma partie lintrieure.
Aprs, jai cherch diffrentes mthodes dinterpolation linaire et de drivation
numrique et jai choisi celles qui me semblaient les plus appropries mon cas avec
lopinion de professeurs des dpartements dingnierie mcanique et de mathmatiques.
Pour finir, jai commenc programmer ma partie et linclure dans le
programme principal.
FORTRAN :
Le programme t dvelopp sur Fortran Powerstation de Microsoft qui offre
la possibilit dcrire des programmes qui permettent de faire de laffichage graphique.
De ce point de vue, ce langage est plus efficace que dautres (comme le C++ par
exemple).
PFE 2000 Page 7
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
Programme principal :
Le programme principal a t dvelopp par des tudiants de lEcole Suprieure
dIngnieurs de Bilbao. Il permet de simuler des mcanismes plans un degr de
libert.
Il existe une premire partie pour dessiner le systme. On peut crer un nouveau
systme (avec le clavier ou la souris) et le sauvegarder pour le conserver et louvrir plus
tard. Pour crer un nouveau modle, il faut crer des points et les unir avec des lments
(barres) et insrer des liaisons (rotules, rotules fixes, glissires...).
Aprs, il faut revenir au menu initial o on peut intervenir sur le systme par
diffrentes options.
Le menu editar permet dajuster le dessin, de zoomer ou de revenir la
positon antrieure.
Le menu problemas de posiciones permet de donner une position initiale,
directe, inverse ou de donner des positions successives (par incrment). On peut aussi
rpter le mouvement ou linterrompre.
Le menu trayectorias permet de voir ou deffacer les trajectoires.
Le menu herramientas permet de choisir ou de montrer la chemin, de dplacer
un nud et de montrer les erreurs.
Les deux autres menus correspondent aux deux parties de calcul de vitesses et
acclrations avec la mthode MEF et la mthode des coefficients dinfluence (ma
partie).
Ma partie du programme :
Pour utiliser mon menu (anlisis), lutilisateur doit crer ou ouvrir un systme
un degr de libert. Aprs, il faut utiliser le menu posiciones sucesivas et donner un
incrment pour langle dentre pour que la barre dentre bouge.
Alors, on peut choisir ltude de la vitesse ou de lacclration dans le menu
Anlisis
Les deux parties de mon programme, cest--dire le calcul des vitesses et des
acclrations sont semblables. Cest pourquoi il sera seulement dtaille la partie sur les
vitesses par la suite.
Les mthodes, structures et fonctionnements sont dtaills plus loin.
PFE 2000 Page 8
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
5. Mthode des coefficients dinfluence
Comme il a t spcifi lors de la prsentation du sujet, le projet porte sur
lutilisation de la mthode des coefficients dinfluences. Le programme utilise cette
mthode de la manire suivante (des rfrences sont donnes dans la bibliographie pour
approfondir cette mthode).
partir de langle de la barre dentre () et de langle de la barre tudie (),
on calcule la drive dun angle par rapport lautre en utilisant la mthode de
drivation numrique (expose en 6) :
Ce terme est aussi appel coefficient dinfluence des vitesses.
laide des diverses donnes introduites par lutilisateur, le programme calcule
le terme :
Or,
Ainsi on peut dterminer le terme :
qui nest autre que la vitesse de la barre tudie.
Le choix de lutilisation de la mthode des coefficients dinfluence a t motiv
par le fait quelle est plus pratique que dautres mthodes pour les calculs dynamiques,
ces calculs dynamiques tant prvus dans le dveloppement futur du programme.

d
d

d
dt
dt
d
d
d

dt
d
dt
d
PFE 2000 Page 9
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
6. Drive numrique
Aprs tude de diffrentes mthodes, celle choisi utilise les coordonnes
graphiques de plusieurs points ainsi que lintervalle pour calculer la drive en un point.
Nanmoins, il faut savoir quon ne peut pas utiliser la mme formule suivant que
lon calcule la drive pour un point quelconque ou pour les premiers ou les derniers
points.
Il en ressort les formules suivantes :
Formules des drives dordre un :
Premiers points (i = 1, 2) :
Points mdians (i = 3 i = n-2) :
Derniers points (i = n-1, n) :
Formules des drives dordre deux :
Premiers points (i = 1, 2) :
Points mdians (i = 3 i = n-2) :
Derniers points (i = n-1, n) :
h
f f f f
f
i i i i
i
6
11 18 9 2
'
1 2 3
+

+ + +
h
f f f f
f
i i i i
i
6
2 9 18 11
'
3 2 1
+

h
f f f f
f
i i i i
i
12
8 8
'
2 1 1 2 + +
+ +

2
1 2 3
2 5 4
' '
h
f f f f
f
i i i i
i
+ +

+ + +
2
3 2 1
4 5 2
' '
h
f f f f
f
i i i i
i

+

2
2 1 1 2
12
16 30 16
' '
h
f f f f f
f
i i i i i
i
+ +
+ +

PFE 2000 Page 10


MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
7. Interpolation avec les cubic splines
Cette mthode consiste en une approximation de fonctions par approximation de
polynmes par intervalles : {(x
o
,f(x
o
)), (x
1
,f(x
1
)),...,(x
n
,f(x
n
))}
Le principe de la mthode est de calculer les diffrentes variables partir des
points existants de telle manire que lon obtient une sries de fonctions :
S
j
(x) = a
j
+ b
j
(x - x
j
) + c
j
(x - x
j
)
2
+ d
j
(x - x
j
)
3
, pour j = 0, 1,..., n-1.
Lalgorithme est le suivant :
ENTREE n; x
0
, x
1
,..., x
n;
a
0
= f(x
0
), a
1
= f(x
1
),..., a
n
= f(x
n
).
Etape 1 Pour i = 0, 1,..., n-1, on dtermine h
i
= x
i+1
- x
i
.
Etape 2 Pour i = 0, 1,..., n-1, on dtermine
( ) ( )
1
1
1
3 3
+

+
+
i i
i
i i
j
j
a a
h
a a
h

Etape 3 l
0
= 1;
= 0;
zo = 0.
Etape 4 Pour i = 1, 2,..., n-l, on dtermine
li = 2(xi+1 xi-1) h i-1- i-1;
i = hi / li;
zi = (i - hi-1zi-1) / li.
Etape 5 ln = 1;
z
n
= 0;
c
n
= 0.
Etape 6 Pour j = n-1, n-2,..., 0, on dtermine
c
j
= z
j

j
c
j+1
;
b
j
= (a
j+1
- a
j
) / h
j
h
j
(c
j+1
2c
j
) / 3;
d
i
= (c
j+1
- c
j
) / (3h
j
).
Etape 7 SORTIE a
j
, b
j
, c
j
, d
j
, para j = 0, 1,..., n-1;
ARRET.
PFE 2000 Page 11
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
8. Structure de la partie calcul des vitesses et
acclrations du programme
Voici le processus de calcul simplifi des vitesses tel quil est effectu par le
programme (le listing est prsent en annexe).
1. Identification de la barre analyser.
2. Calcul de langle de la barre dentre chaque position.
3. Calcul des angles extrmes de la barre dentre.
4. Calcul de langle de la barre tudie chaque position.
5. Rangement par ordre croissant des angles de la barre tudie en fonction des angles
de la barre dentre (ncessaire pour le bon fonctionnement du programme).
6. Calcul des coefficients dinfluence des vitesses avec lutilisation des formules de
drivation numrique.
7. Introduction de la loi dentre (vitesse ou acclration constante) laide de boites de
dialogue.
8. Calcul des vitesses laide des donnes prcdentes.
9. Calcul des vitesses mini et maxi de la barre tudie.
10. Interpolation avec les cubic splines.
11. Dfinition des caractristiques de la fentre daffichage.
12. Dfinition des caractristiques du graphique.
13. Tracer de la courbe.
PFE 2000 Page 12
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
9. Instructions pour utiliser le programme
9.1. Comment charger le programme ?
1. Ouvrir Fortran Powerstation
2. Slectionner :
/ File / New...
ouverture dune fentre
3. Slectionner :
Project Workspace
OK
ouverture dune fentre
4. Donner les informations suivantes :
Type : QuickWin Application
Location : ...
Name : ...nom
Cration dun dossier nom lemplacement spcifi
et dun fichier Project Workspace nomm nom.mdp
5. A laide de lexplorateur Windows :
Copier les fichiers (.aps, .h, .mak, .mec, .f90, .fd, .res, .rc, Icono)
depuis la disquette vers le dossier nom
6. Slectionner :
/ Insert / Files into Project...
ouverture dune fentre
7. Slectionner tous les fichiers
OK
8. Slectionner :
/ Build / Build nombre.exe
9. Slectionner :
/ Build / Execute nombre.exe
PFE 2000 Page 13
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
9.2. Comment utiliser le programme ?
1. Ouvrir le fichier .mdp
2. Excuter le programme (/ Build / Execute ...)
3. Dans le menu Archivo, choisir loption dsire :
Crer un nouveau modle ou ouvrir un modle existant.
4. Animer le systme avec loption :
/ Problemas de Posicin / Posiciones sucesivas
Slctionner la barre en cliquant dessus.
Introduire lincrment de langle de cette barre.
Il peut tre positif (sens trigonomtrique),
ou ngatif (sens anti-trigonomtrique).
5. Attendre larrt du systme :
Le systme sarrte lorsque le programme nest plus mme de rsoudre les
quations (cas particulier des points morts).
Nanmoins, il est possible darrter le systme tout moment avec loption :
/ Problemas de Posicin / Detener
6. Lancer lanalyse :
Slctionner / Anlisis / velocidades
ou / Anlisis / aceleraciones
7. Choisir la barre tudier :
Slctionner la barre en cliquant dessus.
Une boite de dialogue saffiche
8. Choisir le type de mouvement laide des options proposes :
= constante (par dfaut)
A = constante
OK
Une boite de dialogue saffiche
9. Donnes :
Introduire le module de la vitesse (ou de lacclration) de la barre dentre.
Celui-ci doit tre positif puisque le sens du mouvement a dj t dfinit lors de
lintroduction de lincrment.
OK
PFE 2000 Page 14
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
10. Graphique :
Il souvre une fentre dans laquelle est affich le graphique de la vitesse (ou
acclration) de la barre tudie en fonction de langle de la barre dentre.
Les informations sont les suivantes :
Deux axes :
Laxe des abscisses reprsente les angles de la barre dentre (valeurs croissantes
de la gauche vers la droite) pour une vitesse (ou acclration) nulle.
Laxe des ordonnes reprsente la vitesses(ou lacclration) de la barre tudie
et est trac pour langle minimum de la barre dentre.
Quatre valeurs :
Angle minimum de la barre dentre,
Angle maximum de la barre dentre,
Vitesse ou acclration minimum,
Vitesse ou acclration maximum,
La courbe des vitesses (ou acclrations) en fonction des angles de la
barre dentre.
PFE 2000 Page 15
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
10. Comparaison entre la mthode des
coefficients dinfluence et la MEF
Dans le programme, il est possible dobtenir le graphique des vitesses (ou
acclrations) en fonction de langle de la barre dentre de deux faons diffrentes :
celle explique prcdemment et qui constitue mon projet,
la seconde en utilisant le menu A cinemtica qui utilise la MEF et qui a t
programm par une autre lve de lEcole Suprieure dIngnieurs de Bilbao.
Par consquent, il est intressant de comparer les rsultats des deux mthodes
travers un exemple simple.
La fonction Debug du programme Fortran Powerstation de Microsoft permet
davoir accs toutes les valeurs que prennent les variables. Ceci a donc permis de
sortir les valeurs suivantes :
Position Angle
barre entre
Vitesse
(coef influ)
Vitesse
(MEF)
1 32,49 -0,889553563 -0,890645021
2 33,49 -0,932346076 -0,931197825
3 34,49 -0,968775755 -0,968803242
4 35,49 -1,003841169 -1,003840914
5 36,49 -1,036586840 -1,036589589
6 37,49 -1,067430397 -1,067356852
7 38,49 -1,096464126 -1,096358699
8 39,49 -1,123400773 -1,123851416
9 40,49 -1,150205335 -1,150015803
10 41,49 -1,175149838 -1,175025163
Il est noter que les valeurs donnes pour la mthode des coefficients
dinfluence sont celles avant interpolation (sans quoi il naurait pas t possible davoir
des valeurs correspondant au mmes angles).
On peut sapercevoir que pour un systme un degr de libert (celui tant assez
simple), les deux mthodes donnent des rsultats assez similaires.
Par consquent, il faudra choisir une mthode plutt que lautre en fonction du
dveloppement futur du programme et aprs avoir test des cas particuliers avec les
deux mthodes afin de conserver celle qui fonctionne le mieux.
PFE 2000 Page 16
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
11. LIMITES
Afin dutiliser le programme dans de bonnes conditions et dans loptique de son
amlioration future, il est important den connatre les limites.
Ce programme permet lanalyse de mcanismes plans un degr de libert
constitus de barres, rotules, rotules fixes, glissires... Ceux-ci peuvent tre dessins
avec la souris ou le clavier et peuvent tre modifi.
Le programme ne permet de faire quune analyse la fois.
Les conditions initiales possibles actuellement sont : vitesse ou acclration
constante.
Quelques cas particuliers ont t tests et des modifications ont t apport en
consquence; nanmoins, certains problmes subsistent :
A courbe des acclrations prsente des discontinuits.
Sur certaines tudes, la courbe ressemble une sinusode dont les extremis
sortent trs loin de lchelle de la fentre. Aprs analyse, il apparat que ce problme
vient de linterpolation et quil survient le plus souvent lorsque langle de la barre
tudie nvolue que trs peu.
PFE 2000 Page 17
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
12. CONCLUSION
Lobjectif premier de ce projet tait la programmation dun procd de calcul de
vitesses et dacclrations de mcanismes plans un degr de libert avec la mthode
des coefficients dinfluence.
Le projet sest droul selon trois axes :
La comprhension de la mthode des coefficients dinfluence.
La recherche, le choix et la transcription de diffrentes mthodes
(interpolation linaire par les cubic splines, drivation numrique).
programmation.
Aujourdhui, le programme fonctionne et dessine les graphiques.
Lors de lutilisation du programme, il est apparu divers problmes qui ont t
rsolus pour une part. Nanmoins, lobjet du projet tant plus la programmation du
logiciel que son utilisation, il semble ncessaire de faire des tests plus pousss pour
relever les disfonctionnements ventuels.
Pour ma part, ce projet a t trs intressant. Il ma permis dapprendre un
langage informatique, de raliser un travail en groupe (puisque plusieurs tudiants
travaillaient sur diverses parties du programme) et de passer les obstacles lis la
langue (tout en lapprenant).
De plus, les professeurs et les lves de lcole ont toujours t trs disponibles
quand javais besoin de leur aide. Je tiens les en remercier, et grce eux, mon sjour
Bilbao fut dun grand plaisir.
PFE 2000 Page 18
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
Procedimiento de clculo de
velocidades y aceleraciones
en mecanismos planos
Alumno : Profesores :
Alexis MEUNIER Alfonso HERNNDEZ FRAS
Vctor PETUYA ARCOCHA
Andr BARRACO
PFE 2000 Page 19
MEUNIER
Procd de calcul de vitesses et acclrations de mcanismes plans
Procedimiento de clculo de
velocidades y aceleraciones
en mecanismos planos
Alumno : Profesores :
Alexis MEUNIER Alfonso HERNNDEZ FRAS
Vctor PETUYA ARCOCHA
Andr BARRACO
PFE 2000 Pgina 3
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
1. AGRADECIMIENTOS
Antes de empezar, quisiera agradecer al Departamento de Ingeniera Mecnica
de la Escuela Superior de Ingenieros de Bilbao por su acogida.
Quisiera agradecer particularmente a Alfonso HERNNDEZ FRAS y a Vctor
PETUYA ARCOCHA por sus ayudas, mi estancia fue muy agradable e instructiva.
Gracias tambin a Andr BARRACO, mi profesor al ENSAM, y Ricardo
NOGUERA, responsable de los relaciones con Espaa, sin los cuales este proyecto no
hubiera sido posible.
PFE 2000 Pgina 4
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
2. INDICE
1. AGRADECIMIENTO ............................................................................. 3
2. INDICE ................................................................................................... 4
3. INTRODUCCIN ................................................................................... 6
4. CONTEXTO ........................................................................................... 8
4.1. Pars .............................................................................................................. 8
4.2. Bilbao ............................................................................................................ 8
5. Diferenciacin numrica ....................................................................... 10
6. Interpolacin de splines cbicos ...................................................... 18
7. Estructura de la parte clculo de las velocidades del programa ............ 28
8. Instrucciones para utilizar el programa ................................................. 39
8.1. Cmo cargar el programa? ........................................................................ 39
8.2. Cmo utilizar el programa? ....................................................................... 40
9. Comparacin entre el mtodo de los coeficientes
de influencia y el mtodo MEF ............................................................. 47
PFE 2000 Pgina 5
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
10. LIMITACIONES ................................................................................. 49
11. CONCLUSIN ................................................................................... 50
12. BIBLIOGRAFA ................................................................................. 51
13. ANEXOS ............................................................................................. 53
Listado del programa
Disquete
PFE 2000 Pgina 6
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
3. INTRODUCCIN
Este proyecto de fin de carrera fue realizado con arreglo a los intercambios entre
la Escuela Nacional Superior de Ingenieros ENSAM y la Escuela Superior de
Ingenieros de Bilbao (ETSII e IT).
El proyecto se desarrollo durante dos semestres :
Un da cada semana durante el primer semestre en el Laboratorio de Mecnica de
estructuras en Pars (profesor : Andr Barraco),
y el segundo semestre en el departamento de ingeniera mecnica en Bilbao
(profesores : Alfonso Hernndez Fras y Vctor Petuya Arcocha).
Mi proyecto entra en el marco del desarrollo de un programa de simulacin de
mecanismos (detallado despus) pendiente en la Escuela Superior de Ingenieros de
Bilbao sobre el cual trabajaban algunos alumnos.
El tema es el siguiente :
Procedimiento de clculo de velocidades y aceleraciones en mecanismos
planos de un grado de libertad con el mtodo de los coeficientes de influencia.
Los coeficientes de influencia se utilizan para calcular velocidades y
aceleraciones de elementos y puntos del mecanismo en una posicin o en posiciones
sucesivas.
Tambin se utilizan en Dinmica de Mecanismos para resolver el problema
directo; es decir, conocidas las acciones (fuerzas) aplicadas en el mecanismo, as como
sus propiedades fsicas y geomtricas, calcular el movimiento del mismo (posiciones,
velocidades y aceleraciones). El proyecto parte del conocimiento de las posiciones del
mecanismo, las cuales sern calculadas mediante un procedimiento geometrico-
iterativo.
Conocidas las posiciones del mecanismo (los ngulos de posicin de los
distintos elementos en funcin del ngulo de posicin del elemento de entrada),
mediante derivacin numrica se obtendr los coeficientes de influencia de velocidad y
aceleracin.
PFE 2000 Pgina 7
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Conocimientos necesarios :
Teora de mecanismos,
Mtodo de los coeficientes de influencia,
Mtodos de derivacin numrica,
Programacin en FORTRAN Powerstation de Microsoft,
Grficos con computadoras.
PFE 2000 Pgina 8
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
4. CONTEXTO
Este proyecto se desarrollo en dos etapas :
4.1. Pars
Durante el primer semestre, el proyecto progreso lentamente ya que tena un da
cada semana para adelantarlo. Fue muy difcil familiarizarme con el FORTRAN porque
la ENSAM no tena este tipo de programa. Por consiguiente, mi trabajo en Pars fue
esencialmente un trabajo de investigacin y de estudio bibliogrfico. Consult libros
sobre la programacin en lenguaje FORTRAN y consult libros y revistas cientficas
sobre el mtodo de los coeficientes de influencia.
4.2. Bilbao
Al principio, me familiaric con el lenguaje FORTRAN, utilizando el programa
FORTRAN Powerstation de Microsoft, especialmente con la programacin grfica.
Despus, empec utilizar el programa existente para entender como funcionaba y
saber como incluir mi parte en este.
Luego, busqu mtodos de interpolacin linear y mtodos de derivacin
numrica y elige la ms apropiada con mi caso con la opinin de algunos profesores de
los departamentos de ingeniera mecnica y de matemtica.
Al fin, empec programar mi parte e incluirlo en el programa principal.
FORTRAN :
El programa fue programado con Fortran Powerstation de Microsoft que ofrece
la posibilidad de escribir programas que permiten hacer visualizacin grfica.
De este punto de vista, este lenguaje es ms eficiente que otros (como el C++
por ejemplo).
PFE 2000 Pgina 9
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Programa principal :
El programa principal fue desarrollado por algunos alumnos de la Escuela
Superior de Ingenieros de Bilbao. Permite simular mecanismos planos de un grado de
libertad con pares de rotacin y prismticos.
Hay una primera parte para dibujar sistemas. Se puede crear un nuevo sistema
(con ratn o teclado) y salvarlo para conservarlo y abrirlo despus. Para crear un nuevo
modelo, hay que crear puntos, unirlos con elementos (barras, ternario, cuaternario,
deslizadera) y poner uniones (rotulas, rotulas fijas).
Despus, se vuelve al men principal donde se puede intervenir sobre el sistema
con diferentes opciones.
El men editar permite ajustar, hacer un zoom o volver en la posicin anterior.
El men problemas de posiciones permite dar una posicin inicial, directo,
inverso o dar posiciones sucesivas. Tambin se puede repetir el movimiento o detenerlo.
El men trayectorias permite ver o borrar trayectorias.
El men herramientas permite elegir o mostrar el camino, mover un nudo y
mostrar errores.
Los dos otros mens corresponden a los dos partes de clculo de velocidades y
aceleraciones con el mtodo MEF y con el mtodo de los coeficientes de influencia (mi
parte).
Mi parte del programa :
Para utilizar mi men (anlisis), el usuario debe crear o abrir un sistema de un
grado de libertad. Despus, debe utilizar el men posiciones sucesivas y dar un
incremento de ngulo para que la barra de entrada se mueva.
Entonces, se puede elegir velocidad o aceleracin en el men anlisis
Los dos partes de mi programa, es decir, el clculo de las velocidades y el de las
aceleraciones son muy parecidos. Por eso, solo ser detallado el parte sobre las
velocidades ms tarde.
Los mtodos, la estructura y el funcionamiento son detallados ms atrs.
PFE 2000 Pgina 10
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
5. Diferenciacin numrica
Se construye una hoja corrugada para techado, usando una mquina que
comprime una hoja plana de aluminio, y la transforma en una hoja cuya seccin
transversal tiene la forma de onda de la funcin seno.
Se necesita hoja corrugada de 4 pies de largo cuyas ondas tienen una altura de 1
plg. desde la lnea central, y cada onda tiene aproximadamente un periodo de 2 plg. El
problema de calcular la longitud de la primera hoja plana consiste en determinar la
longitud de la onda dada por f(x) = sen x de x = 0 a x = 48 plg. Por el clculo sabemos
que esta longitud es
de modo que el problema consistir en evaluar esta integral. Aunque la funcin seno es
una de las ms comunes en las matemticas, el clculo de su longitud da origen a una
integral elptica de segunda clase, la cual no puede evaluarse con mtodos normales.
Una de las razones de que aproximemos un conjunto arbitrario de datos mediante
polinomios algebraicos es que, dada una funcin continua cualquiera que est definida
en un intervalo cerrado, existir un polinomio suficientemente cercano a la funcin en
todos los puntos del intervalo. Por lo dems, las derivadas de los polinomios se obtienen
y se evalan fcilmente. Por ello, no debera sorprendernos que la mayora de los
procedimientos para aproximar integrales y derivadas usen polinomios que aproximan
la funcin.
La derivada de la funcin f en x
0
es
, ) (cos 1
) (
1
48
0
2
48
0
2
dx x dx
dx
x df
L

+

,
_

+
h
x f h x f
h
lim
x f
) ( ) (
0
) ( '
0 0
0
+

PFE 2000 Pgina 11


MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Para aproximar este nmero, supongamos primero que x
0
(a, b), donde f
C
2
[a, b], y que x
1
= x
0
+ h para alguna h 0 que es lo bastante pequea para asegurarnos
de que x
1
[a, b]. Construimos el primer polinomio de Lagrange P
0
,
1
(x) para f
determinada por x
0
y x
1
con su trmino de error:
)). ( ( ' '
! 2
) )( (
) ( ) (
1 0
1 , 0 0
x f
x x x x
x P x f

+
h
x x h x f
h
h x x x f ) )( ( ) )( (
0 0 0 0
+
+

)) ( ( ' '
2
) )( (
0 0
x f
h x x x x


+
para alguna (x) en [a, b]. Al diferenciar obtenemos
1
]
1


+
+
)) ( ( ' '
2
) )( ( ) ( ) (
) ( '
0 0 0 0
x f
h x x x x
D
h
x f h x f
x f
x

)) ( ( ' '
2
) ( 2 ) ( ) (
0 0 0
x f
h x x
h
x f h x f


+
+

))), ( ( ' ' (


2
) )( (
0 0
x f D
h x x x x
x


+
de modo que
Un problema que presenta esta frmula cuando aproximamos f(x) para los
valores arbitrarios de x radica en que carecemos de informacin sobre D
x
f((x)) = f
((x)).(x), por lo cual no podemos estimar el error de truncamiento. Pero cuando x es
x
0
el coeficiente de D
x
f((x)) ser cero y la frmula se simplifica como sigue
Para valores pequeos de h, podemos utilizar el cociente de la diferencia
[f(x
0
+h)-f(x
0
)]/h para aproximar f(x
0
) con un error acotado por Mh/2, donde M es una
cota en f(x) para x [a, b]. A esta frmula se le llama frmula de la diferencia
progresiva si h> 0 y frmula de diferencia regresiva si h < 0.
.
) ( ) (
) ( '
0 0
h
x f h x f
x f
+

). ( ' '
2
) ( ) (
) ( '
0 0
f
h
h
x f h x f
x f
+

(1)
PFE 2000 Pgina 12
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Sean f(x) = ln x y x
0
= 1.8. El cociente
,
) 8 . 1 ( ) 8 . 1 (
h
f h f +
para h>0
sirve para aproximar f(1.8) con el error
Los resultados de la tabla se producen cuando h = 0.1, 0.01 y 0.001.
h f(1.8+h)
0.1 0.64185389 0.5406722 0.0154321
0.01 0.59332685 0.5540180 0.0015432
0.001 0.58834207 0.5554013 0.0001543
Puesto que f(x) = 1/x, el valor exacto de f(1.8) es 0.555 y las cotas de error son
adecuados.
Para obtener frmulas de aproximacin a la derivada ms generales, supongamos
que {x
0
, x
1
,...,x
n
} son (n + 1) nmeros distintos en algn intervalo I y que f C
n+1
(I).
para alguna (x) en 1, donde L
k
(x) denota el polinomio de coeficiente de grado k de
Lagrange para f en x
0
, x
1
, ... , x
n
. Al diferenciar esta expresin obtenemos
h
f h f ) 8 . 1 ( ) 8 . 1 ( +
2
) 8 . 1 ( 2
| | h
)) ( (
)! 1 (
) )...( (
) ( ) ( ) (
) 1 (
0
0
x f
n
x x x x
x L x f x f
n
n
k
n
k k

+

+

+
,
) 8 . 1 ( 2
| |
2
| |
2
| ) ( ' ' |
2 2
h h hf

donde 1.8<<1.8+h.
PFE 2000 Pgina 13
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Una vez ms tendremos un problema al estimar el error de truncamiento, a
menos que x sea uno de los nmeros x
j
. En este caso, el trmino que contiene
D
x
[f
(n+1)
((x))] es cero, y entonces la frmula queda as:
La ecuacin (2) recibe el nombre de frmula de (n + 1) puntos para aproximar
f(x
1
) ya que usa una combinacin lineal de los n + 1 valores f(x
k
) para k = 0, 1,...,n.
En trminos generales, la utilizacin de ms puntos de evaluacin en la ecuacin
(2) produce una mayor exactitud, aunque esto no conviene dada la cantidad de
evaluaciones funcionales y el aumento en el error de redondeo. Las frmulas ms
comunes son las que abarcan tres y cinco puntos de evaluacin.
Primero derivamos alguna frmula til de tres puntos y consideramos los
aspectos de sus errores. Puesto que
De manera anloga,
y
Por tanto, de acuerdo con la ecuacin (2),
para cada j = 0, 1, 2, donde
j
indica que este punto depende de x
j
.
)) ( (
)! 1 (
) )...( (
) ( ' ) ( ) ( '
) 1 (
0
0
x f
n
x x x x
D x L x f x f
n
n
k
n
x k k

+

1
]
1

+

+
[ ]. )) ( (
)! 1 (
) )...( (
) 1 ( 0
x f D
n
x x x x
n
x
n

+
+

+
tenemos
x x x x
x x x x
x L ,
) )( (
) )( (
) (
2 0 1 0
2 1
0


.
) )( (
2
) ( '
2 0 1 0
2 1
0
x x x x
x x x
x L

) )( (
2
) ( '
2 1 0 1
2 0
1
x x x x
x x x
x L


.
) )( (
2
) ( '
1 2 0 2
1 0
2
x x x x
x x x
x L

1
]
1



+
1
]
1

) )( (
2
) (
) )( (
2
) ( ) ( '
2 1 0 1
2 0
1
2 0 1 0
2 1
0 1
x x x x
x x x
x f
x x x x
x x x
x f x f
j j
, ) ( ) (
6
1
) )( (
2
) (
2
0
) 3 (
1 2 0 2
1 0
2

+
1
]
1



+
j k
k
k j j
j
x x f
x x x x
x x x
x f
. ) (
)! 1 (
)) ( (
) ( ' ) ( ) ( '
0
) 1 (
0

+
+
n
j k
k
k j
j
n
n
k
j k k j
x x
n
x f
x L x f x f

(2)
PFE 2000 Pgina 14
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Las tres frmulas de la ecuacin (3) son de gran utilidad si los nodos son
equidistantes, es decir, cuando
x
1 =
x
0
+ h y x
2 =
x
0
+ 2h, para alguna h0.
En el resto de esta seccin supondremos que el espaciamiento de los nodos es el mismo.
Al utilizar la ecuacin (3) con x
j
= x
0
, x
1
= x
0
+ h y con x
2
= x
0
+ 2h
obtendremos
Y al hacer lo mismo con x
j
= x
1
, obtenemos
y para x
j
= x
2
,
Puesto que x
1
= x
0
+ h y x
2
= x
0
+ 2h, estas frmulas tambin pueden expresarse
como
Por razones de comodidad, la sustitucin de la variable x
0
+ h por x
0
se usa en la
ecuacin de en medio para transformar esta frmula en una aproximacin de f(x
0
). Una
sustitucin semejante, x
0
+ 2h, por x
0
se utiliza en la ltima ecuacin. Esto nos da tres
frmulas para aproximar f(x
0
):
). (
3
) (
2
1
) ( 2 ) (
2
3 1
) ( '
0
) 3 (
2
2 1 0 0
f
h
x f x f x f
h
x f +
1
]
1

+
), (
6
) (
2
1
) (
2
1 1
) ( '
1
) 3 (
2
2 0 1
f
h
x f x f
h
x f
1
]
1

+
). (
3
) (
2
3
) ( 2 ) (
2
1 1
) ( '
2
) 3 (
2
2 1 0 2
f
h
x f x f x f
h
x f +
1
]
1

+
), (
3
) 2 (
2
1
) ( 2 ) (
2
3 1
) ( '
0
) 3 (
2
0 0 0 0
f
h
h x f h x f x f
h
x f +
1
]
1

+ + +
y f
h
h x f x f
h
h x f ), (
6
) 2 (
2
1
) (
2
1 1
) ( '
1
) 3 (
2
0 0 0

1
]
1

+ + +
). (
3
) 2 (
2
3
) ( 2 ) (
2
1 1
) 2 ( '
2
) 3 (
2
0 0 0 0
f
h
h x f h x f x f
h
h x f +
1
]
1

+ + + +
PFE 2000 Pgina 15
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Finalmente ntese que, como podemos obtener la ltima ecuacin a partir de la primera
con slo reemplazar h con -h, en realidad tenemos slo dos frmulas:
donde
0
se encuentra entre x
0
y x
0
+ 2h y
donde
1
est entre (x
0
- h) y (x
0
+ h).
El error de la ecuacin (5) es aproximadamente la mitad del error de la ecuacin
(4). Ello se debe a que en la ecuacin (5) se emplean datos en ambos lados de x
0
y a que
la ecuacin (4) que utiliza nicamente los de un lado. Asimismo, ntese que f debe
evaluarse slo en dos puntos en la ecuacin (5), mientras que en la ecuacin (4) se
requieren tres ecuaciones. En la figura (2) se ilustra la aproximacin producida con la
ecuacin (5).
En la ecuacin (4) la aproximacin es til cerca de los extremos del intervalo 1,
ya que posiblemente no se tenga informacin de f fuera del intervalo.
[ ] ), (
3
) 2 ( ) ( 4 ) ( 3
2
1
) ( '
0
) 3 (
2
0 0 0 0
f
h
h x f h x f x f
h
x f + + + +
[ ] y f
h
h x f h x f
h
x f ), (
6
) ( ) (
2
1
) ( '
1
) 3 (
2
0 0 0
+ +
[ ] ) (
3
) ( 3 ) ( 4 ) 2 (
2
1
) ( '
2
) 3 (
2
0 0 0 0
f
h
x f h x f h x f
h
x f + +
[ ] ), (
3
) 2 ( ) ( 4 ) ( 3
2
1
) ( '
0
) 3 (
2
0 0 0 0
f
h
h x f h x f x f
h
x f + + + + (4)
[ ] ), (
6
) ( ) (
2
1
) ( '
1
) 3 (
2
0 0 0
f
h
h x f h x f
h
x f + (5)
PFE 2000 Pgina 16
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Los mtodos presentados en las ecuaciones (4) y (5) reciben el nombre de
frmulas de tres puntos (aunque el tercer punto f(x
0
) no aparezca en la ecuacin 5).
Asimismo, hay mtodos llamados frmulas de cinco puntos en que se evala la funcin
en dos puntos ms, pero cuyo trmino de error tiene la forma 0(h
4
).
Otra frmula de cinco puntos de gran utilidad, sobre todo en lo relacionado con
la interpolacin de splines cbicos, es la siguiente:
donde se encuentra entre x
0
y x
0
+ 4h. Las aproximaciones del extremo izquierdo
pueden obtenerse aplicando la frmula con h > 0 y las aproximaciones del extremo
derecho, con h<0.
A continuacin aparece la tabla recapitulativa de las frmulas de diferencia de grados
uno y dos que fueron utilizadas en el programa :
Frmulas de diferencia de grado uno :
Principio :
Medio :
Fin :
h
f f f f
f
i i i i
i
6
11 18 9 2
'
1 2 3
+

+ + +
h
f f f f
f
i i i i
i
6
2 9 18 11
'
3 2 1
+

h
f f f f
f
i i i i
i
12
8 8
'
2 1 1 2 + +
+ +

[ ] ). (
30
) 2 ( ) ( 8 ) ( 8 ) 2 (
12
1
) ( '
) 5 (
4
0 0 0 0 0
f
h
h x f h x f h x f h x f
h
x f + + + + + (6)
[ ] ) 4 ( 3 ) 3 ( 16 ) 2 ( 36 ) ( 48 ) ( 25
12
1
) ( '
0 0 0 0 0 0
h x f h x f h x f h x f x f
h
x f + + + + + +
) (
5
) 5 (
4
f
h
+
(7)
PFE 2000 Pgina 17
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Frmulas de diferencia de grado dos :
Principio :
Medio :
Fin :
2
1 2 3
2 5 4
' '
h
f f f f
f
i i i i
i
+ +

+ + +
2
3 2 1
4 5 2
' '
h
f f f f
f
i i i i
i

+

2
2 1 1 2
12
16 30 16
' '
h
f f f f f
f
i i i i i
i
+ +
+ +

PFE 2000 Pgina 18


MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
6. Interpolacin de splines cbicos
La naturaleza oscilatoria de los polinomios de alto grado y la propiedad de
que una fluctuacin en una parte pequea de intervalo puede ocasionar
importantes fluctuaciones en todo l limita su utilizacin.
Un procedimiento alterno consiste en dividir el intervalo en una serie de
subintervalos, y en cada subintervalo construir un polinomio (generalmente) diferente
de aproximacin. A esta forma de aproximar por medio de funciones se le conoce como
aproximacin polinmica fragmentaria.
La aproximacin polinmica fragmentaria ms simple es la interpolacin lineal
fragmentaria que consiste en unir una serie de puntos de datos mediante una serie de
segmentos de rectas, como los que aparecen en la figura.
{(x
o
,f(x
o
)), (x
1
,f(x
1
)),...,(x
n
,f(x
n
))}
La aproximacin por funciones lineales ofrece una desventaja: no se tiene la
seguridad de que haya diferenciabilidad en los extremos de los subintervalos, lo cual
dentro de un contexto geomtrico significa que la funcin interpolante no es suave en
dichos puntos. A menudo las condiciones fsicas indican claramente que se requiere esa
condicin y que la funcin aproximante debe ser continuamente diferenciable.
Otro procedimiento consiste en emplear un polinomio fragmentario del tipo
Hermite. Por ejemplo, silos valores de la funcin f y de f se conocen en los puntos x
0
<
x
1
... < x
n
, podemos emplear un polinomio de Hermite de grado tres en cada uno de los
subintervalos [x
o
, x
1
], [x
1
, x
2
] ,..., [x
n-1
, x
n
] para obtener una funcin continuamente
diferenciable en el intervalo [x
0
, x
n
]. Si queremos determinar el polinomio cbico de
Hermite apropiado en determinado intervalo, basta calcular H
3
(x) para ese intervalo,
Puesto que los polinomios interpolantes de Lagrange necesarios para calcular H
3
son de
primer grado, podemos hacer el clculo sin gran dificultad. Sin embargo, para utilizar
los polinomios fragmentarios de Hermite en la interpolacin general, necesitamos
conocer la derivada de la funcin que va a ser aproximada, lo cual muchas veces no es
PFE 2000 Pgina 19
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
posible.
Vamos a estudiar la aproximacin por medio de polinomios fragmentarios que
no requieren informacin sobre la derivada, salvo, quiz, en los extremos del intervalo
donde se aproxima la funcin.
El tipo ms simple de funcin de polinomio fragmentario diferenciable en un
intervalo entero [x
0
, x
n
] es la funcin obtenida al ajustar un polinomio cuadrtico entre
cada par consecutivo de nodos. Esto se hace construyendo una cuadrtica en [x
0
, x
1
] que
concuerde con la funcin en x
o
y en x
1
otra cuadrtica en [x
1
, x
2
] que concuerde con la
funcin en x
1
y en x
2
y as sucesivamente. Un polinomio cuadrtico general tiene tres
constantes arbitrarias el trmino constante, el coeficiente de x y el coeficiente de x
2

y nicamente se requieren dos condiciones para ajustar los datos en los extremos de
cada intervalo, por ello, existe una flexibilidad que permite seleccionar la cuadrtica de
modo que la interpolante tenga una derivada continua en [x
0
, x
n
]. El problema de este
procedimiento se presenta cuando hay que especificar las condiciones referentes a la
derivada de la interpolante en los extremos x
0
y x
n
. No hay constantes suficientes para
cerciorarse de que se satisfagan las condiciones.
La aproximacin polinmica fragmentaria ms comn utiliza polinomios entre
cada par consecutivo de nodos y recibe el nombre de interpolacin de splines cbicos.
Un polinomio cbico general contiene cuatro constantes; as pues, el procedimiento del
trazador cbico ofrece suficiente flexibilidad para garantizar que el interpolante no slo
sea continuamente diferenciable en el intervalo, sino que adems tenga una segunda
derivada continua en el intervalo. Sin embargo, en la construccin del trazador cbico
no se supone que las derivadas del interpolante concuerdan con las de la funcin, ni
siquiera en los nodos.
Dada una funcin f definida en [a, b] y un conjunto de nodos a = x
0
< x
1
< ... x
n
=
b un interpolante de trazador cbico S para f es una funcin que cumple con las
condiciones siguientes:
a. S(x) es un polinomio cbico, denotado S
j
(x), en el subintervalo [x
1
, x
j+1
] para
cada j = 0, 1,..., n-1;
b. S(x
j
) = f(x
j
) para cada j = 0, 1,..., n;
c. S
j+1
(x
j+1
) = S
j
(x
j+1
) para cada j = 0, 1,..., n - 2;
d. S
j+1
(x
j+1
) = S
j
(x
j+1
) para cada j = 0, 1,..., n - 2;
c. S
j+1
(x
j+1
) = S
j
(x
j+1
) para cada j = 0, 1,..., n - 2;
f. Se satisface uno de los siguientes conjuntos de condiciones de frontera
S(x
0
) = S(x
n
) = 0 (frontera libre o natural)
S(x
0
) = S(x
0
) = 0 y S(x
n
) = f(x
n
) (frontera sujeta).
Aunque los splines cbicos se definen con otras condicione s de frontera, las
condiciones anteriores son suficientes en este caso. Cuando se presentan las condiciones
de frontera libre, el trazador recibe el nombre de trazador natural, y su grfica se
aproxima a la forma que adoptara una varilla larga y flexible si la hiciramos pasar por
los puntos de datos {(x
o
,f(x
o
)),(x
1
,f(x
1
)),...,(x
n
,f(x
n
))}.
PFE 2000 Pgina 20
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
En trminos generales, en las condiciones de frontera sujeta se logran
aproximaciones ms exactas, ya que abarcan ms informacin acerca de la funcin.
Pero para que se cumpla este tipo de condicin de frontera, se requiere tener los valores
de la derivada en los extremos o bien una aproximacin precisa de ellos.
Si queremos construir el interpolante del trazador cbico de determinada funcin
f, aplicamos las condiciones de la definicin a los polinomios cbicos
S
j
(x) = a
j
+ b
j
(x - x
j
) + c
j
(x - x
j
)
2
+ d
j
(x - x
j
)
3
para cada j = 0, 1,..., n-1.
Est claro que
S
j
(x
j
) = a
j =
f(x
j
),
y si se aplica la condicin (c),
a
j+1
= S
j+1
(x
j+1
) = S
j
(x
j+1
) = a
j
+ b
j
(x
j+1
- x
j
) + c
j
(x
j+1
- x
j
)
2
+ d
j
(x
j+1
- x
j
)
3
para cada j = 0, 1,...,n-2.
Puesto que los trminos (x
j+1
- x
j
) se utilizarn varias veces en este desarrollo, conviene
introducir la notacin ms simple
h
j
= x
j+1
- x
j
para cada j = 0, 1,...,n-1. Si tambin definimos a
n
= f(x
n
), entonces la ecuacin
(1) a
j+1
= a
j
+ b
j
h
j
+ c
j
h
j
2
+ h
j
3
ser vlida para cada j = 0, 1,...,n-1
PFE 2000 Pgina 21
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
De manera anloga, defina b
j
= S(x
n
) y observe que
S
j
(x) = b
j
+ 2c
j
(x - x
j
) + 3d
j
(x - x
j
)
2
significa que S
j
(x) = b
j
para cada j = 0, 1,..., n - 1. Al aplicar la condicin (d)
obtenemos
(2) b
j+1
= b
j
+ 2c
j
h
j
+ 3d
j
h
j
2
para cada j = 0, l,..., n-1.
Al definir c
n
= S(x
n
)/2 y al aplicar la condicin (e), se obtiene otra relacin entre los
coeficientes de S,. En este caso,
(3) c
j+1
= c
j
+ 3d
j
h
j
para cada j = 0, 1,..., n-1.
Al resolver d~ en la ecuacin (3) y al sustituir este valor en las ecuaciones (1) y (2), se
obtienen las ecuaciones
(4) ( )
1
2
1
2
3
+ +
+ + +
j j
j
j j j j
c c
h
h b a a
y
(5) b
j+1
= b
j
+ h
j
(c
j
+ c
j+1
)
para cada j = 0, 1,..., n-1.
La relacin final que incluye los coeficientes se obtiene resolviendo la ecuacin
correspondiente en la forma de la ecuacin (4), primero para b
j
,
(6) ( ) ( )
1 1
2
3
1
+ +
+
j j
j
j j
j
j
c c
h
a a
h
b
y entonces, con una reduccin del ndice, para b
j-1
:
( ) ( )
j j
j
j j
j
j
c c
h
a a
h
b +

1
1
1
1
1
2
3
1
Cuando sustituimos estos valores en la ecuacin obtenida de la ecuacin (5), con el
ndice reducido en 1, obtenemos el sistema de ecuaciones lineales
(7) ( ) ( ) ( ),
3 3
2
1
1
1 1 1 1 1

+ +
+ + + +
j j
j
j j
j
j j j j j j j
a a
h
a a
h
c h c h h c h
PFE 2000 Pgina 22
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
para cada j = 1, 2,..., n - 1. Este sistema contiene slo { }
n
j
j
c
0
como incgnitas, ya que
los valores de { }
1
0

n
j
j
h y de { }
n
j
j
a
0
estn dados por el espaciado de los nodos { }
n
j
j
x
0
y los
valores de f en stos.
Ntese que una vez que se conocen los valores de { }
n
j
j
c
0
, encontrar el resto de las
constantes { }
1
0

n
j
j
b partiendo de la ecuacin (6) y { }
1
0

n
j
j
d partiendo de la ecuacin (3)
para construir los polinomios cbicos ( ) { }
1
0

n
j
j
x S es fcil.
La interrogante principal que se plantea en relacin con esta construccin es si se
pueden determinar los valores de { }
n
j
j
c
0
por medio del sistema de ecuaciones dado en
(7) y, de ser as, si estos valores son nicos. El siguiente teorema indica que esto es
posible cuando se establece una de las dos condiciones de frontera de la parte (f) de la
definicin.
Si definimos f en a = x
0
< x
1
<...... < x
n
= b entonces f tendr un interpolante nico de
trazador natural en los nodos x
0
, x
1
x
n
, es decir, un interpolante de trazador que cumple
con las condiciones de frontera S(a) = 0 y S(b) = 0.
Demostracin :
En este caso, las condiciones de frontera significan que c
n
= S(x
n
)/2 = 0 y que
0 = S(x
0
) = 2c
0
+ 6d
0
(xo -x
0
);
as que c
0
= 0.
Las dos ecuaciones c
0
= 0 y c
n
= 0 junto con las ecuaciones de (7) producen un sistema
lineal descrito por la ecuacin vectorial Ax = b, donde A es la matriz de (n + 1) por
(n+1)
y donde b y x son los vectores
PFE 2000 Pgina 23
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
La matriz A es estrictamente dominante en sentido diagonal. Por tanto, el sistema lineal
tiene una solucin nica para c
0
, c
1
,..., c
n
.
La solucin del problema de los splines cbicos con las condiciones de frontera S(xo)
= S(x
0
) = 0 puede obtenerse por medio del algoritmo.
Trazador cbico natural
Para construir el interpolante de trazador cbico S de la funcin f, que se define en los
nmeros x
0
< x
1
<...... < x
n
y que satisface S(x
0
) = S(x
n
) = 0:
ENTRADA n; x
0
, x
1
,..., x
n;
a
0
= f(x
0
), a
1
= f(x
1
),..., a
n
= f(x
n
).
SALIDA a
j
, b
j
, c
j
, d
j
, para j = 0, 1,..., n-1.
(Nota : S(x) = S
j
(x) = aj + b
j
(x - x
j
) + c
j
(x - x
1
)
2
+ d
j
(x - x
j
)
3
para
x
j
xx
j+1
.)
Paso 1 Para i = 0, 1,..., n-1 tome h
i
= x
i+1
- x
i
.
Paso 2 Para i = 0, 1,..., n-1 tome
( ) ( )
1
1
1
3 3
+

+
+
i i
i
i i
j
j
a a
h
a a
h

Paso 3 Tome l
0
= 1; (Pasos 3,4,5, y parte del paso 6 resuelven un sistema lineal
tridiagonal
utilizando el mtodo descrito en el algoritmo 6.7.)
= 0;
zo = 0.
Paso4 Para i = 1, 2,..., n-l
Tome l
i
= 2(x
i+1
x
i-1
) h
i-1
-
i-1
;

i
= h
i
/ l
i
;
z
i
= (
i
- h
i-1
z
i-1
) / l
i
.
PFE 2000 Pgina 24
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Paso5 Tome l
n
= 1;
z
n
= 0;
c
n
= 0.
Paso6 Para j = n-1, n-2,..., 0
Tome c
j
= z
j

j
c
j+1
;
b
j
= (a
j+1
- a
j
) / h
j
h
j
(c
j+1
2c
j
) / 3;
d
i
= (c
j+1
- c
j
) / (3h
j
).
Paso 7 SALIDA (a
j
, b
j
, c
j
, d
j
, para j = 0, 1,..., n-1);
PARE.
Teorema
Si f est definida en a = x
0
<x
1
< ... <x
n
= b, y si es diferenciable en a y en b, entonces f
tendr un interpolante de trazador sujeto nico en los nodos x
0
, x
1
l,..., x
n
, es decir, un
interpolante de trazador que cumple las condiciones de frontera S(a) = f(a) y S(b) =
f(b).
Demostracin
Al aplicar el hecho de que S(a) = f(x
0
) = b
0
, podemos ver que la ecuacin (3.21) con j
= 0 implica que
En consecuencia,
) ( ' 3 ) (
3
2
0 1
0
1 0 0 0
a f a a
h
c h c h + +
De manera semejante,
F(b) = b
n
= b
n-1
+ h
n-1
( c
n-1
+ c
n
),
de modo que la ecuacin (6) con j = n - 1 implica que
) ( ) 2 (
3
) ( '
1 1 1
1
1
1
n n n n n
n
n
n n
c c h c c
h
h
a a
b f + + +

), 2 (
3
1
1
1
1
n n
n
n
n n
c c
h
h
a a
+

) 2 (
3
) ( '
1 0
0
0
0 1
c c
h
h
a a
a f +

PFE 2000 Pgina 25


MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
y que
Las ecuaciones (7) junto con las ecuaciones
y
determinan el sistema lineal Ax = b, donde
La matriz A es estrictamente dominante en sentido. En consecuencia, el sistema lineal
tiene una solucin nica para c
0
, c
1
,..., c
n
.
La solucin del problema de los splines cbicos con condiciones de frontera
S(x
0
) = f(x
0
) y S(x
n
) = f(x
n
) se puede obtener usando el algoritmo 3.5.
). (
3
) ( ' 3 2
1 1
1
1 1 1


+
n
n
n n n n
a a
h
b f c h c h
) ( ' 3 ) (
3
2
0 1
0
1 0 0 0
a f a a
h
c h c h
) (
3
) ( ' 3 2
1
1
1 1 1


+
n n
n
n n n n
a a
h
b f c h c h
PFE 2000 Pgina 26
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
EJEMPLO
La figura muestra a un joven pato en pleno vuelo. Para aproximar el perfil de la parte
superior del pato, seleccionamos algunos puntos a lo largo de la curva por donde
queremos que pase la curva de aproximacin.
La tabla incluye las coordenadas de 21 puntos de datos relativos al sistema de
coordenadas sobrepuestas que aparece en la figura siguiente.
Obsrvese que se utilizan ms puntos cuando la curva cambia rpidamente que
cuando lo hace con ms lentitud.
X 0.9 1.3 1.9 2.1 2.6 3.0 3.9 4.4 4.7 5.0 6.0 7.0 8.0 9.2 10.5 11.3 11.6 12.0 12.6 13.0 13.3
F(x) 1.3 1.5 1.85 2.1 2.6 2.7 2.4 2.15 2.05 2.1 2.25 2.3 2.25 1.95 1.4 0.9 0.7 0.6 0.5 0.4 0.25
Al utilizar el algoritmo para generar el trazador cbico libre con estos datos, se
obtienen los coeficientes que aparecen en la tabla. Esta curva de trazador es casi
idntica al perfil, como se observa en la figura siguiente.
PFE 2000 Pgina 27
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
j x
j
a
j
b
j
c
j
d
j
0 0.9 1.3 5.40 0.00 -0.25
1 1.3 1.5 0.42 -0.30 0.95
2 1.9 1.85 1.09 1.41 -2.96
3 2.1 2.1 1.29 -0.37 -0.45
4 2.6 2.6 0.59 -1.04 0.45
5 3.0 2.7 -0.02 -0.50 0.17
6 3.9 2.4 -0.50 -0.03 0.08
7 4.4 2.15 -0.48 0.08 1.31
8 4.7 2.05 -0.07 1.27 -1.58
9 5.0 2.1 0.26 -0.16 0.04
10 6.0 2.25 0.08 -0.03 0.00
11 7.0 2.3 0.01 -0.04 -0.02
12 8.0 2.25 -0.14 -0.11 0.02
13 9.2 1.95 -0.34 -0.05 -0.01
14 10.5 1.4 -0.53 -0.10 -0.02
15 11.3 0.9 -0.73 -0.15 1.21
16 11.6 0.7 -0.49 0.94 -0.84
17 12.0 0.6 -0.14 -0.06 0.04
18 12.6 0.5 -0.18 0.00 -0.45
19 13.0 0.4 -0.39 -0.54 0.60
20 13.3 0.25
PFE 2000 Pgina 28
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
7. Estructura de la parte clculo de las
velocidades del programa
En esta parte, voy a explicar la estructura del programa que permite calcular las
velocidades.
Algunas informaciones importantes :
Las diferentes partes del programa no sern presentadas en el orden en el cual estn
escritas sino en el orden en el cual estn ejecutadas por Fortran.
No sern presentadas las declaraciones de las variables y algunos mdulos que estn
particulares.
No ser presentada la parte que permite calcular las aceleraciones ya que est muy
parecida con la parte que permite calcular las velocidades.
Sin embargo, es posible ver el programa completo (partes para calcular las velocidades
y aceleraciones) en los anexos.
1. Se pide cual es la barra que quiero analizar.
call transformacion(num_barras,num_nudos,num_apoyos,num_parp,nudos,barras,apoyos)
write(10,*)'PARA FINALIZAR PULSE EL BOTN DERECHO DEL RATN'
funcion que permite tocar una barra
call tocarbarra(elemento,ordenbarra,punto1,punto2,acabar)
Cual es el numero de la barra seleccionada
bar_diag=0
do i=1,num_barras
if ((nudos(barras(i,1),1).eq.punto1%wx).and.(nudos(barras(i,1),2).eq.punto1%wy)) then
if ((nudos(barras(i,2),1).eq.punto2%wx)
.and.(nudos(barras(i,2),2).eq.punto2%wy)) then
bar_diag=i
end if
end if
end do
PFE 2000 Pgina 29
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
do j=1,num_barras
if ((nudos(barras(j,1),1).eq.punto2%wx).and.(nudos(barras(j,1),2).eq.punto2%wy)) then
if ((nudos(barras(j,2),1).eq.punto1%wx)
.and.(nudos(barras(j,2),2).eq.punto1%wy)) then
bar_diag=j
end if
end if
end do
2. Calculo del ngulo de la barra de entrada en cada posicin.
Numero de la barra seleccionada
bar_ent=entradas(1)%barra
do num_posicion=1,control(1)
xa=pto_coord(barras(bar_ent,1))%x(num_posicion)
ya=pto_coord(barras(bar_ent,1))%y(num_posicion)
xb=pto_coord(barras(bar_ent,2))%x(num_posicion)
yb=pto_coord(barras(bar_ent,2))%y(num_posicion)
llamada de la funcin que transforme las coordenadas de las extremidades de la barra en un
ngulo respecto a la horizontal
call calcular_angulo(xa,ya,xb,yb,ang)
ang_ent(num_posicion)=ang
end do
3. Calculo de los ngulos extremos de la barra de entrada
ang_maxi=ang_ent(1)
ang_mini=ang_ent(1)
do i=1,control(1)
if (ang_ent(i).gt.ang_maxi) then
ang_maxi=ang_ent(i)
end if
if (ang_ent(i).lt.ang_mini) then
ang_mini=ang_ent(i)
end if
end do
4. Calculo del ngulo de la barra seleccionada en cada posicin.
do num_posicion=1,control(1)
xa=pto_coord(barras(bar_diag,1))%x(num_posicion)
ya=pto_coord(barras(bar_diag,1))%y(num_posicion)
xb=pto_coord(barras(bar_diag,2))%x(num_posicion)
yb=pto_coord(barras(bar_diag,2))%y(num_posicion)
PFE 2000 Pgina 30
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
llamada de la funcin que transforme las coordenadas de las extremidades de la barra en un
ngulo respecto a la horizontal
call calcular_angulo2(xa,ya,xb,yb,ang)
ang_barra(num_posicion)=ang !lo tengo en grados con la horizontal
end do
5. Arreglo en orden creciente de los ngulos en funcin de la barra de
entrada.
Es necesario hacer eso para no tener problemas cuando se dibujar.
if (entradas(num_entradas)%incremento.LT.0) then
do i=1,control(1)
tempo1(i)=ang_ent(control(1)+1-i)
tempo2(i)=ang_barra(control(1)+1-i)
end do
do i=1,control(1)
ang_ent(i)=tempo1(i)
ang_barra(i)=tempo2(i)
end do
end if
6. Clculo de los coeficientes de influencia de las velocidades.
Aqu se calculan los coeficientes de influencia de las velocidades. Es decir que con el
ngulo de la barra de entrada () y el ngulo de la barra estudiada (), se calcula :
h=0
do i=2,control(1)-1
if (ang_ent(i+1)-ang_ent(i).GT.(ang_ent(i)-ang_ent(i-1))*1.2
.OR. (ang_ent(i+1)-ang_ent(i))*1.2.LT.ang_ent(i)-ang_ent(i-1)) then
h=1
end if
end do
if (h.EQ.0) then
do num_posicion=1,2
call fctini(num_posicion)
end do
do num_posicion=control(1)-1,control(1)
call fctfin(num_posicion)
end do
do num_posicion=3,control(1)-2
call fctmed(num_posicion)
end do

d
d
PFE 2000 Pgina 31
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
else
do num_posicion=1,2
call fctini(num_posicion)
end do
do num_posicion=3,h-2
call fctmed(num_posicion)
end do
do num_posicion=h-1,h
call fctfin(num_posicion)
end do
call fctini(h+1)
do num_posicion=h+2,control(1)-2
call fctmed(num_posicion)
end do
do num_posicion=control(1)-1,control(1)
call fctfin(num_posicion)
end do
end if
Para calcular los coeficientes de influencia de las velocidades, se utilizan diferencias
numricas (el mtodo fue explicado anteriormente). Las formulas son las siguientes.
Funcin para diferenciar los puntos 1 y 2
subroutine fctini(num_posicion)
h=ang_ent(num_posicion+1)-ang_ent(num_posicion)
vel_barra(num_posicion)=(2*ang_barra(num_posicion+3)
-9*ang_barra(num_posicion+2)+18*ang_barra(num_posicion+1)
-11*ang_barra(num_posicion))/(6*h)
end subroutine fctini
Funcin para diferenciar los puntos 3 a n-2
subroutine fctfin(num_posicion)
h=ang_ent(num_posicion)-ang_ent(num_posicion-1)
vel_barra(num_posicion)=(11*ang_barra(num_posicion)
-18*ang_barra(num_posicion-1)+9*ang_barra(num_posicion-2)
-2*ang_barra(num_posicion-3))/(6*h)
end subroutine fctfin
Funcin para diferenciar los puntos n-1 y n
subroutine fctmed(num_posicion)
h=(ang_ent(num_posicion+2)-ang_ent(num_posicion-2))/4
vel_barra(num_posicion)=(-ang_barra(num_posicion+2)
+8*ang_barra(num_posicion+1)-8*ang_barra(num_posicion-1)
+ang_barra(num_posicion-2))/(12*h)
end subroutine fctmed
PFE 2000 Pgina 32
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
7. Introduccin de la ley de entrada
Este parte del programa permite elegir el tipo de movimiento de la barra de entrada :
movimiento con velocidad constante o aceleracin constante. Adems, se puede
introducir el modulo de la velocidad o aceleracin.
retlog=dlginit(eleg_mov,dial)
retlog=dlgset(dial,w,.true.)
retlog=dlgset(dial,A,.false.)
result=dlgmodal(dial)
retlog=dlgget(dial,w,chequeador)
call dlguninit(dial)
if (chequeador) then
retlog=dlginit(cond_ini2,dial2)
retlog=dlgset(dial2,veloc,"1")
result=dlgmodal(dial2)
retlog=dlgget(dial2,veloc,in)
call dlguninit(dial2)
read(in,*) var_ent
var_ent=abs(var_ent)
movt=2 significa velocidad constante
movt=2
else
retlog=dlginit(cond_ini1,dial1)
retlog=dlgset(dial1,acel,"1")
result=dlgmodal(dial1)
retlog=dlgget(dial1,acel,in)
call dlguninit(dial1)
read(in,*) var_ent
var_ent=abs(var_ent)
movt=1 significa aceleracion constante
movt=1
end if
El programa llama ventanas creadas con la funcin dialog box donde saca valores
introducidas por el usuario y que sern utilizadas luego. Aqu siguen estas ventanas.
PFE 2000 Pgina 33
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
PFE 2000 Pgina 34
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
8. Clculo de las velocidades
Con los coeficientes de influencia de velocidades y la ley de entrada, se deduce la
velocidad de la barra estudiada.
El coeficiente de influencia es :
Se calcula :
As, se puede deducir :
Ahora, tenemos la velocidad de la barra estudiada.
if (movt.eq.1) then
do i=1,control(1)
t(i)=abs(sqrt(2*(ang_ent(i)-ang_ent(1))/var_ent))
end do
if (entradas(num_entradas)%incremento.lt.0) then
do i=1,control(1)
tempo3(i)=t(control(1)+1-i)
end do
do i=1,control(1)
t(i)=tempo3(i)
end do
end if
do i=1,control(1)
vit(i)=vel_barra(i)*var_ent*t(i)
if (entradas(num_entradas)%incremento.lt.0) then
vit(i)=-vit(i)
end if
end do
else
do i=1,control(1)
vit(i)=vel_barra(i)*var_ent
if (entradas(num_entradas)%incremento.lt.0) then
vit(i)=-vit(i)
end if
end do
end if

d
dt
dt
d
d
d

dt
d
dt
d
PFE 2000 Pgina 35
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
9. Calculo de las velocidades extremas de la barra estudiada
Aqu se calcula las velocidades extremas de la barra estudiada para dibujar el grfico
con una buena escala.
vmax=vit(1)
vmin=vit(1)
do i=1,control(1)
if (vit(i).gt.vmax) then
vmax=vit(i)
end if
if (vit(i).lt.vmin) then
vmin=vit(i)
end if
end do
10. Interpolacin con los splines cbicos
Para alisar la curva, es necesario conocer muchos puntos. Por eso se utiliza un mtodo
de interpolacin con los splines cbicos para calcular las coordenadas de muchos puntos
en funcin de los puntos conocidos (el mtodo fue explicado anteriormente).
n=control(1)
do i=1, n
x(i) = ang_ent(i)
a(i) = vit(i)
end do
do i=1, n-1
h(i) = x(i+1) - x(i)
end do
do i=2, n-1
alpha(i) = 3 / h(i) * (a(i+1) - a(i)) - 3 / h(i-1) * (a(i) - a(i-1))
end do
l(1) = 1
nu(1) = 0
z(1) = 0
do i=2, n-1
l(i) = 2 * (x(i+1) - x(i-1)) - h(i-1) * nu(i-1)
nu(i) = h(i) / l(i)
z(i) = (alpha(i) - h(i-1) * z(i-1)) / l(i)
end do
l(n) = 1
z(n) = 0
c(n) = 0
PFE 2000 Pgina 36
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
do j=n-1, 1, -1
c(j) = z(j) - nu(j) * c(j+1)
b(j) = (a(j+1) - a(j)) / h(j) - h(j) * (c(j+1) + 2 * c(j)) / 3
d(j) = (c(j+1) - c(j)) / (3 * h(j))
end do
Tenemos la ecuacin de la curva.
Su forma es Sj(x) = aj+ bj * (x - xj) + cj * (x - xj)^2 + dj * (x-xj)^3 con j=1,...,n-1
do i=1,nb_pts-1
ptx(i)=ang_mini+(ang_maxi-ang_mini)*(i-1)/(nb_pts-1)
s=1
do j=2,control(1)-1
if (ptx(i).gt.ang_ent(j).and.ptx(i).le.ang_ent(j+1)) then
s=j
end if
end do
pty(i)=a(s)+b(s)*(ptx(i)-x(s))+c(s)*(ptx(i)-x(s))**2+d(s)*(ptx(i)-x(s))**3
end do
s=control(1)-1
ptx(nb_pts)=ang_maxi
pty(nb_pts)=a(s)+b(s)*(ptx(i)-x(s))+c(s)*(ptx(i)-x(s))**2+d(s)*(ptx(i)-x(s))**3
11. Caractersticas de la ventana donde se dibuja el grfico.
Estas lneas permiten introducir las caractersticas de la ventana donde se dibuja el
grfico.
Estas caractersticas son :
la posicin sobre la pantalla,
el tamao,
el ttulo,
la escala...
estado=GETWSIZEQQ(QWIN$FRAMEWINDOW,QWIN$SIZEMAX,winfofw)
status=GETWINDOWCONFIG(configfw)
Open(Unit=15,File='User',Title='diagrama de velocidades')
config15.numxpixels=(configfw.numxpixels*0.7)
config15.numypixels=(configfw.numypixels*0.7)
10 ifun=focusqq(15)!la traigo delante y pinto en ella
status=SETWINDOWCONFIG(config15)
If(.NOT.status) Goto 10
winfo15.x=0
winfo15.y=0
estado=SETWSIZEQQ(15,winfo15)
if (vmax.gt.0.AND.vmin.gt.0) then
vmin=0
end if
PFE 2000 Pgina 37
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
if (vmax.lt.0.AND.vmin.lt.0) then
vmax=0
end if
12. Caractersticas del grfico.
Estas lneas permiten introducir las caractersticas del grfico.
Estas caractersticas son :
los ejes,
las flechas,
los ttulos de los ejes,
los valores extremos,
los colores...
wx1=ang_mini-.1*(ang_maxi-ang_mini)
wy1=vmax+.3*abs(vmax-vmin)
wx2=ang_maxi+.25*(ang_maxi-ang_mini)
wy2=vmin-.2*abs(vmax-vmin)
ifun=focusqq(15)!la traigo delante y pinto en ella
status=SETWINDOW(.TRUE.,(wx1),(wy1),(wx2),(wy2))
dibuja=SETCOLORRGB(#ffffff)
call moveto_w(ang_mini,cero,wxy )
ifun=lineto_w(ang_maxi+.05*(ang_maxi-ang_mini),cero)
ifun=lineto_w(ang_maxi+.03*(ang_maxi-ang_mini),.03*abs(vmax-vmin))
call moveto_w(ang_maxi+.05*(ang_maxi-ang_mini),cero,wxy)
ifun=lineto_w(ang_maxi+.03*(ang_maxi-ang_mini),-.03*abs(vmax-vmin))
call moveto_w(ang_mini,vmin,wxy)
ifun=lineto_w(ang_mini,vmax+.1*abs(vmax-vmin))
ifun=lineto_w(ang_mini-.015*(ang_maxi-ang_mini),vmax+.05*abs(vmax-vmin))
call moveto_w(ang_mini,vmax+.1*abs(vmax-vmin),wxy)
ifun=lineto_w(ang_mini+.015*(ang_maxi-ang_mini),vmax+.05*abs(vmax-vmin))
ifun=focusqq(15)
res=setactiveqq(15)
numfonts=initializefonts()
fontnum=setfont('t''Arial''h14w8')
ifun=setcolor(15)
call moveto_w(ang_mini-.06*(ang_maxi-ang_mini),vmax+.18*abs(vmax-vmin),wxwy)
call outgtext('Velocidad')
call moveto_w(ang_maxi+.065*(ang_maxi-ang_mini),.11*abs(vmax-vmin),wxwy)
call outgtext('angulo')
call moveto_w(ang_maxi+.07*(ang_maxi-ang_mini),.04*abs(vmax-vmin),wxwy)
call outgtext('barra')
call moveto_w(ang_maxi+.06*(ang_maxi-ang_mini),-.03*abs(vmax-vmin),wxwy)
call outgtext('entrada')
call moveto_w (ang_mini-.09*(ang_maxi-ang_mini),vmax+.03*abs(vmax-vmin),wxwy)
write (y1,'(f5.2)')vmax
call outgtext (y1)
PFE 2000 Pgina 38
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
call moveto_w (ang_mini-.09*(ang_maxi-ang_mini),vmin+.03*abs(vmax-vmin),wxwy)
write (y2,'(f5.2)')vmin
call outgtext (y2)
call moveto_w (ang_mini-.04*(ang_maxi-ang_mini),-.04*abs(vmax-vmin),wxwy)
write (x1,'(f5.2)')ang_mini
call outgtext (x1)
call moveto_w (ang_maxi-.04*(ang_maxi-ang_mini),-.04*abs(vmax-vmin),wxwy)
write (x2,'(f5.2)')ang_maxi
call outgtext (x2)
13. Trazado de la curva
Se traza la curva de la velocidad de la barra seleccionada en funcin del ngulo de la
barra de entrada.
Hay que notar que el eje de las abscisas es graduado con valores crecientes de la
izquierda hasta la derecha y que el eje de las ordenadas es graduado con valores
crecientes de abajo arriba.
ifun=setcolor(10)
call moveto_w(ptx(1),pty(1),wxy)
if (control(1).gt.1) then
do i=2,nb_pts
result=lineto_w(ptx(i),pty(i))
call moveto_w(ptx(i),pty(i),wxy)
end do
end if
PFE 2000 Pgina 39
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
8. Instrucciones para utilizar el programa
8.1. Cmo cargar el programa?
Es necesario tener un ordenador con el programa Fortran Powerstation de Microsoft.
Aqu siguen las instrucciones para cargar el programa y utilizarlo :
1. Abrir Fortran Powerstation,
2. Seleccionar :
/ File / New...
Se abre una ventana,
3. Seleccionar :
Project Workspace
OK,
Se abre una ventana,
4. Dar las informaciones :
Type : QuickWin Application,
Location : ...,
Name : ...nombre,
Se crea una carpeta nombre en el emplazamiento especificado
y un fichero Project Workspace que se llama nombre.mdp,
5. Con el Explorador de Windows :
Copiar los ficheros desde el disquete hasta la carpeta nombre
(.aps, .h, .mak, .mec, .f90, .fd, .res, .rc, Icono),
PFE 2000 Pgina 40
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
6. Seleccionar :
/ Insert / Files into Project...
Se abre una ventana,
7. Seleccionar todos los ficheros,
OK,
8. Seleccionar :
/ Build / Build nombre.exe
9. Seleccionar :
/ Build / Execute nombre.exe
8.2. Cmo utilizar el programa?
1. Abrir el fichero .mdp.
2. Ejecutar el programa (/ Build / Execute ...).
3. En el men Archivo, hay dos opciones principales :
Crear un nuevo modelo :
/ Archivo / Nuevo con ratn
/ Archivo / Nuevo con teclado
O abrir un modelo existente.
PFE 2000 Pgina 41
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
4. Mover el sistema con el opcin :
/ Problemas de Posicin / Posiciones sucesivas,
Seleccionar la barra de entrada pinchndola,
Introducir el incremento del ngulo de esta barra.
Este incremento puede ser positivo (sentido trigonomtrico),
o negativo (sentido anti-trigonomtrico).
PFE 2000 Pgina 42
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
5. Esperar que el movimiento se acabe :
El sistema se para cuando no puede resolver casos particulares (puntos muertos).
PFE 2000 Pgina 43
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Sin embargo, se puede parar el movimiento cuando se quiere seleccionando :
/ Problemas de Posicin / Detener.
6. Empezar el anlisis :
Seleccionar / Anlisis / velocidades,
o / Anlisis / aceleraciones.
PFE 2000 Pgina 44
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
7. Elegir la barra a estudiar :
Seleccionar esta barra pinchndola.
Se abre una caja de dilogo.
8. Elegir el tipo de movimiento con una de las dos opciones propuestas:
= constante (en rebelda)
A = constante
OK.
Se abre otra caja de dilogo.
9. Datos :
Aqu se introduce el mdulo de la velocidad o de la aceleracin de la barra de
entrada.
PFE 2000 Pgina 45
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Hay que saber que este mdulo es siempre positivo porque el sentido fue dado
elogiando el incremento positivo o negativo al principio (/ Problemas de Posicin /
Posiciones sucesivas). Si el usuario introduce un valor negativo, slo ser considerado
el mdulo.
OK.
10. Grfico :
Se abre una ventana con el grfico de la velocidad o de la aceleracin de la barra
estudiada en funcin del ngulo de la barra de entrada.
Las informaciones son las siguientes :
Dos ejes :
El eje de las abscisas representa los ngulos de la barra de entrada (valores
crecientes de la izquierda hasta la derecha).
Este eje esta trazado para una velocidad o aceleracin nula.
El eje de las ordenadas representa la velocidad o la aceleracin de la barra
estudiada.
Este eje esta situado para el ngulo mnimo de la barra de entrada.
PFE 2000 Pgina 46
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Cuatro valores :
Angulo de la barra de entrada mnimo,
Angulo de la barra de entrada mximo,
Velocidad o aceleracin mnima,
Velocidad o aceleracin mxima.
La curva de las velocidades o aceleraciones en funcin de los ngulos de
la barra de entrada.
Para leer bien el grfico, hay que saber que el ngulo de la barra de entrada tiene
valores crecientes de la izquierda hasta la derecha. As, aun cuando el ngulo tome
valores decrecientes respecto a la horizontal en el tiempo, los ngulos se representan por
valores crecientes de la izquierda hasta la derecha.
PFE 2000 Pgina 47
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
9. Comparacin entre el mtodo de los
coeficientes de influencia y el mtodo MEF
En el programa, hay dos posibilidades para obtener el grfico de las velocidades
o aceleraciones en funcin del ngulo de la barra de entrada.
La primera fue explicada antes y constituye mi proyecto. Utilice el mtodo de
los coeficientes de influencia.
La segunda es utilizar el men A cinemtica que utiliza el mtodo MEF y que
fue programado por una alumna de la Escuela Superior de Ingenieros de Bilbao.
Por eso, es interesante comparar estos dos mtodos a travs de un ejemplo
sencillo.
Se utilizan los parmetros siguientes :
Incremento : -1
Velocidad constante
PFE 2000 Pgina 48
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Mdulo de la velocidad de la barra de entrada : 1
Con la funcin Debug del programa Fortran Powerstation de Microsoft, es
posible ver los valores de las variables.
Con este ejemplo, salen estos valores :
Hay que notar que los valores calculados con el mtodo de los coeficientes de influencia
son los valores antes de la interpolacin con los splines cbicos (que sale demasiados
puntos para comparar bien).
Posicin Angulo
barra entrada
Velocidad
(coef influ)
Velocidad
(MEF)
1 32,49 -0,889553563 -0,890645021
2 33,49 -0,932346076 -0,931197825
3 34,49 -0,968775755 -0,968803242
4 35,49 -1,003841169 -1,003840914
5 36,49 -1,036586840 -1,036589589
6 37,49 -1,067430397 -1,067356852
7 38,49 -1,096464126 -1,096358699
8 39,49 -1,123400773 -1,123851416
9 40,49 -1,150205335 -1,150015803
10 41,49 -1,175149838 -1,175025163
11 42,49 -1,198670661 -1,199071751
12 43,49 -1,222566504 -1,222292533
13 44,49 -1,244989737 -1,244820667
14 45,49 -1,266439509 -1,266812415
15 46,49 -1,288162857 -1,288377325
16 47,49 -1,309927476 -1,309635399
17 48,49 -1,330852173 -1,330696349
18 49,49 -1,351351006 -1,351687759
19 50,49 -1,372522005 -1,372710569
20 51,49 -1,394276383 -1,393877514
21 52,49 -1,415451302 -1,415299467
22 53,49 -1,436662486 -1,437105220
23 54,49 -1,459296377 -1,459410833
24 55,49 -1,482287075 -1,482349939
25 56,49 -1,506049670 -1,506066458
Podemos ver que para sistemas de un grado de libertad (este es bastante
sencillo), los dos mtodos salen resultados parecidos.
Por eso, los dos mtodos son factibles. Para elegir uno de los dos, hay que saber
cual es el ms sencillo para el desarrollo futuro del programa.
PFE 2000 Pgina 49
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
10. LIMITACIONES
Para utilizar bien el programa y mejorarlo en el futuro, hay que conocer los
lmites.
Este programa permite analizar sistemas en mecanismos planos de un grado de
libertad constituidos de barras, rotulas, rotulas fijas, deslizaderas... Se puede dibujarlos
con ratn o teclado. Se puede tambin modificarlos.
El programa permite analizar una barra cada vez que esta ejecutado.
Ahora, las condiciones iniciales deben ser : velocidad o aceleracin constante.
Quedan problemas de anlisis con casos particulares.
Los problemas identificados son los siguientes :
A veces, el grfico sale una curva que parece sinusoidal y de la cual no se
puede ver los extremos. Parece que el clculo de las velocidades funciona bien pero hay
un problema con la funcin de interpolacin. Frecuentemente, este problema ocurre
cuando se estudia una barra cual ngulo no mueve mucho. Por eso, podra ser un
problema de precisin o de divisin por cero.
Hay tambin un problema de continuidad de la curva de las aceleraciones.
PFE 2000 Pgina 50
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
11. CONCLUSIN
El objetivo de este proyecto fue la programacin de un procedimiento de clculo
de velocidades y aceleraciones en mecanismos planos de un grado de libertad con el
mtodo de los coeficientes de influencia. As tenemos dos enfoques (el otro es con el
mtodo de los elementos finitos).
El proyecto se desarrollo segn tres ejes :
comprensin del mtodo de los coeficientes de influencia,
busca, eleccin y transcripcin de varios mtodos
(splines cbicos, diferenciacin numrica),
programacin.
Ahora, el programa funciona y dibuja los grficos.
En el transcurso de la utilizacin del programa para varios sistemas, se revela
que haba que mejorarlo para que funcione con casos particulares.
Eso fue hecho; sin embargo, subsiste algunos problemas.
Para mi, este proyecto fue muy interesante. Me permit aprender un lenguaje
informtico, hacer un trabajo en grupo (ya que muchos alumnos trabajaban en diferentes
partes del programa) y pasar el obstculo del idioma.
Adems, los profesores y los alumnos de la escuela estn siempre disponibles y
me ayudaron cada vez que lo necesitaba. Quiero agradecerlos y gracias a ellos, mi
temporada en Bilbao fue un real placer.
PFE 2000 Pgina 51
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
12. BIBLIOGRAFA
Aqu siguen referencias de libros y revistas para familiarizarse con varios temas
o ahondarlos.
Fortran :
Programmer en Fortran 90
Claude Delannoy
Eyrolles
Manual del usuario (ayuda) del programa Fortran Powerstation de Microsoft
Mtodo de los coeficientes de influencia :
An Indirect Method for determining accelerations in complex mechanisms
Thomas P Goodman
Transactions of the ASME (november 1958)
Analysis of Comlex kinematic chains with influence coefficients
J Moodrey
Journal of Applied Mechanics,
Transactions of the ASME (june 1959)
Kinematics and Dynamics of planar machinery
Paul Burton
Prentice-Hall International Editon
Mechanics of Machines
Samuel Doughty
Wiley
Mtodo de las diferencias numricas :
Applied Numerical methods in C
Shoichiro Nakamura
Prentice-Hall International Editon
PFE 2000 Pgina 52
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
Numerical Methods for computer science, engineering and mathematics
J H Mathews
Prentice-Hall International Editon
Numerical Analysis
Richard L Burden
J Douglas Faires
Numerical Methods for engineers
S C Charpa
R P Canale
M
c
Graw-Hill
Introduction to Numerical analysis
F B Hilderbrand
Mtodo de los splines cbicos :
Numerical Analysis
Richard L Burden
J Douglas Faires
PFE 2000 Pgina 53
MEUNIER
Procedimiento de clculo de velocidades y aceleraciones en mecanismos planos
13. ANEXOS
!*********************************************************************
*************!
! Diagrama de las velocidades
!
! Metodo de los coeficientes de influencia
!
!*********************************************************************
*************!
!*********************************************************************
*************!
!*********************************************************************
*************!
! Subrutina vitesses
!
!*********************************************************************
*************!
!*********************************************************************
*************!
subroutine vitesses(bar_diag)
use tipos
use msimsl
use msflib
use influencia
type(element) elemento
type(wxycoord) punto1,punto2
real*8 xa,ya,xb,yb,ang
real*8, allocatable::tempo1(:),tempo2(:),tempo3(:),t(:)
integer(4)
h,bar_diag,num_posicion,i,ordenbarra,ierror,num_nudos,num_apoyos,num_p
arp,apoyos(200)
logical acabar

allocate(vel_barra(control(1)),ang_ent(control(1)),ang_barra(con
trol(1)),tempo1(control(1)),tempo2(control(1)),tempo3(control(1)),t(co
ntrol(1)),vit(control(1)),stat=ierror)
if(ierror.ne.0)then
deallocate(vel_barra,ang_ent,ang_barra,tempo1,tempo2,tempo3,t,vi
t,stat=ierror)
allocate
(vel_barra(control(1)),ang_ent(control(1)),tempo1(control(1)),tempo2(c
ontrol(1)),tempo3(control(1)),ang_barra(control(1)),t(control(1)),vit(
control(1)),stat=ierror)
end if
!
!
! Cual es el numero de la barra seleccionada
!
!
!
call
transformacion(num_barras,num_nudos,num_apoyos,num_parp,nudos,barras,a
poyos)
write(10,*)'PARA FINALIZAR PULSE EL BOTN DERECHO DEL
RATN'
call tocarbarra(elemento,ordenbarra,punto1,punto2,acabar)
!
!
! Numero de la barra seleccionada
!
!
!
bar_diag=0
do i=1,num_barras
if
((nudos(barras(i,1),1).eq.punto1%wx).and.(nudos(barras(i,1),2).eq.punt
o1%wy)) then
if
((nudos(barras(i,2),1).eq.punto2%wx).and.(nudos(barras(i,2),2).eq.punt
o2%wy)) then
bar_diag=i
end if
end if
end do
do j=1,num_barras
if
((nudos(barras(j,1),1).eq.punto2%wx).and.(nudos(barras(j,1),2).eq.punt
o2%wy)) then
if
((nudos(barras(j,2),1).eq.punto1%wx).and.(nudos(barras(j,2),2).eq.punt
o1%wy)) then
bar_diag=j
end if
end if
end do
!
!
! Cual es la barra de entrada?
!
!
!
bar_ent=entradas(1)%barra
!
!
! Calculo del ngulo de la barra de entrada en cada
posicin !
!
!
do num_posicion=1,control(1)
xa=pto_coord(barras(bar_ent,1))%x(num_posicion)
ya=pto_coord(barras(bar_ent,1))%y(num_posicion)
xb=pto_coord(barras(bar_ent,2))%x(num_posicion)
yb=pto_coord(barras(bar_ent,2))%y(num_posicion)
call calcular_angulo(xa,ya,xb,yb,ang)
! Llamada de la funcin que transforme las coordenadas
!
! de las extremidades de la barra en un ngulo respecto a la
horizontal !
ang_ent(num_posicion)=ang
end do
!
!
! Clculo de los angulos extremos de la barra de entrada
!
!
!
ang_maxi=ang_ent(1)
ang_mini=ang_ent(1)
do i=1,control(1)
if (ang_ent(i).gt.ang_maxi) then
ang_maxi=ang_ent(i)
end if
if (ang_ent(i).lt.ang_mini) then
ang_mini=ang_ent(i)
end if
end do
!
!
! Clculo del ngulo de la barra seleccionada en cada
posicin !
!
!
do num_posicion=1,control(1)
xa=pto_coord(barras(bar_diag,1))%x(num_posicion)
ya=pto_coord(barras(bar_diag,1))%y(num_posicion)
xb=pto_coord(barras(bar_diag,2))%x(num_posicion)
yb=pto_coord(barras(bar_diag,2))%y(num_posicion)
call calcular_angulo2(xa,ya,xb,yb,ang)
ang_barra(num_posicion)=ang
end do
!
!
! Arreglo en orden creciente de los ngulos
!
! en funcin de la barra de entrada
!
!
!
if (entradas(num_entradas)%incremento.LT.0) then
do i=1,control(1)
tempo1(i)=ang_ent(control(1)+1-i)
tempo2(i)=ang_barra(control(1)+1-i)
end do
do i=1,control(1)
ang_ent(i)=tempo1(i)
ang_barra(i)=tempo2(i)
end do
end if
!
!
! Clculo de los coeficientes de influencia de las
velocidades !
!
!
h=0
do i=2,control(1)-1
if (ang_ent(i+1)-ang_ent(i).GT.(ang_ent(i)-ang_ent(i-1))*1.2
.OR. (ang_ent(i+1)-ang_ent(i))*1.2.LT.ang_ent(i)-ang_ent(i-1)) then
h=1
end if
end do
if (h.EQ.0) then
do num_posicion=1,2
call fctini(num_posicion)
end do
do num_posicion=control(1)-1,control(1)
call fctfin(num_posicion)
end do
do num_posicion=3,control(1)-2
call fctmed(num_posicion)
end do
else
do num_posicion=1,2
call fctini(num_posicion)
end do
do num_posicion=3,h-2
call fctmed(num_posicion)
end do
do num_posicion=h-1,h
call fctfin(num_posicion)
end do
call fctini(h+1)
do num_posicion=h+2,control(1)-2
call fctmed(num_posicion)
end do
do num_posicion=control(1)-1,control(1)
call fctfin(num_posicion)
end do
end if
!
!
! Se pide la ley de entrada desde una pantallita
!
!
!
call ley_entrada(movt,var_ent)
!
!
! Clculo de las velocidades
!
!
!
if (movt.eq.1) then
do i=1,control(1)
t(i)=abs(sqrt(2*(ang_ent(i)-ang_ent(1))/var_ent))
end do
if (entradas(num_entradas)%incremento.lt.0) then
do i=1,control(1)
tempo3(i)=t(control(1)+1-i)
end do
do i=1,control(1)
t(i)=tempo3(i)
end do
end if
do i=1,control(1)
vit(i)=vel_barra(i)*var_ent*t(i)
if (entradas(num_entradas)%incremento.lt.0) then
vit(i)=-vit(i)
end if
end do
else
do i=1,control(1)
vit(i)=vel_barra(i)*var_ent
if (entradas(num_entradas)%incremento.lt.0) then
vit(i)=-vit(i)
end if
end do
end if
!
!
! Calculo de las velocidades extremas de la barra estudiada
!
!
!
vmax=vit(1)
vmin=vit(1)
do i=1,control(1)
if (vit(i).gt.vmax) then
vmax=vit(i)
end if
if (vit(i).lt.vmin) then
vmin=vit(i)
end if
end do
!
!
! Se llama la subrutina de interpolacin
!
!
!
call interpolacion()
end subroutine vitesses
!*********************************************************************
*************!
!*********************************************************************
*************!
! SUBRUTINA PARA DIBUJAR EL DIAGRAMA DE VELOCIDADES
!
!*********************************************************************
*************!
!*********************************************************************
*************!
subroutine diag_vit()
use tipos
use msimsl
use msflib
use influencia
type(windowconfig) config15,configfw
type(qwinfo)winfo15,winfofw
type(wxycoord) wxy
logical status,estado
Real*8 wx1,wy1,wx2,wy2
integer(4) i,bar_diag,result
real*8 :: cero=0
!
!
! Se llama la subrutina vitesses
!
!
!
call vitesses(bar_diag)
!
!
! Caractersticas de la ventana donde se dibuja el
grfico !
!
!
estado=GETWSIZEQQ(QWIN$FRAMEWINDOW,QWIN$SIZEMAX,winfofw)
status=GETWINDOWCONFIG(configfw)
Open(Unit=15,File='User',Title='diagrama de velocidades')
config15.numxpixels=(configfw.numxpixels*0.7)
config15.numypixels=(configfw.numypixels*0.7)
10 ifun=focusqq(15) !la traigo delante y pinto en
ella
status=SETWINDOWCONFIG(config15)
If(.NOT.status) Goto 10
winfo15.x=0
winfo15.y=0
estado=SETWSIZEQQ(15,winfo15)
!
!
! Caractersticas del grfico
!
!
!
if (vmax.gt.0.AND.vmin.gt.0) then
vmin=0
end if
if (vmax.lt.0.AND.vmin.lt.0) then
vmax=0
end if
wx1=ang_mini-.1*(ang_maxi-ang_mini)
wy1=vmax+.3*abs(vmax-vmin)
wx2=ang_maxi+.25*(ang_maxi-ang_mini)
wy2=vmin-.2*abs(vmax-vmin)
ifun=focusqq(15)
status=SETWINDOW(.TRUE.,(wx1),(wy1),(wx2),(wy2))
!
!
! dibujo los ejes
!
!
!
dibuja=SETCOLORRGB(#ffffff)
call moveto_w(ang_mini,cero,wxy )
ifun=lineto_w(ang_maxi+.05*(ang_maxi-ang_mini),cero)
ifun=lineto_w(ang_maxi+.03*(ang_maxi-ang_mini),.03*abs(vmax-
vmin))
call moveto_w(ang_maxi+.05*(ang_maxi-ang_mini),cero,wxy)
ifun=lineto_w(ang_maxi+.03*(ang_maxi-ang_mini),-.03*abs(vmax-
vmin))
call moveto_w(ang_mini,vmin,wxy)
ifun=lineto_w(ang_mini,vmax+.1*abs(vmax-vmin))
ifun=lineto_w(ang_mini-.015*(ang_maxi-
ang_mini),vmax+.05*abs(vmax-vmin))
call moveto_w(ang_mini,vmax+.1*abs(vmax-vmin),wxy)
ifun=lineto_w(ang_mini+.015*(ang_maxi-
ang_mini),vmax+.05*abs(vmax-vmin))
!
!
! Se llama la subrutina que permite escribir en la ventana
!
!
!
call escribir
!
!
! Trazado de la curva
!
!
!
ifun=setcolor(10)
call moveto_w(ptx(1),pty(1),wxy)
if (control(1).gt.1) then
do i=2,nb_pts
result=lineto_w(ptx(i),pty(i))
call moveto_w(ptx(i),pty(i),wxy)
end do
end if
call espera()
end subroutine diag_vit
!*********************************************************************
*************!
!*********************************************************************
*************!
! subroutina escribir
!
!*********************************************************************
*************!
!*********************************************************************
*************!
! Subrutina para escribir en la ventana
!
subroutine escribir
use influencia
use tipos
use msflib
type (wxycoord) wxwy
integer(2) numfonts,fontnum
integer(4) res
character (25) y1,y2,x1,x2
ifun=focusqq(15)
res=setactiveqq(15)
numfonts=initializefonts()
fontnum=setfont('t''Arial''h14w8')
ifun=setcolor(15)
call moveto_w(ang_mini-.06*(ang_maxi-
ang_mini),vmax+.18*abs(vmax-vmin),wxwy)
call outgtext('Velocidad')
call moveto_w(ang_maxi+.065*(ang_maxi-
ang_mini),.11*abs(vmax-vmin),wxwy)
call outgtext('angulo')
call moveto_w(ang_maxi+.07*(ang_maxi-
ang_mini),.04*abs(vmax-vmin),wxwy)
call outgtext('barra')
call moveto_w(ang_maxi+.06*(ang_maxi-ang_mini),-
.03*abs(vmax-vmin),wxwy)
call outgtext('entrada')
call moveto_w (ang_mini-.09*(ang_maxi-
ang_mini),vmax+.03*abs(vmax-vmin),wxwy)
write (y1,'(f7.2)')vmax
call outgtext (y1)
call moveto_w (ang_mini-.09*(ang_maxi-
ang_mini),vmin+.03*abs(vmax-vmin),wxwy)
write (y2,'(f7.2)')vmin
call outgtext (y2)
call moveto_w (ang_mini-.04*(ang_maxi-ang_mini),-
.04*abs(vmax-vmin),wxwy)
write (x1,'(f7.2)')ang_mini
call outgtext (x1)
call moveto_w (ang_maxi-.04*(ang_maxi-ang_mini),-
.04*abs(vmax-vmin),wxwy)
write (x2,'(f7.2)')ang_maxi
call outgtext (x2)
end subroutine escribir
!*********************************************************************
*************!
!*********************************************************************
*************!
! Interpolacin con el mtodo de los trazadores
cbicos !
!*********************************************************************
*************!
!*********************************************************************
*************!
subroutine interpolacion ()
use tipos
use msimsl
use msflib
use influencia
integer(4) i,n,j,s,ierror
real*8, dimension (1:control(1)) :: l, z, x, c, h , nu, alpha, a, b, d
allocate(ptx(nb_pts),pty(nb_pts),stat=ierror)
if(ierror.ne.0)then
deallocate(ptx,pty)
allocate (ptx(nb_pts),pty(nb_pts),stat=ierror)
end if
n=control(1)
do i=1, n
x(i) = ang_ent(i)
a(i) = vit(i)
end do
do i=1, n-1
h(i) = x(i+1) - x(i)
end do
do i=2, n-1
alpha(i) = 3 / h(i) * (a(i+1) - a(i)) - 3 / h(i-1) * (a(i) -
a(i-1))
end do
l(1) = 1
nu(1) = 0
z(1) = 0
do i=2, n-1
l(i) = 2 * (x(i+1) - x(i-1)) - h(i-1) * nu(i-1)
nu(i) = h(i) / l(i)
z(i) = (alpha(i) - h(i-1) * z(i-1)) / l(i)
end do
l(n) = 1
z(n) = 0
c(n) = 0
do j=n-1, 1, -1
c(j) = z(j) - nu(j) * c(j+1)
b(j) = (a(j+1) - a(j)) / h(j) - h(j) * (c(j+1) + 2 * c(j)) / 3
d(j) = (c(j+1) - c(j)) / (3 * h(j))
end do
!
! Tenemos la ecuacin de la curva :
!
! Sj(x) = aj+ bj * (x - xj) + cj * (x - xj)^2 + dj * (x-xj)^3
!
! con j=1,...,n-1
do i=1,nb_pts-1
ptx(i)=ang_mini+(ang_maxi-ang_mini)*(i-1)/(nb_pts-1)
s=1
do j=2,control(1)-1
if (ptx(i).gt.ang_ent(j).and.ptx(i).le.ang_ent(j+1)) then
s=j
end if
end do
pty(i)=a(s)+b(s)*(ptx(i)-x(s))+c(s)*(ptx(i)-
x(s))**2+d(s)*(ptx(i)-x(s))**3
end do
s=control(1)-1
ptx(nb_pts)=ang_maxi
pty(nb_pts)=a(s)+b(s)*(ptx(i)-x(s))+c(s)*(ptx(i)-
x(s))**2+d(s)*(ptx(i)-x(s))**3
end subroutine interpolacion
!*********************************************************************
*************!
!*********************************************************************
*************!
! functiones de diferencias numrica
!
!*********************************************************************
*************!
!*********************************************************************
*************!
!
!
! Funcin para diferenciar los puntos 1 y 2
!
!
!
subroutine fctini(num_posicion)
use influencia
real*8 h
h=ang_ent(num_posicion+1)-ang_ent(num_posicion)
vel_barra(num_posicion)=(2*ang_barra(num_posicion+3)-
9*ang_barra(num_posicion+2)+18*ang_barra(num_posicion+1)-
11*ang_barra(num_posicion))/(6*h)
end subroutine fctini
!
! Funcin para diferenciar los puntos 3 a n-2
!
subroutine fctfin(num_posicion)
use influencia
real*8 h
h=ang_ent(num_posicion)-ang_ent(num_posicion-1)
vel_barra(num_posicion)=(11*ang_barra(num_posicion)-
18*ang_barra(num_posicion-1)+9*ang_barra(num_posicion-2)-
2*ang_barra(num_posicion-3))/(6*h)
end subroutine fctfin
!
! Funcin para diferenciar los puntos n-1 y n
!
subroutine fctmed(num_posicion)
use influencia
real*8 h
h=(ang_ent(num_posicion+2)-ang_ent(num_posicion-2))/4
vel_barra(num_posicion)=(-
ang_barra(num_posicion+2)+8*ang_barra(num_posicion+1)-
8*ang_barra(num_posicion-1)+ang_barra(num_posicion-2))/(12*h)
end subroutine fctmed
!*********************************************************************
*************!
!*********************************************************************
*************!
! SUBRUTINA PARA LA LEY DE ENTRADA
!
!*********************************************************************
*************!
!*********************************************************************
*************!
subroutine ley_entrada(movt,var_ent)
use dialogm
use tipos
include 'resource.fd'
type(dialog) dial,dial1,dial2
real*8 var_ent
logical chequeador
character*25 in
retlog=dlginit(eleg_mov,dial)
retlog=dlgset(dial,w,.true.)
retlog=dlgset(dial,A,.false.)
result=dlgmodal(dial)
retlog=dlgget(dial,w,chequeador)
call dlguninit(dial)
if (chequeador) then
retlog=dlginit(cond_ini2,dial2)
retlog=dlgset(dial2,veloc,"1")
result=dlgmodal(dial2)
retlog=dlgget(dial2,veloc,in)
call dlguninit(dial2)
read(in,*) var_ent
var_ent=abs(var_ent)
movt=2 ! movt=2 significa velocidad constante
else
retlog=dlginit(cond_ini1,dial1)
retlog=dlgset(dial1,acel,"1")
result=dlgmodal(dial1)
retlog=dlgget(dial1,acel,in)
call dlguninit(dial1)
read(in,*) var_ent
var_ent=abs(var_ent)
movt=1 ! movt=1 significa aceleracion constante
end if
end subroutine ley_entrada
!*********************************************************************
*************!
! Diagrama de las aceleraciones
!
! Metodo de los coeficientes de influencia
!
!*********************************************************************
*************!
!*********************************************************************
*************!
!*********************************************************************
*************!
! Subrutina vitesses
!
!*********************************************************************
*************!
!*********************************************************************
*************!
subroutine acceleration(bar_diag)
use tipos
use msimsl
use msflib
use influencia
type(element) elemento
type(wxycoord) punto1,punto2
real*8 xa,ya,xb,yb,ang
real*8, allocatable::tempo1(:),tempo2(:),tempo3(:),t(:)
integer(4)
h,bar_diag,num_posicion,i,ordenbarra,ierror,num_nudos,num_apoyos,num_p
arp,apoyos(200)
logical acabar

allocate(acel_barra(control(1)),ang_ent(control(1)),ang_barra(co
ntrol(1)),tempo1(control(1)),tempo2(control(1)),tempo3(control(1)),t(c
ontrol(1)),accel(control(1)),stat=ierror)
if(ierror.ne.0)then
deallocate(acel_barra,ang_ent,ang_barra,tempo1,tempo2,tempo3,t,a
ccel,stat=ierror)
allocate
(acel_barra(control(1)),ang_ent(control(1)),tempo1(control(1)),tempo2(
control(1)),tempo3(control(1)),ang_barra(control(1)),t(control(1)),acc
el(control(1)),stat=ierror)
end if
!
!
! Cual es el numero de la barra seleccionada
!
!
!
call
transformacion(num_barras,num_nudos,num_apoyos,num_parp,nudos,barras,a
poyos)
write(10,*)'PARA FINALIZAR PULSE EL BOTN DERECHO DEL
RATN'
call tocarbarra(elemento,ordenbarra,punto1,punto2,acabar)
!
!
! Numero de la barra seleccionada
!
!
!
bar_diag=0
do i=1,num_barras
if
((nudos(barras(i,1),1).eq.punto1%wx).and.(nudos(barras(i,1),2).eq.punt
o1%wy)) then
if
((nudos(barras(i,2),1).eq.punto2%wx).and.(nudos(barras(i,2),2).eq.punt
o2%wy)) then
bar_diag=i
end if
end if
end do
do j=1,num_barras
if
((nudos(barras(j,1),1).eq.punto2%wx).and.(nudos(barras(j,1),2).eq.punt
o2%wy)) then
if
((nudos(barras(j,2),1).eq.punto1%wx).and.(nudos(barras(j,2),2).eq.punt
o1%wy)) then
bar_diag=j
end if
end if
end do
!
!
! Cual es la barra de entrada?
!
!
!
bar_ent=entradas(1)%barra
!
!
! Calculo del ngulo de la barra de entrada en cada
posicin !
!
!

do num_posicion=1,control(1)
xa=pto_coord(barras(bar_ent,1))%x(num_posicion)
ya=pto_coord(barras(bar_ent,1))%y(num_posicion)
xb=pto_coord(barras(bar_ent,2))%x(num_posicion)
yb=pto_coord(barras(bar_ent,2))%y(num_posicion)
call calcular_angulo(xa,ya,xb,yb,ang)
ang_ent(num_posicion)=ang
end do
!
!
! Clculo de los angulos extremos de la barra de entrada
!
!
!
ang_maxi=ang_ent(1)
ang_mini=ang_ent(1)
do i=1,control(1)
if (ang_ent(i).gt.ang_maxi) then
ang_maxi=ang_ent(i)
end if
if (ang_ent(i).lt.ang_mini) then
ang_mini=ang_ent(i)
end if
end do
!
!
! Clculo del ngulo de la barra seleccionada en cada
posicin !
!
!
do num_posicion=1,control(1)
xa=pto_coord(barras(bar_diag,1))%x(num_posicion)
ya=pto_coord(barras(bar_diag,1))%y(num_posicion)
xb=pto_coord(barras(bar_diag,2))%x(num_posicion)
yb=pto_coord(barras(bar_diag,2))%y(num_posicion)
call calcular_angulo2(xa,ya,xb,yb,ang)
ang_barra(num_posicion)=ang
end do
!
!
! Arreglo en orden creciente de los ngulos
!
! en funcin de la barra de entrada
!
!
!
if (entradas(num_entradas)%incremento.LT.0) then
do i=1,control(1)
tempo1(i)=ang_ent(control(1)+1-i)
tempo2(i)=ang_barra(control(1)+1-i)
end do
do i=1,control(1)
ang_ent(i)=tempo1(i)
ang_barra(i)=tempo2(i)
end do
end if
!
!
! Clculo de los coeficientes de influencia de las
velocidades !
!
!
h=0
do i=2,control(1)-1
if (ang_ent(i+1)-ang_ent(i).GT.(ang_ent(i)-ang_ent(i-1))*1.2
.OR. (ang_ent(i+1)-ang_ent(i))*1.2.LT.ang_ent(i)-ang_ent(i-1)) then
h=1
end if
end do
if (h.EQ.0) then
do num_posicion=1,2
call fctini2(num_posicion)
end do
do num_posicion=control(1)-1,control(1)
call fctfin2(num_posicion)
end do
do num_posicion=3,control(1)-2
call fctmed2(num_posicion)
end do
else
do num_posicion=1,2
call fctini2(num_posicion)
end do
do num_posicion=3,h-2
call fctmed2(num_posicion)
end do
do num_posicion=h-1,h
call fctfin2(num_posicion)
end do
call fctini2(h+1)
do num_posicion=h+2,control(1)-2
call fctmed2(num_posicion)
end do
do num_posicion=control(1)-1,control(1)
call fctfin2(num_posicion)
end do
end if
!
!
! Se pide la ley de entrada desde una pantallita
!
!
!
call ley_entrada(movt,var_ent)
!
!
! Clculo de las velocidades
!
!
!
if (movt.eq.1) then
do i=1,control(1)
accel(i)=acel_barra(i)*var_ent
if (entradas(num_entradas)%incremento.lt.0) then
accel(i)=-accel(i)
end if
end do
else
do i=1,control(1)
accel(i)=0
end do
end if
!
!
! Calculo de las velocidades extremas de la barra estudiada
!
!
!
amax=accel(1)
amin=accel(1)
do i=1,control(1)
if (accel(i).gt.amax) then
amax=accel(i)
end if
if (accel(i).lt.amin) then
amin=accel(i)
end if
end do
!
!
! Se llama la subrutina de interpolacin
!
!
!
call interpolacion2()
end subroutine acceleration
!*********************************************************************
*************!
!*********************************************************************
*************!
! SUBRUTINA PARA DIBUJAR EL DIAGRAMA DE VELOCIDADES
!
!*********************************************************************
*************!
!*********************************************************************
*************!
subroutine diag_acel()
use tipos
use msimsl
use msflib
use influencia
type(windowconfig) config15,configfw
type(qwinfo)winfo15,winfofw
type(wxycoord) wxy
logical status,estado
Real*8 wx1,wy1,wx2,wy2
integer(4) i,bar_diag,result
real*8 :: cero=0
!
!
! Se llama la subrutina vitesses
!
!
!
call acceleration(bar_diag)
!
!
! Caractersticas de la ventana donde se dibuja el
grfico !
!
!
estado=GETWSIZEQQ(QWIN$FRAMEWINDOW,QWIN$SIZEMAX,winfofw)
status=GETWINDOWCONFIG(configfw)
Open(Unit=15,File='User',Title='diagrama de aceleraciones')
config15.numxpixels=(configfw.numxpixels*0.7)
config15.numypixels=(configfw.numypixels*0.7)
10 ifun=focusqq(15) !la traigo delante y pinto en
ella
status=SETWINDOWCONFIG(config15)
If(.NOT.status) Goto 10
winfo15.x=0
winfo15.y=0
estado=SETWSIZEQQ(15,winfo15)
!
!
! Caractersticas del grfico
!
!
!
if (amax.gt.0.AND.amin.gt.0) then
amin=0
end if
if (amax.lt.0.AND.amin.lt.0) then
amax=0
end if
wx1=ang_mini-.1*(ang_maxi-ang_mini)
wy1=amax+.3*abs(amax-amin)
wx2=ang_maxi+.25*(ang_maxi-ang_mini)
wy2=amin-.2*abs(amax-amin)
ifun=focusqq(15)
status=SETWINDOW(.TRUE.,(wx1),(wy1),(wx2),(wy2))
!
!
! dibujo los ejes
!
!
!
dibuja=SETCOLORRGB(#ffffff)
call moveto_w(ang_mini,cero,wxy )
ifun=lineto_w(ang_maxi+.05*(ang_maxi-ang_mini),cero)
ifun=lineto_w(ang_maxi+.03*(ang_maxi-ang_mini),.03*abs(amax-
amin))
call moveto_w(ang_maxi+.05*(ang_maxi-ang_mini),cero,wxy)
ifun=lineto_w(ang_maxi+.03*(ang_maxi-ang_mini),-.03*abs(amax-
amin))
call moveto_w(ang_mini,amin,wxy)
ifun=lineto_w(ang_mini,amax+.1*abs(amax-amin))
ifun=lineto_w(ang_mini-.015*(ang_maxi-
ang_mini),amax+.05*abs(amax-amin))
call moveto_w(ang_mini,amax+.1*abs(amax-amin),wxy)
ifun=lineto_w(ang_mini+.015*(ang_maxi-
ang_mini),amax+.05*abs(amax-amin))
!
!
! Se llama la subrutina que permite escribir en la ventana
!
!
!
call escribir2
!
!
! Trazado de la curva
!
!
!
ifun=setcolor(10)
call moveto_w(ptx(1),pty(1),wxy)
if (control(1).gt.1) then
do i=2,nb_pts
result=lineto_w(ptx(i),pty(i))
call moveto_w(ptx(i),pty(i),wxy)
end do
end if
call espera()
end subroutine diag_acel
!*********************************************************************
*************!
!*********************************************************************
*************!
! subroutina escribir2
!
!*********************************************************************
*************!
!*********************************************************************
*************!
! Subrutina para escribir en la ventana
!
subroutine escribir2
use influencia
use tipos
use msflib
type (wxycoord) wxwy
integer(2) numfonts,fontnum
integer(4) res
character (25) y1,y2,x1,x2
ifun=focusqq(15)
res=setactiveqq(15)
numfonts=initializefonts()
fontnum=setfont('t''Arial''h14w8')
ifun=setcolor(15)
call moveto_w(ang_mini-.06*(ang_maxi-
ang_mini),amax+.18*abs(amax-amin),wxwy)
call outgtext('Aceleracion')
call moveto_w(ang_maxi+.065*(ang_maxi-
ang_mini),.11*abs(amax-amin),wxwy)
call outgtext('angulo')
call moveto_w(ang_maxi+.07*(ang_maxi-
ang_mini),.04*abs(amax-amin),wxwy)
call outgtext('barra')
call moveto_w(ang_maxi+.06*(ang_maxi-ang_mini),-
.03*abs(amax-amin),wxwy)
call outgtext('entrada')
call moveto_w (ang_mini-.09*(ang_maxi-
ang_mini),amax+.03*abs(amax-amin),wxwy)
write (y1,'(f7.2)')amax
call outgtext (y1)
call moveto_w (ang_mini-.09*(ang_maxi-
ang_mini),amin+.03*abs(amax-amin),wxwy)
write (y2,'(f7.2)')amin
call outgtext (y2)
call moveto_w (ang_mini-.04*(ang_maxi-ang_mini),-
.04*abs(amax-amin),wxwy)
write (x1,'(f7.2)')ang_mini
call outgtext (x1)
call moveto_w (ang_maxi-.04*(ang_maxi-ang_mini),-
.04*abs(amax-amin),wxwy)
write (x2,'(f7.2)')ang_maxi
call outgtext (x2)
end subroutine escribir2
!*********************************************************************
*************!
!*********************************************************************
*************!
! Interpolacin con el mtodo de los trazadores
cbicos !
!*********************************************************************
*************!
!*********************************************************************
*************!
subroutine interpolacion2 ()
use tipos
use msimsl
use msflib
use influencia
integer(4) i,n,j,s,ierror
real*8, dimension (1:control(1)) :: l, z, x, c, h , nu, alpha, a, b, d
allocate(ptx(nb_pts),pty(nb_pts),stat=ierror)
if(ierror.ne.0)then
deallocate(ptx,pty)
allocate (ptx(nb_pts),pty(nb_pts),stat=ierror)
end if
n=control(1)
do i=1, n
x(i) = ang_ent(i)
a(i) = accel(i)
end do
do i=1, n-1
h(i) = x(i+1) - x(i)
end do
do i=2, n-1
alpha(i) = 3 / h(i) * (a(i+1) - a(i)) - 3 / h(i-1) * (a(i) -
a(i-1))
end do
l(1) = 1
nu(1) = 0
z(1) = 0
do i=2, n-1
l(i) = 2 * (x(i+1) - x(i-1)) - h(i-1) * nu(i-1)
nu(i) = h(i) / l(i)
z(i) = (alpha(i) - h(i-1) * z(i-1)) / l(i)
end do
l(n) = 1
z(n) = 0
c(n) = 0
do j=n-1, 1, -1
c(j) = z(j) - nu(j) * c(j+1)
b(j) = (a(j+1) - a(j)) / h(j) - h(j) * (c(j+1) + 2 * c(j)) / 3
d(j) = (c(j+1) - c(j)) / (3 * h(j))
end do
!
! Tenemos la ecuacin de la curva :
!
! Sj(x) = aj+ bj * (x - xj) + cj * (x - xj)^2 + dj * (x-xj)^3
!
! con j=1,...,n-1
do i=1,nb_pts-1
ptx(i)=ang_mini+(ang_maxi-ang_mini)*(i-1)/(nb_pts-1)
s=1
do j=2,control(1)-1
if (ptx(i).gt.ang_ent(j).and.ptx(i).le.ang_ent(j+1)) then
s=j
end if
end do
pty(i)=a(s)+b(s)*(ptx(i)-x(s))+c(s)*(ptx(i)-
x(s))**2+d(s)*(ptx(i)-x(s))**3
end do
s=control(1)-1
ptx(nb_pts)=ang_maxi
pty(nb_pts)=a(s)+b(s)*(ptx(i)-x(s))+c(s)*(ptx(i)-
x(s))**2+d(s)*(ptx(i)-x(s))**3
end subroutine interpolacion2
!*********************************************************************
*************!
!*********************************************************************
*************!
! functiones de diferencias numrica
!
!*********************************************************************
*************!
!*********************************************************************
*************!
!
! Funcin para diferenciar los puntos 1 y 2
!
subroutine fctini2(num_posicion)
use influencia
real*8 h
h=ang_ent(num_posicion+1)-ang_ent(num_posicion)
acel_barra(num_posicion)=(-
ang_barra(num_posicion+3)+4*ang_barra(num_posicion+2)-
5*ang_barra(num_posicion+1)+2*ang_barra(num_posicion))/(h**2)
end subroutine fctini2
!
! Funcin para diferenciar los puntos 3 a n-2
!
subroutine fctfin2(num_posicion)
use influencia
real*8 h
h=ang_ent(num_posicion)-ang_ent(num_posicion-1)
acel_barra(num_posicion)=(2*ang_barra(num_posicion)-
5*ang_barra(num_posicion-1)+4*ang_barra(num_posicion-2)-
ang_barra(num_posicion-3))/(h**2)
end subroutine fctfin2
!
! Funcin para diferenciar los puntos n-1 y n
!
subroutine fctmed2(num_posicion)
use influencia
real*8 h
h=(ang_ent(num_posicion+2)-ang_ent(num_posicion-2))/4
acel_barra(num_posicion)=(-
ang_barra(num_posicion+2)+16*ang_barra(num_posicion+1)-
30*ang_barra(num_posicion)+16*ang_barra(num_posicion-1)-
ang_barra(num_posicion-2))/(12*h**2)
end subroutine fctmed2

Vous aimerez peut-être aussi