Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1
  • 2

TOPIC: Accumulation at inlet with no sediment influx

Accumulation at inlet with no sediment influx 1 year 9 months ago #41950

  • Renault
  • Renault's Avatar
  • OFFLINE
  • Senior Boarder
  • Posts: 120
  • Thank you received: 33
Hi again,

Thanks for the ideas I tried the dos2unix utility and it appears to already have been in Unix format, so that's unlikely to be the issue.

I then looked at the pluie case, as well as #39507 about setting a spatially variable bed (even though it may not work). My code now looks like this:
USE DECLARATIONS_TELEMAC2D, ONLY: MESH,PRIVE
! ...
      DO IPOIN=1,NPOIN
        ESTRATUM(ISTRAT,IPOIN) = PRIVE%ADR(1)%P%R(IPOIN)
      END DO

In the steering file, with ALTHICKNESS the variable I added to the geometry selafin:
NUMBER OF PRIVATE ARRAYS = 1
NAMES OF PRIVATE VARIABLES = 'ALTHICKNESS'
(Question, is the NAMES OF PRIVATE VARIABLES keyword necessary? It isn't present in the pluie_cn case.)

And of course, it's a new error this time, a good old segfault for each thread:
forrtl: severe (174): SIGSEGV, segmentation fault occurred

I feel like it must be so simple to take the data from a selafin variable and apply it to the layer thickness, and I must be missing something, but I cannot see for the life of me what it is.

My last resort will be to try setting every point as discussed further in the #39507 thread linked above, even though this seems like a dreadful approach.
---
I forgot to press Submit last night, so some updates:
I removed the NAMES OF PRIVATE VARIABLES keyword and the simulation ran, although I suspect it didn't actually change anything as the evolution seems virtually identical to previous tests. Moreover, when I look at LAYER 1 THICKNESS in the results file, it appears that the layer thickness is uniform at 0.02 m.
Here are the relevant lines from my steering file; is there anything that could be causing the AL thickness to change back from my prescribed values in the user_bed_init subroutine?
ACTIVE LAYER THICKNESS = 0.020
CONSTANT ACTIVE LAYER THICKNESS = NO
NUMBER OF LAYERS FOR INITIAL STRATIFICATION = 3
LAYERS INITIAL THICKNESS = 0.020;0.020;0.020

As well, I've taken note of Rebekka's reply. These both seem like helpful ideas, I will try them! Thank you so much for your help!
The administrator has disabled public write access.

Accumulation at inlet with no sediment influx 1 year 9 months ago #41952

  • Renault
  • Renault's Avatar
  • OFFLINE
  • Senior Boarder
  • Posts: 120
  • Thank you received: 33
As a follow-up, I can confirm that Rebekka's strategy of using the bottom roughness as a map for the active layer thickness is successful! I went into Blue Kenue (other preprocessors are available) and created a buffer zone at the inlet with Manning's roughness = 0.02501, just off from 0.025.

For anyone who is also down this rabbit hole, I have attached my Fortran file (the _man is for Manning). The loop of interest is here:
      DO ISTRAT=1,NUMSTRAT
        DO IPOIN=1,NPOIN
          IF ((ABS(CHESTR%R(IPOIN)-0.02501).LT.0.000001).OR.
     &    (ABS(CHESTR%R(IPOIN)-0.01001).LT.0.000001)) THEN
            ESTRATUM(ISTRAT,IPOIN) = 0.D0
          END IF
        END DO
      END DO
I have it set up to loop through all the layers (NUMSTRAT) and all the points (NPOIN). Maybe it would be best to only define the thickness of the first (top?) layer? If so, you can replace
      DO ISTRAT=1,NUMSTRAT
with
      ISTRAT=1
and remove the corresponding END DO statement at the end.

Note as well that this is set up to look for two bottom thickness values: 0.02501 (off from 0.025, main roughness) and 0.01001 (off from roughness of a smooth, non-erodible feature in my waterway, which I needed to delimit anyway!). Because of Rebekka's clever code involving ABS(), if my understanding is correct, this will only activate the ALT modification for these two values of CHESTR and no others. If you have more roughnesses to add, follow the same pattern (don't forget the & in column 6!):
          IF ((ABS(CHESTR%R(IPOIN)-some_value).LT.0.000001).OR.
     &    (ABS(CHESTR%R(IPOIN)-new_value).LT.0.000001)).OR.
     &    (ABS(CHESTR%R(IPOIN)-another_value).LT.0.000001)

Remember to add this line to the Telemac steering file:
FORTRAN FILE='user_bed_init_man.f'

All this to say, the original problem of this topic has been solved* – no more ripples at the entrance – and I've figured out how to define a spatially variable bed, which I needed to learn anyway. It takes some extra preparation in the preprocessing stage, but it's not much more complicated than it would be to create a Selafin variable with ALT values.

Thank you again, Rebekka and Christophe, for your willingness to help a poor student reach numerical stability!

* That said, there is still a bit of strangeness at the limit of my non-erodible zone (about 1 m long). This is somewhat to be expected and I'll just have to exclude this area from my analysis, which could be problematic because of how close this area is to my test subject… but that's a problem for future me :whistle:
Attachments:
The administrator has disabled public write access.
  • Page:
  • 1
  • 2
Moderators: Pablo, pavans

The open TELEMAC-MASCARET template for Joomla!2.5, the HTML 4 version.