Go back to the Contents page.


Press Show to reveal the code chunks.


# Create a clipboard button on the rendered HTML page
source(here::here("clipboard.R")); clipboard
# Set seed for reproducibility
set.seed(1982) 
# Set global options for all code chunks
knitr::opts_chunk$set(
  # Disable messages printed by R code chunks
  message = FALSE,    
  # Disable warnings printed by R code chunks
  warning = FALSE,    
  # Show R code within code chunks in output
  echo = TRUE,        
  # Include both R code and its results in output
  include = TRUE,     
  # Evaluate R code chunks
  eval = TRUE,       
  # Enable caching of R code chunks for faster rendering
  cache = FALSE,      
  # Align figures in the center of the output
  fig.align = "center",
  # Enable retina display for high-resolution figures
  retina = 2,
  # Show errors in the output instead of stopping rendering
  error = TRUE,
  # Do not collapse code and output into a single block
  collapse = FALSE
)
# Start the figure counter
fig_count <- 0
# Define the captioner function
captioner <- function(caption) {
  fig_count <<- fig_count + 1
  paste0("Figure ", fig_count, ": ", caption)
}
library(MetricGraph)
library(ggplot2)
library(reshape2)
library(plotly)

library(fmesher)
capture.output(
  knitr::purl(here::here("functionality.Rmd"), output = here::here("functionality.R")),
  file = here::here("purl_log.txt")
)
source(here::here("functionality.R"))
load(here::here("data_files/fem_basis_tadpole.RData"))
p_b1

Figure 1: Time evolution of the absolute difference between the exact and approximate solution.

#plot_3d_square_mesh(gets.mesh.and.FEM.on.rectangle(1, 1, 8)$mesh)
plot_3d_square_mesh_with_hat(gets.mesh.and.FEM.on.rectangle(1, 1, 6)$mesh, hat_nodes = c(1, 20, 43), hat_height = 1, hat_color = c("red", "red", "blue"), hat_alpha = 0.2)

Figure 2: Time evolution of the absolute difference between the exact and approximate solution.

#plot_3d_mesh_edges_faces(fm_rcdt_2d(globe = 3))
plot_3d_mesh_edges_faces_with_hat(
  fm_rcdt_2d(globe = 3),
  hat_nodes = c(1, 17, 37),
  hat_color = c("blue", "blue", "blue"),
  hat_height = 1,
  hat_alpha = 0.2
)

Figure 3: Time evolution of the absolute difference between the exact and approximate solution.

1 For the error

load(here::here("data_files/exp1_error_tadpole.RData"))
error_tadpole

Figure 4: Time evolution of the absolute difference between the exact and approximate solution.

load(here::here("data_files/exp_1_error_rectangle.RData"))
error_rectangle

Figure 5: Time evolution of the absolute difference between the exact and approximate solution.

load(here::here("data_files/exp_1_error_sphere.RData"))
error_sphere

Figure 6: Time evolution of the absolute difference between the exact and approximate solution.

2 Functions values

3 For the error

load(here::here("data_files/exp1_f_tadpole.RData"))
f_tadpole

Figure 7: Time evolution of the absolute difference between the exact and approximate solution.

load(here::here("data_files/exp_1_f_rect.RData"))
f_rect

Figure 8: Time evolution of the absolute difference between the exact and approximate solution.

load(here::here("data_files/exp_1_f_sphere.RData"))
f_sphere

Figure 9: Time evolution of the absolute difference between the exact and approximate solution.

LS0tCnRpdGxlOiAiUHJlbGltaW5hcmllcyIKZGF0ZTogIkxhc3QgbW9kaWZpZWQ6IGByIGZvcm1hdChTeXMudGltZSgpLCAnJWQtJW0tJVkuJylgIgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIG1hdGhqYXg6ICJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvbnBtL21hdGhqYXhAMy9lczUvdGV4LW1tbC1jaHRtbC5qcyIKICAgIGhpZ2hsaWdodDogcHlnbWVudHMKICAgIHRoZW1lOiBmbGF0bHkKICAgIGNvZGVfZm9sZGluZzogaGlkZSAjIGNsYXNzLnNvdXJjZSA9ICJmb2xkLWhpZGUiIHRvIGhpZGUgY29kZSBhbmQgYWRkIGEgYnV0dG9uIHRvIHNob3cgaXQKICAgIGRmX3ByaW50OiBwYWdlZAogICAgdG9jOiB0cnVlCiAgICB0b2NfZmxvYXQ6CiAgICAgIGNvbGxhcHNlZDogdHJ1ZQogICAgICBzbW9vdGhfc2Nyb2xsOiB0cnVlCiAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUKICAgIGZpZ19jYXB0aW9uOiB0cnVlCiAgICBjb2RlX2Rvd25sb2FkOiB0cnVlCiAgICBjc3M6IHZpc3VhbC5jc3MKYWx3YXlzX2FsbG93X2h0bWw6IHRydWUKYmlibGlvZ3JhcGh5OiAKICAtIHJlZmVyZW5jZXMuYmliCiAgLSBncmF0ZWZ1bC1yZWZzLmJpYgpoZWFkZXItaW5jbHVkZXM6CiAgLSBcbmV3Y29tbWFuZHtcYXJ9e1xtYXRoYmJ7Un19CiAgLSBcbmV3Y29tbWFuZHtcbGxhdn1bMV17XGxlZnRceyMxXHJpZ2h0XH19CiAgLSBcbmV3Y29tbWFuZHtccGFyZX1bMV17XGxlZnQoIzFccmlnaHQpfQogIC0gXG5ld2NvbW1hbmR7XE5jYWx9e1xtYXRoY2Fse059fQogIC0gXG5ld2NvbW1hbmR7XFZjYWx9e1xtYXRoY2Fse1Z9fQogIC0gXG5ld2NvbW1hbmR7XEVjYWx9e1xtYXRoY2Fse0V9fQogIC0gXG5ld2NvbW1hbmR7XFdjYWx9e1xtYXRoY2Fse1d9fQotLS0KCkdvIGJhY2sgdG8gdGhlIFtDb250ZW50c10oYWJvdXQuaHRtbCkgcGFnZS4KCjxkaXYgc3R5bGU9ImNvbG9yOiAjMmMzZTUwOyB0ZXh0LWFsaWduOiByaWdodDsiPgoqKioqKioqKiAgCjxzdHJvbmc+UHJlc3MgU2hvdyB0byByZXZlYWwgdGhlIGNvZGUgY2h1bmtzLjwvc3Ryb25nPiAgCgoqKioqKioqKgo8L2Rpdj4KCgpgYGB7cn0KIyBDcmVhdGUgYSBjbGlwYm9hcmQgYnV0dG9uIG9uIHRoZSByZW5kZXJlZCBIVE1MIHBhZ2UKc291cmNlKGhlcmU6OmhlcmUoImNsaXBib2FyZC5SIikpOyBjbGlwYm9hcmQKIyBTZXQgc2VlZCBmb3IgcmVwcm9kdWNpYmlsaXR5CnNldC5zZWVkKDE5ODIpIAojIFNldCBnbG9iYWwgb3B0aW9ucyBmb3IgYWxsIGNvZGUgY2h1bmtzCmtuaXRyOjpvcHRzX2NodW5rJHNldCgKICAjIERpc2FibGUgbWVzc2FnZXMgcHJpbnRlZCBieSBSIGNvZGUgY2h1bmtzCiAgbWVzc2FnZSA9IEZBTFNFLCAgICAKICAjIERpc2FibGUgd2FybmluZ3MgcHJpbnRlZCBieSBSIGNvZGUgY2h1bmtzCiAgd2FybmluZyA9IEZBTFNFLCAgICAKICAjIFNob3cgUiBjb2RlIHdpdGhpbiBjb2RlIGNodW5rcyBpbiBvdXRwdXQKICBlY2hvID0gVFJVRSwgICAgICAgIAogICMgSW5jbHVkZSBib3RoIFIgY29kZSBhbmQgaXRzIHJlc3VsdHMgaW4gb3V0cHV0CiAgaW5jbHVkZSA9IFRSVUUsICAgICAKICAjIEV2YWx1YXRlIFIgY29kZSBjaHVua3MKICBldmFsID0gVFJVRSwgICAgICAgCiAgIyBFbmFibGUgY2FjaGluZyBvZiBSIGNvZGUgY2h1bmtzIGZvciBmYXN0ZXIgcmVuZGVyaW5nCiAgY2FjaGUgPSBGQUxTRSwgICAgICAKICAjIEFsaWduIGZpZ3VyZXMgaW4gdGhlIGNlbnRlciBvZiB0aGUgb3V0cHV0CiAgZmlnLmFsaWduID0gImNlbnRlciIsCiAgIyBFbmFibGUgcmV0aW5hIGRpc3BsYXkgZm9yIGhpZ2gtcmVzb2x1dGlvbiBmaWd1cmVzCiAgcmV0aW5hID0gMiwKICAjIFNob3cgZXJyb3JzIGluIHRoZSBvdXRwdXQgaW5zdGVhZCBvZiBzdG9wcGluZyByZW5kZXJpbmcKICBlcnJvciA9IFRSVUUsCiAgIyBEbyBub3QgY29sbGFwc2UgY29kZSBhbmQgb3V0cHV0IGludG8gYSBzaW5nbGUgYmxvY2sKICBjb2xsYXBzZSA9IEZBTFNFCikKIyBTdGFydCB0aGUgZmlndXJlIGNvdW50ZXIKZmlnX2NvdW50IDwtIDAKIyBEZWZpbmUgdGhlIGNhcHRpb25lciBmdW5jdGlvbgpjYXB0aW9uZXIgPC0gZnVuY3Rpb24oY2FwdGlvbikgewogIGZpZ19jb3VudCA8PC0gZmlnX2NvdW50ICsgMQogIHBhc3RlMCgiRmlndXJlICIsIGZpZ19jb3VudCwgIjogIiwgY2FwdGlvbikKfQpgYGAKCmBgYHtyfQpsaWJyYXJ5KE1ldHJpY0dyYXBoKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkocmVzaGFwZTIpCmxpYnJhcnkocGxvdGx5KQoKbGlicmFyeShmbWVzaGVyKQpgYGAKCgpgYGB7cn0KY2FwdHVyZS5vdXRwdXQoCiAga25pdHI6OnB1cmwoaGVyZTo6aGVyZSgiZnVuY3Rpb25hbGl0eS5SbWQiKSwgb3V0cHV0ID0gaGVyZTo6aGVyZSgiZnVuY3Rpb25hbGl0eS5SIikpLAogIGZpbGUgPSBoZXJlOjpoZXJlKCJwdXJsX2xvZy50eHQiKQopCnNvdXJjZShoZXJlOjpoZXJlKCJmdW5jdGlvbmFsaXR5LlIiKSkKYGBgCgoKCgoKCgoKOjo6OiB7c3R5bGU9ImRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogNDAwcHggNDAwcHggNDAwcHg7IGdyaWQtY29sdW1uLWdhcDogMXB4OyJ9CgoKOjo6IHt9CgpgYGB7ciwgZmlnLmhlaWdodCA9IDYsIG91dC53aWR0aCA9ICIxMDAlIiwgZmlnLmNhcCA9IGNhcHRpb25lcigiVGltZSBldm9sdXRpb24gb2YgdGhlIGFic29sdXRlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgZXhhY3QgYW5kIGFwcHJveGltYXRlIHNvbHV0aW9uLiIpfQpsb2FkKGhlcmU6OmhlcmUoImRhdGFfZmlsZXMvZmVtX2Jhc2lzX3RhZHBvbGUuUkRhdGEiKSkKcF9iMQpgYGAKCjo6OgoKCjo6OiB7fQoKYGBge3IsIGZpZy5oZWlnaHQgPSA2LCBvdXQud2lkdGggPSAiMTAwJSIsIGZpZy5jYXAgPSBjYXB0aW9uZXIoIlRpbWUgZXZvbHV0aW9uIG9mIHRoZSBhYnNvbHV0ZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGV4YWN0IGFuZCBhcHByb3hpbWF0ZSBzb2x1dGlvbi4iKX0KI3Bsb3RfM2Rfc3F1YXJlX21lc2goZ2V0cy5tZXNoLmFuZC5GRU0ub24ucmVjdGFuZ2xlKDEsIDEsIDgpJG1lc2gpCnBsb3RfM2Rfc3F1YXJlX21lc2hfd2l0aF9oYXQoZ2V0cy5tZXNoLmFuZC5GRU0ub24ucmVjdGFuZ2xlKDEsIDEsIDYpJG1lc2gsIGhhdF9ub2RlcyA9IGMoMSwgMjAsIDQzKSwgaGF0X2hlaWdodCA9IDEsIGhhdF9jb2xvciA9IGMoInJlZCIsICJyZWQiLCAiYmx1ZSIpLCBoYXRfYWxwaGEgPSAwLjIpCmBgYAoKCjo6OgoKCgo6Ojoge30KCgpgYGB7ciwgZmlnLmhlaWdodCA9IDYsIG91dC53aWR0aCA9ICIxMDAlIiwgZmlnLmNhcCA9IGNhcHRpb25lcigiVGltZSBldm9sdXRpb24gb2YgdGhlIGFic29sdXRlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgZXhhY3QgYW5kIGFwcHJveGltYXRlIHNvbHV0aW9uLiIpfQojcGxvdF8zZF9tZXNoX2VkZ2VzX2ZhY2VzKGZtX3JjZHRfMmQoZ2xvYmUgPSAzKSkKcGxvdF8zZF9tZXNoX2VkZ2VzX2ZhY2VzX3dpdGhfaGF0KAogIGZtX3JjZHRfMmQoZ2xvYmUgPSAzKSwKICBoYXRfbm9kZXMgPSBjKDEsIDE3LCAzNyksCiAgaGF0X2NvbG9yID0gYygiYmx1ZSIsICJibHVlIiwgImJsdWUiKSwKICBoYXRfaGVpZ2h0ID0gMSwKICBoYXRfYWxwaGEgPSAwLjIKKQpgYGAKCgo6OjoKCgo6Ojo6CgoKCgojIyBGb3IgdGhlIGVycm9yCgoKOjo6OiB7c3R5bGU9ImRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogNDAwcHggNDAwcHggNDAwcHg7IGdyaWQtY29sdW1uLWdhcDogMXB4OyJ9CgoKOjo6IHt9CgpgYGB7ciwgZmlnLmhlaWdodCA9IDYsIG91dC53aWR0aCA9ICIxMDAlIiwgZmlnLmNhcCA9IGNhcHRpb25lcigiVGltZSBldm9sdXRpb24gb2YgdGhlIGFic29sdXRlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgZXhhY3QgYW5kIGFwcHJveGltYXRlIHNvbHV0aW9uLiIpfQpsb2FkKGhlcmU6OmhlcmUoImRhdGFfZmlsZXMvZXhwMV9lcnJvcl90YWRwb2xlLlJEYXRhIikpCmVycm9yX3RhZHBvbGUKYGBgCgo6OjoKCgo6Ojoge30KCmBgYHtyLCBmaWcuaGVpZ2h0ID0gNiwgb3V0LndpZHRoID0gIjEwMCUiLCBmaWcuY2FwID0gY2FwdGlvbmVyKCJUaW1lIGV2b2x1dGlvbiBvZiB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBleGFjdCBhbmQgYXBwcm94aW1hdGUgc29sdXRpb24uIil9CmxvYWQoaGVyZTo6aGVyZSgiZGF0YV9maWxlcy9leHBfMV9lcnJvcl9yZWN0YW5nbGUuUkRhdGEiKSkKZXJyb3JfcmVjdGFuZ2xlCmBgYAoKCjo6OgoKCgo6Ojoge30KCgpgYGB7ciwgZmlnLmhlaWdodCA9IDYsIG91dC53aWR0aCA9ICIxMDAlIiwgZmlnLmNhcCA9IGNhcHRpb25lcigiVGltZSBldm9sdXRpb24gb2YgdGhlIGFic29sdXRlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgZXhhY3QgYW5kIGFwcHJveGltYXRlIHNvbHV0aW9uLiIpfQpsb2FkKGhlcmU6OmhlcmUoImRhdGFfZmlsZXMvZXhwXzFfZXJyb3Jfc3BoZXJlLlJEYXRhIikpCmVycm9yX3NwaGVyZQpgYGAKCgo6OjoKCgo6Ojo6CgoKCiMjIEZ1bmN0aW9ucyB2YWx1ZXMKCiMjIEZvciB0aGUgZXJyb3IKCgo6Ojo6IHtzdHlsZT0iZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiA0MDBweCA0MDBweCA0MDBweDsgZ3JpZC1jb2x1bW4tZ2FwOiAxcHg7In0KCgo6Ojoge30KCmBgYHtyLCBmaWcuaGVpZ2h0ID0gNiwgb3V0LndpZHRoID0gIjEwMCUiLCBmaWcuY2FwID0gY2FwdGlvbmVyKCJUaW1lIGV2b2x1dGlvbiBvZiB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBleGFjdCBhbmQgYXBwcm94aW1hdGUgc29sdXRpb24uIil9CmxvYWQoaGVyZTo6aGVyZSgiZGF0YV9maWxlcy9leHAxX2ZfdGFkcG9sZS5SRGF0YSIpKQpmX3RhZHBvbGUKYGBgCgo6OjoKCgo6Ojoge30KCmBgYHtyLCBmaWcuaGVpZ2h0ID0gNiwgb3V0LndpZHRoID0gIjEwMCUiLCBmaWcuY2FwID0gY2FwdGlvbmVyKCJUaW1lIGV2b2x1dGlvbiBvZiB0aGUgYWJzb2x1dGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBleGFjdCBhbmQgYXBwcm94aW1hdGUgc29sdXRpb24uIil9CmxvYWQoaGVyZTo6aGVyZSgiZGF0YV9maWxlcy9leHBfMV9mX3JlY3QuUkRhdGEiKSkKZl9yZWN0CmBgYAoKCjo6OgoKCgo6Ojoge30KCgpgYGB7ciwgZmlnLmhlaWdodCA9IDYsIG91dC53aWR0aCA9ICIxMDAlIiwgZmlnLmNhcCA9IGNhcHRpb25lcigiVGltZSBldm9sdXRpb24gb2YgdGhlIGFic29sdXRlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgZXhhY3QgYW5kIGFwcHJveGltYXRlIHNvbHV0aW9uLiIpfQpsb2FkKGhlcmU6OmhlcmUoImRhdGFfZmlsZXMvZXhwXzFfZl9zcGhlcmUuUkRhdGEiKSkKZl9zcGhlcmUKYGBgCgoKOjo6CgoKOjo6OgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo=