Lecturer: Prof. Oliver Weeger
Assistants: Dr.-Ing. Maximilian Kannapinn, Jasper O. Schommartz, Dominik K. Klein
Lecture website: link
Research group website: link
This repository offers a collection of lecture materials and code examples accompanying the lecture "Physics-aware Machine Learning" at TU Darmstadt (module no. 16-73-4144).
FFNN_introduction: Demo of regression of simple functions with FFNNs
ode_examples: Numerical integration of ODEs in MATLABnlebb: Finite element discretization and numerical integration of dynamic nonlinear Euler Bernoulli beam in MATLAB
PINNs: Physics-informed neural networks for the geometrically linear and nonlinear Euler-Bernoulli beam using Python and Jax
nlebb_dynamic_batch: Automated data generation with the non-linear Euler Bernoulli beam in MATLABNeuralODE: Demo of augmented neural ODEs in JAX
To reproduce the results for Task FFNN ROM in the FFNN_ROM directory, the following steps must be followed.
Run the nlebb/nlebb_dynamic_svd.m MATLAB file for the following loads and make sure the svdUU1.mat and svdUS1.mat output files for the SVD modes are produced (They will be required in the next step.):
% -------------------------------------------------------------------------
% --- DEFINE LOADS
load_f = 0;
load_q = 0;
load = @(x,t) [load_f, load_q];
tPer = .1;
Nx = @(t) [0 0 0 0];
Qz = @(t) [0 0 0 multiphase_multisin(2,0.085,100,1,3,t)];
My = @(t) 0;Next, run nlebb/nlebb_dynamic_proj.m several times for different exitations Qz. Save the produced q0all.txt, Qfall.txt, and QKQall.txt files to FFNN_ROM/data/${loadcase} accoding to their respective load case. The excitations are:
- Multisine train 1:
Qz = @(t) [0 0 0 multiphase_multisin(2,0.085,100,1,3,t)]; - Multisine train 2:
Qz = @(t) [0 0 0 multiphase_multisin(2,0.085,100,2,3,t)]; - Multisine train 3:
Qz = @(t) [0 0 0 multiphase_multisin(2,0.085,100,3,3,t)]; - Multisine test:
Qz = @(t) [0 0 0 multiphase_multisin(1,0.103,78,1,1,t)]; - Sine test:
Qz = @(t) [0 0 0 1.5*sin(2*pi*6*t)]; - Step test:
Qz = @(t) [0 0 0 -10*(t>.2)]; - Dirac test:
Qz = @(t) [0 0 0 -10*(t>.5)*(t<.51)]; - Quasi-static test:
Qz = @(t) [0 0 0 -2*t];
The remaining inputs are:
% -------------------------------------------------------------------------
% --- INPUTS
qmode = 2;
qm = 4;
qdeim = 0;
qnn = 0;
load_f = 0;
load_q = 0;
load = @(x,t) [load_f, load_q];
tPer = .1;
Nx = @(t) [0 0 0 0];
Qz = @(t) % INSERT EXCITATION HERE
My = @(t) 0;Execute the force.ipynb and potential.ipynb notebooks in FFNN_ROM/notebooks with default settings and save the obtained model weights in FFNN_ROM/data/force.weights.txt and FFNN_ROM/data/potential.weights.txt, respectively.
To run the calibrated NN models in nlebb/nlebb_dynamic_proj.m, set qnn to the desired model and run for any of the excitations in (2).