bangerth / biharmonic Goto Github PK
View Code? Open in Web Editor NEWSolving the biharmonic equation
Solving the biharmonic equation
set Minimal frequency = 100
set Maximal frequency = 10000
set Number of frequency steps = 100
Can you add a flag for log or linear frequency spacing?
Also, I didn’t see how a custom frequency array is specified. Can you add that?
We can then take the minimum of the two as an indication of how fast a
wave would traverse the medium:
I think you meant to say “maximum”?
Provide an option whereby one can select the maximal number of threads to be used in the .prm
file.
Loss angle is dimensionless and interpreted in degrees.
This should be “Loss tangent”, not “Loss angle”
Loss tangent has angular units, not dimensionless.
Also, there needs to be a different loss tangent for Young’s modulus and for the Tension, so the complex value for E (Young’s modulus) in the computations would be:
E = Eo * exp(j*loss_tangent_E)
and for the Tension,
T = To * exp(j*loss_tangent_T)
where I’ve used “o” to denote the magnitude (i.e. Eo=|E|), _E to refer to the Young’s modulus, and _T to refer to the Tension.
I guess we can refer to the two different loss tangents as:
In both the Helmholtz and Biharmonic programs, check_for_termination_signal()
exits the program when requested, but also returns a value. Furthermore, that value is ignored almost everywhere. Fix this in both program: if it exits, we don't need a return value.
Riccardo reports the following when running on Windows:
--------------------------------------------------------
An error occurred in line <2886> of file <C:\Users\riccardo\source\dealii\include\deal.II/lac/affine_constraints.templates.h> in function
ScratchDataAccessor
The violated condition was:
my_scratch_data->in_use == false
Additional information:
Access to thread-local scratch data tried, but it is already in use
--------------------------------------------------------
This clearly needs to be fixed.
In this case, an external program should place the text STOP into a file called
termination_signal in the current directory.
I need a way to verify that the program has indeed exited. Maybe another file with “TERMINATED” in it? Maybe the solver just deletes the “termination_signal” file to signal it’s just before it terminates?
Can you provide a maximum time between getting the “termination_signal” and the program exiting? Typically when I have something that’s computationally intensive, I have some “stop_flag” that the code monitors. If “stop_flag” gets set, then the code exits with an appropriate error code. This way, my code is usually never more than a few seconds away from being gracefully exited. Do you have something like that?
Riccardo reports timings for just a single frequency that look like this:
Number of frequencies scheduled: 1
thread-0328 | 0001 | 2020-05-27 15:33:54 | START work
thread-0328 | 0002 | 2020-05-27 15:33:54 | START setup_system
thread-0328 | 0003 | 2020-05-27 15:33:55 | FINISH setup_system
thread-0328 | 0004 | 2020-05-27 15:33:55 | START assemble_system
thread-0328 | 0005 | 2020-05-27 15:33:55 | START scratch_data
thread-0328 | 0006 | 2020-05-27 15:33:55 | FINISH scratch_data
thread-0328 | 0007 | 2020-05-27 15:33:55 | START mesh_loop
thread-0328 | 0008 | 2020-05-27 15:34:00 | FINISH mesh_loop
thread-0328 | 0009 | 2020-05-27 15:34:00 | FINISH assemble_system
thread-0328 | 0010 | 2020-05-27 15:34:00 | START solve
thread-0328 | 0011 | 2020-05-27 15:34:01 | FINISH solve
thread-0328 | 0012 | 2020-05-27 15:34:01 | START postprocess
thread-0328 | 0013 | 2020-05-27 15:34:01 | FINISH postprocess
thread-0328 | 0014 | 2020-05-27 15:34:01 | START output.join()
thread-0328 | 0015 | 2020-05-27 15:34:01 | FINISH output.join()
thread-0328 | 0016 | 2020-05-27 15:34:01 | FINISH work
Number of frequencies computed: 1
I don't know how to visualize this, but we can use TimerOutput
to create summaries of this.
Follow-up to #5
To monitor the progress of computations -- for example for displaying a
progress bar -- open this file periodically (say, once a second) and read what's in it.
Can you add a line at the very beginning the “frequency_response.txt” file that gives the frequency count of the # of solutions in the file so I don’t have to parse the whole file? Something like:
# 15/200 frequencies computed
# Columns are as follows:
# 1: Frequency [Hz]
# 2: Real part of the volume displacement divided by the amplitude of pressure [m^3/Pa]
# 3: Imaginary part of the same
# 4: Real part of the impedance [Pa.s/m^3]
# 5: Imaginary part of the same
# 6: Absolute value of maximal displacement divided by amplitude of pressure [m/Pa]
# 5: File name for graphical output of the displacement visualization.
100 5.93911e-11 0 0 -2.67978e+07 5.53421e-07 "visualization/solution-100.vtu"
.. etc
Necessary for multithreading on Windows because deal.II on Windows doesn't support the TBB.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.