mirror of
https://git.gfz-potsdam.de/naaice/poet.git
synced 2025-12-15 12:28:22 +01:00
116 lines
3.4 KiB
R
116 lines
3.4 KiB
R
## Example script for assessing simulation results with "RFun_Eval.R"
|
|
## Time-stamp: "Last modified 2020-02-05 03:36:05 delucia"
|
|
|
|
## Read all the needed functions
|
|
source("RFun_Eval.R")
|
|
|
|
|
|
|
|
## read the simulation results of a SimDol2D variant with setup$prolong
|
|
sd <- ReadRTSims("test_prol4")
|
|
|
|
simtimes <- sapply(sd, "[","simtime")
|
|
|
|
|
|
## we still need to read the grid to perform 2D visualization
|
|
demodir <- system.file("extdata", "demo_rtwithmufits", package="Rmufits")
|
|
grid <- ReadGrid(paste0(demodir,"/d2ascii.run.GRID.SUM"))
|
|
|
|
## fix the color scale
|
|
br <- seq(0, 0.0012, length=13)
|
|
|
|
|
|
## we want animation
|
|
library(animation)
|
|
|
|
## workhorse function to be used with package "animation"
|
|
PlotAn <- function(tot, prop, grid, breaks)
|
|
{
|
|
for (step in seq(1, length(tot))) {
|
|
snap <- tot[[step]]$C
|
|
time <- tot[[step]]$simtime/3600/24
|
|
ind <- match(prop, colnames(snap))
|
|
Plot2DCellData(snap[,ind], grid=grid, contour=FALSE, breaks=breaks, nlevels=length(breaks), scale=TRUE, main=paste0(prop," after ", time, "days"))
|
|
}
|
|
}
|
|
|
|
### simple animations ###
|
|
|
|
## As gif
|
|
saveGIF({
|
|
PlotAn(tot=sd, prop="Dolomite", grid=grid, breaks=br)
|
|
}, img.name = 'Dolomite_plot', movie.name="Dol2Dbreaks.gif",
|
|
interval = 0.5, nmax = length(sd))
|
|
|
|
## as HTML
|
|
saveHTML({
|
|
PlotAn(tot=sd, prop="Dolomite", grid=grid, breaks=br)
|
|
}, img.name = 'Dolomite_plot', htmlfile="dolomite.html",
|
|
interval = 0.5, nmax = length(sd))
|
|
|
|
## For inclusion in latex
|
|
saveLatex({
|
|
PlotAn(tot=sd, prop="Dolomite", grid=grid, breaks=br)
|
|
}, img.name = 'Dolomite_plot',
|
|
latex.filename = 'dolomite_prolong.tex',
|
|
interval = 0.5, nmax = length(sd))
|
|
|
|
|
|
|
|
sd <- ReadRTSims("test_prol4")
|
|
|
|
source("RFun_Eval.R")
|
|
|
|
library(RedModRphree)
|
|
library(Rmufits)
|
|
library(RcppVTK)
|
|
|
|
|
|
#### Evaluation of discrepancies of KtzDol_6p200_1_nodht_180 / KtzDol_6p200_1_dhtlog_180
|
|
dht <- ReadRTSims("KtzDol_6p200_1_dhtlog_180")
|
|
ref <- ReadRTSims("KtzDol_6p200_1_nodht_180")
|
|
|
|
rmse <- ComputeErrors(dht, ref, FUN=RMSE)
|
|
|
|
rae <- ComputeErrors(dht, ref, FUN=RAEmax)
|
|
|
|
mae <- ComputeErrors(dht, ref, FUN=MAE)
|
|
|
|
rel_max_rmse <- ComputeErrors(dht, ref, FUN=RmaxRMSE)
|
|
|
|
## Visualize the 2 computed relative errors
|
|
## start by defining a nice color palette using RColorBrewer
|
|
mycol <- RColorBrewer::brewer.pal(8, "Dark2")
|
|
|
|
## uncomment the next line to save this image to a pdf file
|
|
cairo_pdf("Ref_VS_DHT.pdf", height=4, width=12)
|
|
par(mfrow=c(1,2), family="serif")
|
|
|
|
ErrorProgress(rmse, colors=mycol, ignore=c("O2g", "pe", "Cl", "C"), log="y",
|
|
ylim=c(1E-12, 1E-3), las=1, main="Mean RMSE, reference vs. dht", metric="RMSE")
|
|
abline(h=10^-seq(11,2), col="grey", lwd=1, lty="dashed")
|
|
|
|
ErrorProgress(mae, colors=mycol, ignore=c("O2g", "pe", "Cl", "C"), log="y",
|
|
ylim=c(1E-11, 1E-2), las=1, main="Max Absolute Error, reference vs. dht", metric="MAE")
|
|
abline(h=10^-seq(10,3), col="grey", lwd=1, lty="dashed")
|
|
dev.off()
|
|
|
|
cairo_pdf("Scatter_Ref_VS_DHT.pdf", height=5, width=9)
|
|
par(family="serif")
|
|
PlotScatter(ref[[200]], dht[[200]],
|
|
which=c("Calcite", "Dolomite", "Ca", "Mg", "C", "pH"),
|
|
cols=3, labs=c("Reference", "DHT"), pch=".", cex=2)
|
|
dev.off()
|
|
|
|
time_ref <- readRDS("KtzDol_6p200_1_nodht_180/timings.rds")
|
|
time_dht <- readRDS("KtzDol_6p200_1_dhtlog_180/timings.rds")
|
|
|
|
|
|
## export to paraview
|
|
resk <- lapply(res, function(x) return(data.matrix(x$C)))
|
|
ExportToParaview("template_vtu_ketzinlarge.vtu", "KtzDol_6p200_1/paraview", results=resk)
|
|
|
|
|
|
|
|
|