1FUNCTION InitDist( Model, n, t ) RESULT(f)2USE Types3USE SolverUtils4IMPLICIT NONE56TYPE(Model_t) :: Model7LOGICAL :: Visited = .FALSE., GotIt8INTEGER :: n9REAL(KIND=dp) :: t,x,y,a1,a2,f1011SAVE Visited, a1, a21213IF(.NOT. Visited) THEN14a1 = 5.0_dp15a2 = 10.0_dp16Visited = .TRUE.17END IF1819f = 0.0_dp2021x = Model % Nodes % x(n)22y = Model % Nodes % y(n)2324! cut-off Gaussian25! f = MIN(1.0_dp, a1*EXP(-a2*(x**2+y**2)))2627! sharp cylinder28IF( (x-0.5)**2 + y**2 < 0.3**2 ) f = 1.0_dp2930! sharp square31! IF( ABS(x-0.5) < 0.3 .AND. ABS(y) < 0.3 ) f = 1.0_dp323334END FUNCTION InitDist353637