2020-11-18 14:36:07 +01:00

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)