Jeżeli do oprogramowania inżynierskiego można podpiąć własne procedury to NVIDIA udostępnia darmowy driver NVCC za pomocą którego można kompilować kod napisany w C. Można to robić z Visual Studio (od wersji 10) pod Windows lub używając gcc pod Linuxem.
Wówczas oprogramowanie optymalizuje się pod posiadaną kartę graficzną. Warto mieć kartę o CUDA capability większym niż 2.0 ze względu na obsługę typu double.Zobacz Komentarze Newsów
Czy ktoś z forum korzysta może z Elmera? Bardzo ciekawi mnie jak to działa. Bo z tego tutka wynika, że jest OK, a tymczasem ja próbowałem... bezskutecznieZobacz Komentarze Newsów
Postów: 242 Miejscowość: Norge Data rejestracji: 01.10.09
Dodane dnia 07/02/2013 23:16
Witam,
Zajrzyj do "Abaqus Scripting User's Manual" (jakbyś zajrzał, to byś głupiego pytania nie zadawał) tam znajdziesz wszystkie informacje, których potrzebujesz i pewnie całą masę innych rzeczy o istnieniu których nie wiedziałeś. A jak już to przeglądniesz i pojawią Ci się konkretne pytania to najpierw zajrzyj tu: "Abaqus Scripting Reference Manual", potem prześpij się z problemem i jak dalej będzie nie jasne i TWÓJ skrypt nie będzie działać, to daj znać, wtedy pomyślimy.
for v1 in fieldValues:
print >> out, '%11.10e' % (v1.data[0])
Niestety zamiana U na S nie daje skutku, bo w wezlach nie da sie odczytac naprezen i dlatego wartosci, ktore otrzymuje sa rowne 0.
Znalazlem cos innego, NFORC. Niestety podmiana rozniez nie dziala... choc w modelu zdefiniowalem zapisywanie NFORCE.
Prawdopodobnie nie dosc precyzyjnie odczytuje NFORC i otrzymuje "zmienna" zamiast skalaru jak dla U, tylko wektor.
Ok. Doszedłem do etapu, gdzie ptrafie odczytać naprężenia S22. Problem z tym, że tylko dla integration point 1. Chciałbym jeszcze panować nad punktem odczytu, najlepiej jakby CENTROID lub dla wszystkich punktow integration point (wtedy wyliczę ze średniej, szukaną wartość). Poniżej kod, który udało mi się wykonać.
import sys
from odbAccess import *
from abaqusConstants import *
from odbMaterial import *
from odbSection import *
odbpath=sys.argv[1]
outpath=sys.argv[2]
out = open(outpath,'w+')
odb = openOdb(path=odbpath)
Postów: 242 Miejscowość: Norge Data rejestracji: 01.10.09
Dodane dnia 07/25/2013 20:15
Hej,
Popatrzyłem, trochę na Twój kod. Pobawiłem się abaqusem, po małych modyfikacjach u mnie też działa. Ale tak:
- jak miałeś output z samego S - a następnie iterowałeś po v1.data to w wyniku najprawdopodobniej ostałeś s11,
aby uzyskać misesy wystarczy zamiast v1.data wrzucić v1.mises
-on jak listuje Ci plik z wynikami, to jedzie po kolei element i wszystkie punkty całkowania dla elementu i potem kolejny element i kolejne znowu po kolei wszystkie punkty całkowania (sprawdź, sprawdź liczbę elementów pomnóż razy ilość punktów całkowania i powinno się zgadzać.
Teraz trochę wiedzy tajemnej, w wierszu poleceń w abaqusie są dwa fajne polecenia pomagające się zorientować co się dzieje i jakie pole do popisu mamy, a mianowicie polecenia print ##### oraz polecenie dir(#####) te ##### wklejasz komendę, czy tak jak masz u siebie zmienną, np. dispField.
Tylko to wszystko działa jak po prostu skopiujesz po kolei wszystkie polecenia ze skryptu łącznie z importami.
Także wygląda na to, że wszystkie cyfurki masz, tylko nie bardzo wiesz na co patrzysz :)
i teraz tak, jak wpiszesz: print v1.mises
daje taką odpowiedź: 20.8018245697
podświetliłem wyżej tą cyferkę.
print v1.elementLabel
1161
print v1.integrationPoint
8 (tak, robiłem na solidach pierwszego rzędu z pełnym całkowaniem - C3D8)
także z poziomu frame.fieldOutputs['S'] i odpowiednio zapisując to:
for v1 in fieldValues:
print >> out, '%21.20e % (v1.data)
możesz śmiało wszystkie info niezbędne zapisać do pliku
np. tak:
for v1 in frame.values:
print >> out, 'El.No.: %4.0d; Int.Point: %d; VonMises stress: %3.5e' % (v1.elementLabel, v1.integrationPoint, v1.mises)
Dzięki bardzo Tomekk za pomoc.
Rozwiązanie problemu było po innej stronie. Okazało się, że zastosowałem w modelu elementy z redukcją liczby punktów Gaussa... Wyłączenie tej funkcji rozwiązało mój problem.
Końcowa wersja wygląda następująco:
import sys
from odbAccess import *
from abaqusConstants import *
from odbMaterial import *
from odbSection import *
Postów: 242 Miejscowość: Norge Data rejestracji: 01.10.09
Dodane dnia 08/01/2013 07:23
[b]Goral napisał/a/b]
Dzięki bardzo Tomekk za pomoc.
Rozwiązanie problemu było po innej stronie. Okazało się, że zastosowałem w modelu elementy z redukcją liczby punktów Gaussa... Wyłączenie tej funkcji rozwiązało mój problem.
No tak, trzeba wiedzieć ile danych powinno być jak się już je sprawdzać zaczyna
[b]Goral napisał/a/b]
Dodam tylko, dla osób które będą chciały skorzystać z przekazanej w temacie wiedzy, pamiętajcie o tabulatorach w skryptach Pythona.
Dziwnie, że tu na forum jakoś strasznie ciężko wstawić taby, czy chociażby spacje aby jakoś to wyglądało.
Tylko zalogowani mogą dodawać posty w shoutboksie.
Bulix 26.01.2022 Witam, szukam osoby która ogarnia program FEMM.
damian14100 25.01.2022 Witam,
Czy znajduje się na forum osoba która ma doświadczenie w obliczeniach wytrzymałościowych wózków wagonowych ?
BE-FEA 31.03.2021 Nie pracuję w Deform, ale może coś podpowiem na zasadzie analogii do innych programów MES. Napisz jeśli nadal aktualne.
daniel8894 31.03.2021 Czy pomógłby ktoś w zrobieniu symulacji procesu skrawania w Deform 3 d
BE-FEA 09.03.2021 Postaram się pomóc, zapraszam do kontaktu jeśli nadal aktualne.
kinia22 09.03.2021 witam, potrzebuje kogoś kto pomoże w przygotowaniu projektu w programie COMSOL - przeplyw ciepła przez ośrodek porowaty!
BE-FEA 02.04.2020 Przerobiło mi jedną literę na emotkę. Chodzi o przycisk new thread
BE-FEA 02.04.2020 Żeby dodać nowy temat wystarczy wejść w odpowiedni dział i kliknąć mały przycisk "ew thread" po prawej stronie.
KrzywaOHIO 30.03.2020 Jak dodać nowy wątek na forum?
Konrad96 02.12.2019 Witam, czy jest tu ktoś kto dobrze zna się na programie Robot struktural i pomógłby mi zamodelować belkę żelbetową podobną do belki użytej w badaniu? Proszę o kontakt jeśli ktoś chciałby pomóc