From e80becca6ea432ad823c53a410860681ca70394f Mon Sep 17 00:00:00 2001 From: kamischi <karl-michael.schindler@web.de> Date: Fri, 10 May 2024 00:03:01 +0200 Subject: [PATCH] setepslog nearly there. log ouf output works. the output of oscillators with more than 1 layer is stilll buggy. --- .gitignore | 2 + tests/setepslog/doeels.f90 | 18 +- tests/setepslog/dolog.sh | 2 +- tests/setepslog/seteps.f90 | 22 +- tests/setepslog/seteps.log | 2005 ------------------------------------ 5 files changed, 21 insertions(+), 2028 deletions(-) delete mode 100644 tests/setepslog/seteps.log diff --git a/.gitignore b/.gitignore index 4f89813..89d996d 100644 --- a/.gitignore +++ b/.gitignore @@ -20,3 +20,5 @@ tests/oxlog/eelsou tests/phintlog/eelsf90 tests/phint optimization/phintdriver *.pyc +tests/setepslog/eelsf90 +tests/setepslog/eelsf90 diff --git a/tests/setepslog/doeels.f90 b/tests/setepslog/doeels.f90 index 366a2ff..48a4686 100644 --- a/tests/setepslog/doeels.f90 +++ b/tests/setepslog/doeels.f90 @@ -51,7 +51,7 @@ subroutine doeels (e0, theta, phia, phib, wmin, wmax, dw, comment, comment_size, logical, intent(in), optional :: debug logical :: rational, user - integer :: i, iw, neps, nofu, nout, nw, lmax + integer :: i, iw, j, neps, nofu, nout, nw, lmax double precision :: a, acoef, aerr, alpha, argmin, argmax, b, bcoef, beta, & c1, c2, ccoef, cospsi, dlimf, dx, elleps, ener, epsmac, facru, f, f0, & f1, fpic, fun, pi, prefac, psia, psii, qrat, rerr, ru, sinpsi, t, & @@ -65,6 +65,10 @@ subroutine doeels (e0, theta, phia, phib, wmin, wmax, dw, comment, comment_size, ru, um, dlimf, wn, user, rational common / mulayr / argmin, argmax, epsmac +! **** log modification start + character (len = 1) tab +! **** log modification end + data aerr / 0.0d0 /, rerr / 1.0d-06 /, f / 0.0d0 /, f1 / 0.0d0 / if (debug) then @@ -188,6 +192,18 @@ subroutine doeels (e0, theta, phia, phib, wmin, wmax, dw, comment, comment_size, endif ! c1 > 0.99d0 endif ! rational +! **** log modification start + tab = char(9) + write (99, '(i5, a, i5)') neps, tab, layers + write (99, '(a)') mode + do i = 1, neps + write (99, '(a, a, g15.7, a, i5)') name(i), tab, epsinf(i), tab, nos(i) + do j = 1, nos(i) + write (99, '(g15.7, a, g15.7, a, g15.7)') osc(1,j), tab, osc(2,j), tab, osc(3,j) + enddo + enddo +! **** log modification end + ! *** loop over the energy losses if (debug) write(*, 110) diff --git a/tests/setepslog/dolog.sh b/tests/setepslog/dolog.sh index 99f245c..cb39449 100755 --- a/tests/setepslog/dolog.sh +++ b/tests/setepslog/dolog.sh @@ -6,5 +6,5 @@ for number in 001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 01 ./eelsf90 >/dev/null cp seteps.log logFiles/'seteps'$number'.log' - rm -f eelsin eelsou + rm -f eelsin eelsou seteps.log done diff --git a/tests/setepslog/seteps.f90 b/tests/setepslog/seteps.f90 index 86aaf83..cb21d63 100644 --- a/tests/setepslog/seteps.f90 +++ b/tests/setepslog/seteps.f90 @@ -41,13 +41,6 @@ subroutine seteps(neps, nos, osc, epsinf, wn, name, eps, layers, mode) character (len = 1) tab ! **** log modification end -! write (*,*) 'seteps:' -! write (*,*) 'nos: ', size(nos) -! write (*,*) 'osc: ', size(osc) -! write (*,*) 'epsinf: ', size(epsinf) -! write (*,*) 'name: ', size(name) -! write (*,*) 'eps: ', size(eps) - j = 0 do l = 1, neps m = nos(l)/2 @@ -98,20 +91,7 @@ subroutine seteps(neps, nos, osc, epsinf, wn, name, eps, layers, mode) ! **** log modification start tab = char(9) -!seteps(neps, nos, osc, epsinf, wn, name, eps, layers, mode) - write (99, '(i5)') size(nos) - write (99, '(i5)') size(osc) - write (99, '(i5)') size(epsinf) - write (99, '(i5)') size(name) - write (99, '(i5)') size(eps) - -! write (99, '(g15.7, a, g15.7, a, g15.7, a, g15.7)') phi, tab, a, tab, u, tab, phint - -! write (*,*) 'nos: ', size(nos) -! write (*,*) 'osc: ', size(osc) -! write (*,*) 'epsinf: ', size(epsinf) -! write (*,*) 'name: ', size(name) -! write (*,*) 'eps: ', size(eps) + write (99, '(30g15.7)') wn, (eps(j), j = 1, neps) ! **** log modification end return diff --git a/tests/setepslog/seteps.log b/tests/setepslog/seteps.log deleted file mode 100644 index bfc094a..0000000 --- a/tests/setepslog/seteps.log +++ /dev/null @@ -1,2005 +0,0 @@ - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 - 1 - 6 - 1 - 1 - 1 -- GitLab