Hi again,
Thanks for these ideas, I have adjusted my .cli accordingly. Someday I will understand the CONLIM structure
A few updates.
First, I tried the FINITE VOLUMES / UPWINDING FOR BEDLOAD with values of 0.50, 0.75, and 1.00 for the latter keyword. The 0.50 completed a 1h00 simulation, and the 0.75 and 1.00 both failed after just under 0h30 of simulated time. Moreover, all simulations still have rippling at the inlet, and the rippling is somehow more pronounced than it was! That is to say, it seems to propagate further downstream...
Now, I am trying to make the first metre or so non-erodible to see if this will work. Unfortunately, this is turning out to be more complicated than I thought (and it looked complicated already!). I grabbed a list of elements from the mesh that I wanted to make non-erodible, put them in a text file, and tried reading the file as part of user_bed_init.f (attached).
I have debugged a few points already, including the need to manually copy the noerod.csv into the working directory (scratch directory on an HPC cluster) and apparently needing to transform points from global to local (I was getting segfaults if I just fed it the following).
! DO loop here where I feed it a node number IPOIN
ESTRATUM(1,IPOIN) = 10000.D0
! loop...
It should be noted that I am doing this computation in parallel, as it is a rather heavy simulation and I am not sure how to run only the user_bed_init step in series.
My latest problem is at the compilation stage. Here is the relevant code:
OPEN(UNIT=10, FILE="noerod.csv", STATUS="old", ACTION="read")
DO
READ(10,*,END=99) IPOIN
ESTRATUM(1,GLOBAL_TO_LOCAL_POINT(IPOIN,MESH)) = 0.D0
END DO
99 CONTINUE
! close the file, return, etc.
This apparently leads to memory errors and I'm not sure why; at this stage, the errors become:
================================================================================
ITERATION 0 TIME: 0.0000 S
PRERES: MAXIMUM COURANT NUMBER: 0.1021956
BALANCE OF OMEGA (UNIT: NA * M3)
INITIAL QUANTITY OF TRACER : 0.000000
TELEMAC2D COUPLED WITH:
GAIA
TELEMAC-2D: INTERNAL COUPLING WITH GAIA
INBIEF (BIEF): NOT A VECTOR MACHINE (ACCORDING TO YOUR DATA)
LIQUID BOUNDARIES: 2
free(): invalid pointer GAIA INITIAL MASS OF SEDIMENTS:
TOTAL MASS OF CLASS 1 = 2629.891 ( KG )
TOTAL MASS OF CLASS 2 = 840.7029 ( KG )
TOTAL MASS OF CLASS 3 = 2910.125 ( KG )
TOTAL MASS OF CLASS 4 = 2220.318 ( KG )
TOTAL MASS OF CLASS 5 = 1767.632 ( KG )
TOTAL MASS OF CLASS 6 = 711.3640 ( KG )
TOTAL MASS OF CLASS 7 = 603.5815 ( KG )
TOTAL MASS OF CLASS 8 = 1530.510 ( KG )
TOTAL MASS OF CLASS 9 = 1853.858 ( KG )
TOTAL MASS OF CLASS 10 = 6488.501 ( KG )
free(): invalid pointer
free(): invalid pointer
free(): invalid pointer
free(): invalid pointer
free(): invalid pointer
free(): invalid pointer
free(): invalid pointer
free(): invalid pointer (and so on and so forth)
I realize this is now a Fortran question rather than a GAIA question, but how can I get this code working, especially with parallelization? Or can just this subroutine be run in serial? Would it be better to somehow import all the points in noerod.csv into user_bed_init.f? I have attached the full user_bed_init.f file.
The previous computation file sounds like an interesting option, but in my mind it would still be simpler to have that as part of the geometry variables in the .slf object :) Maybe I will try this, run just one time step and then use the output as previous computation.
Again, thank you so much for your help!
André