Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagepy
titleRammeanalyse
linenumberstrue
import numpy as np
import numpy.matlib


def main():
    # Rammeanalyse

    # -----Leser input-data-----
    npunkt, punkt, nelem, elem, nlast, last = lesinput()

    # -----Regner ut lengder til elementene------
    elementlengder = lengder(punkt, elem, nelem)

    # -----Fastinnspenningsmomentene------
    # Lag funksjon selv
    fim = moment(npunkt, punkt, nelem, elem, nlast, last, elementlengder)

    # -----Setter opp lastvektor-----
    # Lag funksjon selv
    b = lastvektor(fim, npunkt, punkt, nelem, elem)

    # ------Setter opp systemstivhetsmatrisen-----
    # Lag funksjon selv
    K = stivhet(nelem, elem, elementlengder, npunkt)

    # ------Innfører randbetingelser------
    # Lag funksjon selv
    Kn, Bn = bc(npunkt, punkt, K, b)

    # -----Løser ligningssystemet------
	# Lag funksjon selv
    rot = ...
	# Hint, se side for løsing av lineære systemer vha. numpy
    
    #------Finner endemoment for hvert element-----
    # Lag funksjon selv
    endemoment = endeM(npunkt, punkt, nelem, elem, elementlengder, rot, fim)

    #-----Skriver ut hva rotasjonen ble i de forskjellige nodene-----
    print("Rotasjoner i de ulike punktene:")
    print(rot)

    #-----Skriver ut hva momentene ble for de forskjellige elementene-----
    print("Elementvis endemoment:")
    print(endemoment)


Info

Dersom du ønsker tips til å forbedre kodingen din, besøk siden Tips and tricks for coding.


Utdelte funksjoner


Code Block
languagepy
titleElementlengder
linenumberstrue
def lengder(knutepunkt, element, nelem):

    elementlengder = np.matlib.zeros((nelem, 1))
    # Beregner elementlengder med Pythagoras' laeresetning
    for i in range (0, nelem):
        # OBS! Grunnet indekseringsyntax i Python-arrays vil ikke denne funksjonen fungere naar vi bare har ett element.
        dx = knutepunkt[element[i, 0], 0] - knutepunkt[element[i, 1], 0]
        dy = knutepunkt[element[i, 0], 1] - knutepunkt[element[i, 1], 1]
        elementlengder[i] = math.sqrt(dx*dx + dy*dy)

    return elementlengder

...