! Part of Dflow3d a 3D Navier Stokes solver with variable density for
! simulations of near field dredge plume mixing
! Copyright (C) 2012 Lynyrd de Wit
! This program is free software: you can redistribute it and/or modify
! it under the terms of the GNU General Public License as published by
! the Free Software Foundation, either version 3 of the License, or
! (at your option) any later version.
! This program is distributed in the hope that it will be useful,
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
! You should have received a copy of the GNU General Public License
! along with this program. If not, see .
MODULE error_functions
! MODULE error_functions
! This module contains the suboutine "writeerror" and "finelhelp"
! Gerard Dam, 4 March 2007
!----------------------------------------------------------
! This module contains the following subroutines/functions:
!----------------------------------------------------------
! SUBROUTINE writeerror(error): writes an error on screen
! SUBROUTINE finelhelp: writes some help on screen
!----------------------------------------------------------
CONTAINS
subroutine writeerror(error)
implicit none
integer error
write(*,*) ' '
write(*,*) '##################################################'
write(*,*) '# #'
write(*,*) '# ERROR DETECTED: #'
write(*,*) '# #'
SELECT CASE (error)
CASE(001)
write(*,*) '# namelist &simulation #'
write(*,*) '# px is not defined #'
CASE(002)
write(*,*) '# namelist &simulation #'
write(*,*) '# imax is not defined #'
write(*,*) '# #'
CASE(003)
write(*,*) '# namelist &simulation #'
write(*,*) '# jmax is not defined #'
write(*,*) '# #'
CASE(004)
write(*,*) '# namelist &simulation #'
write(*,*) '# kmax is not defined #'
write(*,*) '# #'
CASE(005)
write(*,*) '# namelist &simulation #'
write(*,*) '# imax_grid is not defined #'
write(*,*) '# #'
CASE(006)
write(*,*) '# namelist &simulation #'
write(*,*) '# dr_grid is not defined #'
write(*,*) '# #'
CASE(007)
write(*,*) '# namelist &simulation #'
write(*,*) '# Rmin is not defined #'
write(*,*) '# #'
CASE(008)
write(*,*) '# namelist &simulation #'
write(*,*) '# schuif_x is not defined #'
write(*,*) '# #'
CASE(009)
write(*,*) '# namelist &simulation #'
write(*,*) '# dy is not defined #'
write(*,*) '# #'
CASE(010)
write(*,*) '# namelist &simulation #'
write(*,*) '# depth is not defined #'
write(*,*) '# #'
CASE(011)
write(*,*) '# namelist &simulation #'
write(*,*) '# jmax is not a multiple of px #'
write(*,*) '# adjust jmax and/or px #'
CASE(012)
write(*,*) '# namelist &simulation #'
write(*,*) '# kmax is not a multiple of px #'
write(*,*) '# adjust kmax and/or px #'
CASE(030)
write(*,*) '# namelist × #'
write(*,*) '# t_end is not defined #'
CASE(031)
write(*,*) '# namelist × #'
write(*,*) '# t0_output,dt_output,te_output must be >0 #'
CASE(032)
write(*,*) '# namelist × #'
write(*,*) '# tstart_rms is not defined #'
CASE(033)
write(*,*) '# namelist × #'
write(*,*) '# dt_max is not defined #'
CASE(034)
write(*,*) '# namelist × #'
write(*,*) '# time_int is not defined #'
write(*,*) '# choose ''EE1'',''AB2'',''AB3'',''ABv'',or ''RK3'' #'
write(*,*) '# for Euler_expl1, AdamsBashforth2, #'
write(*,*) '# for AdamsBashforth3,AdamsBashforth variable dt #'
write(*,*) '# (based on AB3), RungeKutta3 time integration #'
CASE(035)
write(*,*) '# namelist × #'
write(*,*) '# CFL is not defined #'
CASE(040)
write(*,*) '# namelist &ambient #'
write(*,*) '# U_b is not defined #'
CASE(041)
write(*,*) '# namelist &ambient #'
write(*,*) '# V_b is not defined #'
CASE(042)
write(*,*) '# namelist &ambient #'
write(*,*) '# W_b is not defined #'
CASE(043)
write(*,*) '# namelist &ambient #'
write(*,*) '# rho_b is not defined #'
CASE(044)
write(*,*) '# namelist &ambient #'
write(*,*) '# SEM is not defined #'
CASE(045)
write(*,*) '# namelist &ambient #'
write(*,*) '# nmax2 is not defined #'
CASE(046)
write(*,*) '# namelist &ambient #'
write(*,*) '# nmax1 is not defined #'
CASE(047)
write(*,*) '# namelist &ambient #'
write(*,*) '# lm_min is not defined #'
CASE(048)
write(*,*) '# namelist &ambient #'
write(*,*) '# slip_bot is not defined #'
CASE(049)
write(*,*) '# namelist &ambient #'
write(*,*) '# kn is not defined #'
CASE(050)
write(*,*) '# namelist &ambient #'
write(*,*) '# interaction_bed is not defined #'
CASE(051)
write(*,*) '# namelist &ambient #'
write(*,*) '# input bc file does not exist #'
CASE(052)
write(*,*) '# namelist &ambient #'
write(*,*) '# input periodicx not defined (0 or 1) #'
CASE(053)
write(*,*) '# namelist &ambient #'
write(*,*) '# input periodicy not defined (0,1 or 2) #'
CASE(054)
write(*,*) '# namelist &ambient #'
write(*,*) '# input dpdx not defined but periodicx=1 #'
CASE(055)
write(*,*) '# namelist &ambient #'
write(*,*) '# input Hs should be 00 #'
CASE(057)
write(*,*) '# namelist &ambient #'
write(*,*) '# input wavedirection nx_w,ny_w are incorrect #'
write(*,*) '# sqrt(nx_w^2+ny_w^2) should be 1 #'
CASE(058)
write(*,*) '# namelist &ambient #'
write(*,*) '# obst%x(1:4) and obst%y(1:4) should be defined #'
CASE(059)
write(*,*) '# namelist &ambient #'
write(*,*) '# obst%height should be positive #'
CASE(060)
write(*,*) '# namelist &plume #'
write(*,*) '# W_j is not defined #'
CASE(061)
write(*,*) '# namelist &plume #'
write(*,*) '# Awjet is not defined #'
CASE(062)
write(*,*) '# namelist &plume #'
write(*,*) '# Aujet is not defined #'
CASE(063)
write(*,*) '# namelist &plume #'
write(*,*) '# Avjet is not defined #'
CASE(064)
write(*,*) '# namelist &plume #'
write(*,*) '# kjet is not defined #'
CASE(066)
write(*,*) '# namelist &plume #'
write(*,*) '# radius_j is not defined #'
CASE(067)
write(*,*) '# namelist &plume #'
write(*,*) '# Sc is not defined #'
CASE(068)
write(*,*) '# namelist &plume #'
write(*,*) '# slipvel is not defined #'
CASE(069)
write(*,*) '# namelist &plume #'
write(*,*) '# Strouhal is not defined #'
CASE(070)
write(*,*) '# namelist &plume #'
write(*,*) '# azi_n is not defined #'
CASE(071)
write(*,*) '# namelist &fractions_in_plume #'
write(*,*) '# ws is not correct for each fraction #'
CASE(072)
write(*,*) '# namelist &fractions_in_plume #'
write(*,*) '# rho is not correct for each fraction #'
CASE(073)
write(*,*) '# namelist &fractions_in_plume #'
write(*,*) '# c is not correct for each fraction #'
CASE(074)
write(*,*) '# namelist &fractions_in_plume #'
write(*,*) '# c (volume fraction) is larger than 1, physically impossible #'
CASE(075)
write(*,*) '# namelist &fractions_in_plume #'
write(*,*) '# dpart is not correct for each fraction #'
CASE(076)
write(*,*) '# namelist &fractions_in_plume #'
write(*,*) '# tau_e [N/m2] is not correct for each fraction #'
CASE(077)
write(*,*) '# namelist &fractions_in_plume #'
write(*,*) '# tau_d [N/m2] is not correct for each fraction #'
CASE(078)
write(*,*) '# namelist &fractions_in_plume #'
write(*,*) '# M [kg/sm2] is not correct for each fraction #'
CASE(079)
write(*,*) '# namelist &fractions_in_plume #'
write(*,*) '# dfloc is negative or less than dpart #'
CASE(080)
write(*,*) '# namelist &LESmodel #'
write(*,*) '# Cs is not defined #'
CASE(081)
write(*,*) '# namelist &LESmodel #'
write(*,*) '# Lmix_type is not defined #'
CASE(082)
write(*,*) '# namelist &LESmodel #'
write(*,*) '# sgs_model is not defined #'
write(*,*) '# choose ''SSmag'',or ''FSmag'',or''SWALE'',or''Sigma'',or''MixLe'' #'
write(*,*) '# for Standard, Filtered Smagorinsky, WALE, #'
write(*,*) '# Sigma, Mixing Length model #'
CASE(083)
write(*,*) '# namelist &LESmodel #'
write(*,*) '# nr_HPfilter is not defined #'
CASE(084)
write(*,*) '# namelist &fractions_in_plume #'
write(*,*) '# kn_sed [m] is not correct for each fraction #'
CASE(085)
write(*,*) '# namelist &LESmodel #'
write(*,*) '# damping_drho_dr is not defined #'
write(*,*) '# choose ''none'',or ''MuAn'' #'
write(*,*) '# for Munk-Anderson damping of eddy viscosity at #'
write(*,*) '# stably stratification #'
CASE(086)
write(*,*) '# namelist &LESmodel #'
write(*,*) '# damping_a1 or a2 [-] is not defined #'
CASE(087)
write(*,*) '# namelist &LESmodel #'
write(*,*) '# damping_b1 or b2 [-] is not defined #'
CASE(090)
write(*,*) '# namelist &constants #'
write(*,*) '# kappa is not defined #'
CASE(091)
write(*,*) '# namelist &constants #'
write(*,*) '# gx is not defined #'
CASE(092)
write(*,*) '# namelist &constants #'
write(*,*) '# gy is not defined #'
CASE(093)
write(*,*) '# namelist &constants #'
write(*,*) '# gz is not defined #'
CASE(094)
write(*,*) '# namelist &constants #'
write(*,*) '# ekm_mol is not defined #'
CASE(100)
write(*,*) '# Namelist error occured #'
write(*,*) '# Namelist involved: HISTORIES #'
CASE(110)
write(*,*) '# i history > imax #'
write(*,*) '# #'
CASE(111)
write(*,*) '# i history < 1 #'
write(*,*) '# #'
CASE(120)
write(*,*) '# j history > jmax*px #'
write(*,*) '# #'
CASE(121)
write(*,*) '# j history < 1 #'
write(*,*) '# #'
CASE(130)
write(*,*) '# k history > kmax #'
write(*,*) '# #'
CASE(131)
write(*,*) '# k history < 1 #'
write(*,*) '# #'
CASE(200)
write(*,*) '# #'
write(*,*) '# input file not found #'
CASE(260)
write(*,*) '# namelist &plume #'
write(*,*) '# U_j2 is not defined #'
CASE(261)
write(*,*) '# namelist &plume #'
write(*,*) '# Awjet2 is not defined #'
CASE(262)
write(*,*) '# namelist &plume #'
write(*,*) '# Aujet2 is not defined #'
CASE(263)
write(*,*) '# namelist &plume #'
write(*,*) '# Avjet2 is not defined #'
CASE(264)
write(*,*) '# namelist &plume #'
write(*,*) '# Strouhal2 is not defined #'
CASE(265)
write(*,*) '# namelist &plume #'
write(*,*) '# azi_n2 is not defined #'
CASE(266)
write(*,*) '# namelist &plume #'
write(*,*) '# radius_j2 is not defined #'
CASE(267)
write(*,*) '# namelist &plume #'
write(*,*) '# zjet2 is not defined #'
CASE(268)
write(*,*) '# namelist &plume #'
write(*,*) '# zjet2 should be 0. (default 0.s) #'
CASE(274)
write(*,*) '# namelist &plume #'
write(*,*) '# bedplume%zbottom should be >0. and < height #'
CASE(275)
write(*,*) '# namelist &plume #'
write(*,*) '# radius_inner_j must be >0 and < radius_j #'
CASE(276)
write(*,*) '# namelist &plume #'
write(*,*) '# W_j_powerlaw must be >0 (default 7 for 1/7 powerlaw) #'
CASE(301)
write(*,*) '# namelist &ship #'
write(*,*) '# please prescribe U_TSHD #'
CASE(302)
write(*,*) '# namelist &ship #'
write(*,*) '# Lfront<0 or Lfront>LOA #'
CASE(303)
write(*,*) '# namelist &ship #'
write(*,*) '# Breadth<0 #'
CASE(304)
write(*,*) '# namelist &ship #'
write(*,*) '# Draught<0 #'
CASE(305)
write(*,*) '# namelist &ship #'
write(*,*) '# Lback<0 or Lback>LOA #'
CASE(306)
write(*,*) '# namelist &ship #'
write(*,*) '# Hback<0 #'
CASE(307)
write(*,*) '# namelist &ship #'
write(*,*) '# xfront>0 (overflow not in TSHD) #'
CASE(308)
write(*,*) '# namelist &ship #'
write(*,*) '# yfront>0.5*Breadth (overflow not in TSHD) #'
CASE(310)
write(*,*) '# namelist &ship #'
write(*,*) '# nprop is not 1 or 2 #'
CASE(311)
write(*,*) '# namelist &ship #'
write(*,*) '# Dprop is not defined #'
CASE(312)
write(*,*) '# namelist &ship #'
write(*,*) '# xprop is not defined #'
CASE(313)
write(*,*) '# namelist &ship #'
write(*,*) '# yprop is not defined #'
CASE(314)
write(*,*) '# namelist &ship #'
write(*,*) '# zprop is not between 0 and depth #'
CASE(315)
write(*,*) '# namelist &ship #'
write(*,*) '# Pprop is not defined #'
CASE(316)
write(*,*) '# namelist &ship #'
write(*,*) '# kn_TSHD is not defined #'
CASE(317)
write(*,*) '# namelist &ship #'
write(*,*) '# rot_prop is not defined #'
CASE(318)
write(*,*) '# namelist &ship #'
write(*,*) '# rudder is not defined #'
CASE(319)
write(*,*) '# namelist &ship #'
write(*,*) '# draghead is not defined #'
write(*,*) '# choose ''star'',''port'',''both'', or ''none'' #'
CASE(320)
write(*,*) '# namelist &ship #'
write(*,*) '# Dsp should be positive #'
CASE(321)
write(*,*) '# namelist &ship #'
write(*,*) '# softnose should be 0 or 1 #'
CASE(322)
write(*,*) '# namelist &ship #'
write(*,*) '# Hfront should be >0. #'
CASE(401)
write(*,*) '# namelist &num_scheme #'
write(*,*) '# convection is not defined #'
write(*,*) '# choose ''CDS2'',''CDS6'', or ''COM4'',or #'
write(*,*) '# or ''HYB4'', or ''HYB6'' , or ''C4A6'' #'
write(*,*) '# for 2nd order or 6th order central scheme #'
write(*,*) '# or 4th order compact or cds2 with 4th diss. #'
write(*,*) '# or cds2 with 6th diss. #'
CASE(402)
write(*,*) '# namelist &num_scheme #'
write(*,*) '# numdiff is not between 0 and 1 #'
CASE(403)
write(*,*) '# namelist &num_scheme #'
write(*,*) '# diffusion is not defined #'
write(*,*) '# choose ''CDS2'',or ''COM4'' #'
write(*,*) '# for 2nd order central scheme (non compact), or 4th order compact #'
CASE(404)
write(*,*) '# namelist &num_scheme #'
write(*,*) '# comp_filter_a is not between 0 and 0.5 #'
CASE(405)
write(*,*) '# namelist &num_scheme #'
write(*,*) '# comp_filter_n is not positive #'
CASE(406)
write(*,*) '# namelist &num_scheme #'
write(*,*) '# CNdiffz must be 0 (explicit diffusion in z dir)#'
write(*,*) '# or 1 (Crank Nicolson implicit diffusion in z dir) #'
CASE(407)
write(*,*) '# namelist &num_scheme #'
write(*,*) '# npresIBM must be >0 #'
CASE(501)
write(*,*) '# namelist &simulation #'
write(*,*) '# imax_grid is not increasing monotonously #'
CASE(502)
write(*,*) '# namelist &simulation #'
write(*,*) '# not enough or negative dr_grid are defined #'
CASE(503)
write(*,*) '# namelist &simulation #'
write(*,*) '# last imax_grid is not equal to imax #'
CASE(504)
write(*,*) '# namelist &LESmodel #'
write(*,*) '# Lmix_type is not 1 or 2 #'
CASE(601)
write(*,*) '# namelist &ambient #'
write(*,*) '# bc_obst_h should be >0 and 0 and < depth #'
CASE(605)
write(*,*) '# namelist &ambient #'
write(*,*) '# wallup should be 0 or 1 (default 0) #'
CASE(606)
write(*,*) '# namelist &ambient #'
write(*,*) '# input bedlevel file does not exist #'
CASE(611)
write(*,*) '# namelist &ambient #'
write(*,*) '# input U_w must be defined if Hs>0 #'
write(*,*) '# please note that unlike U_b, U_w is defined in earth fixed x,y coordinate system ! #'
CASE(612)
write(*,*) '# namelist &ambient #'
write(*,*) '# input V_w must be defined if Hs>0 #'
write(*,*) '# please note that unlike V_b, V_w is defined in earth fixed x,y coordinate system ! #'
CASE(1001)
write(*,*) '# namelist ×eries #'
write(*,*) '# file cannot be found #'
CASE(1002)
write(*,*) '# namelist ×eries #'
write(*,*) '# error in reading timeseries #'
write(*,*) '# should be a NAMELIST /timeseries/ begintime,timestep,endtime,series #'
write(*,*) '# ended with a "/" #'
CASE(10000)
write(*,*) '# timestep becomes too small #'
write(*,*) '# restart with smaller dt #'
CASE DEFAULT
write(*,*) '# error number: ', error
write(*,*) '# Unexpected error call #'
write(*,*) '# check error_functions.for #'
END SELECT
write(*,*) '# #'
write(*,*) '##################################################'
write(*,*)
write(*,*) ' ERROR(S) FOUND, DFLOW3D TERMINATED '
STOP
END SUBROUTINE writeerror
SUBROUTINE finelhelp
! SUBROUTINE finelhelp
! This subroutine shows some help information on screen of how
! to use FINEL2d.
! This can be seen by using the command:
! Afterwards the program is stopped.
! Gerard Dam, 4 March 2007
! UPDATE NECCESARRY!!!!
write(*,*) '##################################################'
write(*,*) '# #'
write(*,*) '# FINEL 2D, HELP FUNCTION #'
write(*,*) '# #'
write(*,*) '##################################################'
write(*,*) ' '
write(*,*) ' ================================================'
write(*,*) ' The following abbreviations are used:'
write(*,*) ' [M]=mandatory, [O]=optional, DEF=default value'
write(*,*) ' val=real value, ival=integer value'
write(*,*) ' str=string variable, iarray=array of integers'
write(*,*) ' ================================================'
write(*,*) ' Inputfile should look like this:'
write(*,*)
write(*,*) '&modtype'
write(*,*) '[M] modeltype=[1,2,3]; 1=flow,2=flow+silt,3=flow+sand, DEF = 1'
write(*,*) '/'
write(*,*) ' '
write(*,*) '&general'
write(*,*) '[O] restartfname=[str]; name of the restartfile'
write(*,*) '[M] meshfname=[str]; name of sepran mesh file'
write(*,*) '[O] depthfname=[str]; name of depth file [m](pos. downwards)'
write(*,*) '[O] globaldepth=[val]; global depth [m] (pos.downwards)'
write(*,*) '[M] roughnesstype=[nikkuradse,chezy,mannning]; type of roughness'
write(*,*) ' DEF=nikkuradse'
write(*,*) '[O] roughnessfname=[str]; name of roughness file [unit of roughnesstype]'
write(*,*) '[O] globalroughness=[val]; global roughness [unit of roughnesstype]'
write(*,*) '/'
write(*,*) ' '
write(*,*) '×'
write(*,*) '[M] tbeg=[ival]; starttime of calculation[s], DEF=0'
write(*,*) '[M] tend=[ival]; endtime of calculation [s]'
write(*,*) '[O] tmap=[ival1 ival2 ival3]; begin,timestep,endtime of writing maps [s]'
write(*,*) '[O] this=[ival1 ival2 ival3]; begin,timestep,endtime of writing histories [s]'
write(*,*) '/'
write(*,*) ' '
write(*,*) '&flowconstants'
write(*,*) '[O] gravity=[val]; gravity [m/s2],DEF=9.81'
write(*,*) '[O] windsp_x=[val]; windspeed in x-dir [m/s],DEF=0'
write(*,*) '[O] windsp_y=[val]; windspeed in y-dir [m/s],DEF=0'
write(*,*) '[O] windsp_drag=[val]; winddrag coef., DEF=0'
write(*,*) '[O] latitude=[val]; Latitude of modelarea [degree],DEF=52 (The Netherlands)'
write(*,*) '[O] drycrit=[val]; Critical depth for drying [m],DEF=0.03'
write(*,*) '/'
write(*,*) ' '
write(*,*) '&siltconstants'
write(*,*) '[O] ws=[val]; fall velocity of silt [m/s],DEF=0.003'
write(*,*) '[O] M=[val]; ,DEF=0.0003'
write(*,*) '[O] tau_s=[val]; critical sedimentation shear stress [N/m2], DEF=2.0'
write(*,*) '[O] tau_e=[val]; critival erosion shear stress [N/m2], DEF=0.8'
write(*,*) '[O] rho=[val]; dry bulk density [kg/m3], DEF=250'
write(*,*) '[O] pointsourcefname=[str]; name of pointsource file'
write(*,*) '/'
write(*,*) ' '
write(*,*) '&initcond'
write(*,*) '[O] hinit=[val]; initial waterdepth [m], DEF=0'
write(*,*) '[O] uinit=[val]; initial u-velocity [m/s], DEF=0'
write(*,*) '[O] vinit=[val]; initial v-velocity [m/s], DEF=0'
write(*,*) '[O] cinit=[val]; initial silt-concentration [mg/l], DEF=0'
write(*,*) '/'
write(*,*) ' '
write(*,*) '&histories'
write(*,*) '/'
write(*,*) ' '
write(*,*) '&boundcond'
write(*,*) '/'
write(*,*) ' '
STOP
END SUBROUTINE finelhelp
END MODULE error_functions