Commit 0832e50b authored by Marco Govoni's avatar Marco Govoni
Browse files

Reverted changes in json file wfreq_db. Removed comments. Fixed Makefile.

parent 41ffe874
......@@ -145,9 +145,9 @@ MODULE dfpt_module
!
! ... Find G0 and compute phase
!
!CALL k_grid%find( k_grid%p_cart(:,ik) - q_grid%p_cart(:,iq), is, 'cart', ikqs, g0 ) !MATTEO
CALL k_grid%find( k_grid%p_cart(:,ik) - q_grid%p_cart(:,iq), 'cart', ikq, g0 ) !MARCO
ikqs = k_grid%ipis2ips(ikq,is) !MARCO
!CALL k_grid%find( k_grid%p_cart(:,ik) - q_grid%p_cart(:,iq), is, 'cart', ikqs, g0 ) !M
CALL k_grid%find( k_grid%p_cart(:,ik) - q_grid%p_cart(:,iq), 'cart', ikq, g0 )
ikqs = k_grid%ipis2ips(ikq,is)
!
CALL compute_phase( g0, 'cart', phase )
!
......
......@@ -85,60 +85,60 @@ MODULE wfreq_db
DO ib = qp_bandrange(1),qp_bandrange(2)
ilist(ib) = ib
ENDDO
!CALL json%add('output.Q.bandmap',ilist(qp_bandrange(1):qp_bandrange(2)))
CALL json%add('output.Q.bandmap',ilist(qp_bandrange(1):qp_bandrange(2)))
DEALLOCATE(ilist)
IF( l_generate_plot ) CALL json%add('output.P.freqlist',sigma_freq(1:n_spectralf)*rytoev)
!
counter = 0
DO iks = 1, k_grid%nps
ik = k_grid%ip(iks)
is = k_grid%is(iks)
DO ib = qp_bandrange(1), qp_bandrange(2)
counter = counter + 1
WRITE( ccounter, '(i10)') counter
CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').ksb',(/ik,is,ib/))
CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').sigmax',sigma_exx(ib,iks)*rytoev)
CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').vxcl' ,sigma_vxcl(ib,iks)*rytoev)
CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').vxcnl' ,sigma_vxcnl(ib,iks)*rytoev)
CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').hf' ,sigma_hf(ib,iks)*rytoev)
CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').z' ,sigma_z(ib,iks)*rytoev)
CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').eks' ,et(ib,iks)*rytoev)
CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').eqpLin',sigma_eqplin(ib,iks)*rytoev)
CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').eqpSec',sigma_eqpsec(ib,iks)*rytoev)
CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').sigmac_eks',&
(/DBLE(sigma_sc_eks(ib,iks)*rytoev),AIMAG(sigma_sc_eks(ib,iks)*rytoev)/) )
CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').sigmac_eqpLin',&
(/DBLE(sigma_sc_eqplin(ib,iks)*rytoev),AIMAG(sigma_sc_eqplin(ib,iks)*rytoev)/) )
CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').sigmac_eqpSec',&
(/DBLE(sigma_sc_eqpsec(ib,iks)*rytoev),AIMAG(sigma_sc_eqpsec(ib,iks)*rytoev)/) )
ENDDO
ENDDO
!counter = 0
!DO iks = 1, k_grid%nps
! ik = k_grid%ip(iks)
! is = k_grid%is(iks)
! DO ib = qp_bandrange(1), qp_bandrange(2)
! counter = counter + 1
! WRITE( ccounter, '(i10)') counter
! CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').ksb',(/ik,is,ib/))
! CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').sigmax',sigma_exx(ib,iks)*rytoev)
! CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').vxcl' ,sigma_vxcl(ib,iks)*rytoev)
! CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').vxcnl' ,sigma_vxcnl(ib,iks)*rytoev)
! CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').hf' ,sigma_hf(ib,iks)*rytoev)
! CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').z' ,sigma_z(ib,iks)*rytoev)
! CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').eks' ,et(ib,iks)*rytoev)
! CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').eqpLin',sigma_eqplin(ib,iks)*rytoev)
! CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').eqpSec',sigma_eqpsec(ib,iks)*rytoev)
! CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').sigmac_eks',&
! (/DBLE(sigma_sc_eks(ib,iks)*rytoev),AIMAG(sigma_sc_eks(ib,iks)*rytoev)/) )
! CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').sigmac_eqpLin',&
! (/DBLE(sigma_sc_eqplin(ib,iks)*rytoev),AIMAG(sigma_sc_eqplin(ib,iks)*rytoev)/) )
! CALL json%add('output.Q('//TRIM(ADJUSTL(ccounter))//').sigmac_eqpSec',&
! (/DBLE(sigma_sc_eqpsec(ib,iks)*rytoev),AIMAG(sigma_sc_eqpsec(ib,iks)*rytoev)/) )
! ENDDO
!ENDDO
!
DO iks = 1, k_grid%nps
!
WRITE(my_label_k,'(i6.6)') iks_l2g(iks)
! !
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmax', sigma_exx(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.vxcl', sigma_vxcl(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.vxcnl', sigma_vxcnl(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.hf', sigma_hf(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.z', sigma_z(qp_bandrange(1):qp_bandrange(2),iks))
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.eks', et(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.eqpLin', sigma_eqplin(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.eqpSec', sigma_eqpsec(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmac_eks.re', &
! & DBLE(sigma_sc_eks(qp_bandrange(1):qp_bandrange(2),iks)*rytoev))
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmac_eks.im', &
! & AIMAG(sigma_sc_eks(qp_bandrange(1):qp_bandrange(2),iks)*rytoev))
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmac_eqpLin.re', &
! & DBLE(sigma_sc_eqplin(qp_bandrange(1):qp_bandrange(2),iks)*rytoev))
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmac_eqpLin.im', &
! & AIMAG(sigma_sc_eqplin(qp_bandrange(1):qp_bandrange(2),iks)*rytoev))
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmac_eqpSec.re', &
! & DBLE(sigma_sc_eqpsec(qp_bandrange(1):qp_bandrange(2),iks)*rytoev))
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmac_eqpSec.im', &
! & AIMAG(sigma_sc_eqpsec(qp_bandrange(1):qp_bandrange(2),iks)*rytoev))
! CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigma_diff', sigma_diff(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
!
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmax', sigma_exx(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.vxcl', sigma_vxcl(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.vxcnl', sigma_vxcnl(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.hf', sigma_hf(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.z', sigma_z(qp_bandrange(1):qp_bandrange(2),iks))
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.eks', et(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.eqpLin', sigma_eqplin(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.eqpSec', sigma_eqpsec(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmac_eks.re', &
& DBLE(sigma_sc_eks(qp_bandrange(1):qp_bandrange(2),iks)*rytoev))
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmac_eks.im', &
& AIMAG(sigma_sc_eks(qp_bandrange(1):qp_bandrange(2),iks)*rytoev))
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmac_eqpLin.re', &
& DBLE(sigma_sc_eqplin(qp_bandrange(1):qp_bandrange(2),iks)*rytoev))
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmac_eqpLin.im', &
& AIMAG(sigma_sc_eqplin(qp_bandrange(1):qp_bandrange(2),iks)*rytoev))
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmac_eqpSec.re', &
& DBLE(sigma_sc_eqpsec(qp_bandrange(1):qp_bandrange(2),iks)*rytoev))
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigmac_eqpSec.im', &
& AIMAG(sigma_sc_eqpsec(qp_bandrange(1):qp_bandrange(2),iks)*rytoev))
CALL json%add('output.Q.K'//TRIM(my_label_k)//'.sigma_diff', sigma_diff(qp_bandrange(1):qp_bandrange(2),iks)*rytoev)
!
IF( l_generate_plot ) THEN
DO ib = qp_bandrange(1), qp_bandrange(2)
......
......@@ -77,11 +77,6 @@ westpp_do:
( cd Westpp ; if test "$(MAKE)" = "" ; then make $(MFLAGS) all; \
else $(MAKE) $(MFLAGS) all ; fi ) ; fi
westpy_do:
if test -d Westpy ; then \
( cd Westpy ; if test "$(MAKE)" = "" ; then make $(MFLAGS) all; \
else $(MAKE) $(MFLAGS) all ; fi ) ; fi
clean: \
libraries_undo \
modules_undo \
......@@ -94,8 +89,7 @@ dfpt_kernel_undo \
io_kernel_undo \
wstat_undo \
wfreq_undo \
westpp_undo \
westpy_undo
westpp_undo
libraries_undo:
if test -d Libraries ; then \
......
......@@ -37,7 +37,7 @@ MODULE class_bz_grid
!
PROCEDURE :: init => k_or_q_grid_init
PROCEDURE :: find => findp
PROCEDURE :: ipis2ips => from_ip_and_is_to_ips ! MARCO
PROCEDURE :: ipis2ips => from_ip_and_is_to_ips !
!
END TYPE bz_grid
!
......@@ -91,8 +91,8 @@ MODULE class_bz_grid
!
ALLOCATE ( this%p_cryst (3,this%np) )
this%p_cryst(:,:) = this%p_cart(:,:)
!CALL cryst_to_cart( this%nps, this%p_cryst, at, -1 ) !MATTEO
CALL cryst_to_cart( this%np, this%p_cryst, at, -1 ) !MARCO
!CALL cryst_to_cart( this%nps, this%p_cryst, at, -1 ) !M
CALL cryst_to_cart( this%np, this%p_cryst, at, -1 )
!
! set weights
!
......@@ -170,8 +170,8 @@ MODULE class_bz_grid
!
!
!FUNCTION findp(this,p,unit_type) RESULT(ip)
!SUBROUTINE findp( this, p, is, unit_type, ip, g0 ) !MATTEO
SUBROUTINE findp( this, p, unit_type, ip, g0 ) !MARCO
!SUBROUTINE findp( this, p, is, unit_type, ip, g0 ) !M
SUBROUTINE findp( this, p, unit_type, ip, g0 )
!
! ... ip is the index of p (unit_type = [ "cryst", "cart"])
! ... if on exit ip == 0 --> p is not commensurate with this grid
......@@ -186,7 +186,6 @@ MODULE class_bz_grid
!
CLASS(bz_grid), INTENT(IN) :: this
REAL(DP), INTENT(IN) :: p(3)
!INTEGER, INTENT(IN) :: is !MATTEO
CHARACTER(LEN=*), INTENT(IN) :: unit_type
INTEGER, INTENT(OUT) :: ip
REAL(DP), INTENT(OUT) :: g0(3)
......@@ -207,22 +206,22 @@ MODULE class_bz_grid
IF ( unit_type == "cart" ) CALL cryst_to_cart( 1, p, at, -1 )
!
ip = 0
!DO i = 1, this%np !MATTEO
! deltap(:) = p(:) - this%p_cryst(:,i) - NINT( p(:) - this%p_cryst(:,i) ) !MATTEO
! IF ( ALL ( ABS ( deltap ) .LT. eps8 ) ) THEN !MATTEO
! ip = i + (is-1) * this%np !MATTEO
! g0(:) = p(:) - this%p_cryst(:,ip) !MATTEO
! EXIT !MATTEO
! ENDIF !MATTEO
!ENDDO !MATTEO
DO i = 1, this%np !MARCO
deltap(:) = p(:) - this%p_cryst(:,i) - NINT( p(:) - this%p_cryst(:,i) ) !MARCO
IF ( ALL ( ABS ( deltap ) .LT. eps8 ) ) THEN !MARCO
g0(:) = p(:) - this%p_cryst(:,i) !MARCO
ip=i !MARCO
EXIT !MARCO
ENDIF !MARCO
ENDDO !MARCO
!DO i = 1, this%np !M
! deltap(:) = p(:) - this%p_cryst(:,i) - NINT( p(:) - this%p_cryst(:,i) ) !M
! IF ( ALL ( ABS ( deltap ) .LT. eps8 ) ) THEN !M
! ip = i + (is-1) * this%np !M
! g0(:) = p(:) - this%p_cryst(:,ip) !M
! EXIT !M
! ENDIF !M
!ENDDO !M
DO i = 1, this%np
deltap(:) = p(:) - this%p_cryst(:,i) - NINT( p(:) - this%p_cryst(:,i) )
IF ( ALL ( ABS ( deltap ) .LT. eps8 ) ) THEN
g0(:) = p(:) - this%p_cryst(:,i)
ip=i
EXIT
ENDIF
ENDDO
!
! Tranform g0 back to cartesian coordinates if needed
!
......@@ -252,19 +251,19 @@ MODULE class_bz_grid
END SUBROUTINE
!
!
FUNCTION from_ip_and_is_to_ips(this,ip,is) RESULT(ips) !MARCO
! !MARCO
IMPLICIT NONE !MARCO
! !MARCO
! I/O !MARCO
! !MARCO
CLASS(bz_grid), INTENT(IN) :: this !MARCO
INTEGER, INTENT(IN) :: ip,is !MARCO
INTEGER :: ips !MARCO
! !MARCO
ips = ip + (is-1) * this%np ! CI MANCHI MATTEO !MARCO
! !MARCO
END FUNCTION !MARCO
FUNCTION from_ip_and_is_to_ips(this,ip,is) RESULT(ips)
!
IMPLICIT NONE
!
! I/O
!
CLASS(bz_grid), INTENT(IN) :: this
INTEGER, INTENT(IN) :: ip,is
INTEGER :: ips
!
ips = ip + (is-1) * this%np ! M
!
END FUNCTION
!
!
!SUBROUTINE addp( this, pin1, pin2, pout, g0, unit_type )
......
......@@ -147,9 +147,9 @@ SUBROUTINE do_sxx ( )
!
l_gammaq = q_grid%l_pIsGamma(iq)
!
!CALL k_grid%find( k_grid%p_cart(:,ik) - q_grid%p_cart(:,iq), is, 'cart', ikqs, g0 ) !MATTEO
CALL k_grid%find( k_grid%p_cart(:,ik) - q_grid%p_cart(:,iq), 'cart', ikq, g0 ) !MARCO
ikqs = k_grid%ipis2ips(ikq,is) !MARCO
!CALL k_grid%find( k_grid%p_cart(:,ik) - q_grid%p_cart(:,iq), is, 'cart', ikqs, g0 ) !M
CALL k_grid%find( k_grid%p_cart(:,ik) - q_grid%p_cart(:,iq), 'cart', ikq, g0 )
ikqs = k_grid%ipis2ips(ikq,is)
CALL compute_phase( g0, 'cart', phase )
!
nbndval = nbnd_occ(ikqs)
......
......@@ -300,8 +300,8 @@ SUBROUTINE calc_corr_k( sigma_corr, energy, l_verbose)
iss = k_grid%is(ikks)
IF( is /= iss ) CYCLE
!
!CALL k_grid%find( k_grid%p_cart(:,ik) - k_grid%p_cart(:,ikk), 1, 'cart', iq, g0 ) !MATTEO
CALL k_grid%find( k_grid%p_cart(:,ik) - k_grid%p_cart(:,ikk), 'cart', iq, g0 ) !MARCO
!CALL k_grid%find( k_grid%p_cart(:,ik) - k_grid%p_cart(:,ikk), 1, 'cart', iq, g0 ) !M
CALL k_grid%find( k_grid%p_cart(:,ik) - k_grid%p_cart(:,ikk), 'cart', iq, g0 )
l_gammaq = q_grid%l_pIsGamma(iq)
nbndval = nbnd_occ(ikks)
!
......@@ -390,8 +390,8 @@ SUBROUTINE calc_corr_k( sigma_corr, energy, l_verbose)
!
IF( is /= iss ) CYCLE
!
!CALL k_grid%find( k_grid%p_cart(:,ik) - k_grid%p_cart(:,ikk), 1, 'cart', iq, g0 ) !MATTEO
CALL k_grid%find( k_grid%p_cart(:,ik) - k_grid%p_cart(:,ikk), 'cart', iq, g0 ) !MARCO
!CALL k_grid%find( k_grid%p_cart(:,ik) - k_grid%p_cart(:,ikk), 1, 'cart', iq, g0 ) !M
CALL k_grid%find( k_grid%p_cart(:,ik) - k_grid%p_cart(:,ikk), 'cart', iq, g0 )
l_gammaq = q_grid%l_pIsGamma(iq)
nbndval = nbnd_occ(ikks)
!
......
......@@ -167,9 +167,9 @@ SUBROUTINE calc_exx2( sigma_exx, nb1, nb2 )
l_gammaq = q_grid%l_pIsGamma(iq)
CALL pot3D%init('Dense',.FALSE.,'gb',iq)
!
!CALL k_grid%find( k_grid%p_cart(:,ik) - q_grid%p_cart(:,iq), is, 'cart', ikqs, g0 ) !MATTEO
CALL k_grid%find( k_grid%p_cart(:,ik) - q_grid%p_cart(:,iq), 'cart', ikq, g0 ) !MARCO
ikqs = k_grid%ipis2ips(ikq,is) !MARCO
!CALL k_grid%find( k_grid%p_cart(:,ik) - q_grid%p_cart(:,iq), is, 'cart', ikqs, g0 ) !M
CALL k_grid%find( k_grid%p_cart(:,ik) - q_grid%p_cart(:,iq), 'cart', ikq, g0 )
ikqs = k_grid%ipis2ips(ikq,is)
CALL compute_phase( g0, 'cart', phase )
!
nbndval = nbnd_occ(ikqs)
......
......@@ -469,8 +469,8 @@ SUBROUTINE solve_gfreq_k(l_read_restart)
!
time_spent(1) = get_clock( 'glanczos' )
!
!CALL q_grid%find( k_grid%p_cart(:,ikk) - k_grid%p_cart(:,ik), 1, 'cart', iq, g0 ) !MARCO
CALL q_grid%find( k_grid%p_cart(:,ikk) - k_grid%p_cart(:,ik), 'cart', iq, g0 ) !MATTEO
!CALL q_grid%find( k_grid%p_cart(:,ikk) - k_grid%p_cart(:,ik), 1, 'cart', iq, g0 ) !M
CALL q_grid%find( k_grid%p_cart(:,ikk) - k_grid%p_cart(:,ik), 'cart', iq, g0 )
!
CALL preallocate_solvegfreq_q( iks_l2g(ikks), iks_l2g(iks), qp_bandrange(1), qp_bandrange(2), pert)
!
......
......@@ -707,8 +707,8 @@ SUBROUTINE solve_qp_k(l_secant,l_generate_plot)
iss = k_grid%is(ikks)
IF( is /= iss ) CYCLE
!
!CALL q_grid%find( k_grid%p_cart(:,ik) - k_grid%p_cart(:,ikk), 1, 'cart', iq, g0 ) !MATTEO
CALL q_grid%find( k_grid%p_cart(:,ik) - k_grid%p_cart(:,ikk), 'cart', iq, g0 ) !MARCO
!CALL q_grid%find( k_grid%p_cart(:,ik) - k_grid%p_cart(:,ikk), 1, 'cart', iq, g0 ) !M
CALL q_grid%find( k_grid%p_cart(:,ik) - k_grid%p_cart(:,ikk), 'cart', iq, g0 )
!
IF(ALLOCATED(overlap)) DEALLOCATE(overlap)
ALLOCATE(overlap(pert%nglob, nbnd ) )
......
......@@ -791,9 +791,9 @@ SUBROUTINE solve_wfreq_k(l_read_restart,l_generate_plot)
!ikqs = kpq_grid%index_kq(iks,iq)
!npwkq = ngk(ikqs)
!
!CALL k_grid%find( k_grid%p_cart(:,ik) + q_grid%p_cart(:,iq), is, 'cart', ikqs, g0 ) !MATTEO
CALL k_grid%find( k_grid%p_cart(:,ik) + q_grid%p_cart(:,iq), 'cart', ikq, g0 ) !MARCO
ikqs = k_grid%ipis2ips(ikq,is) !MARCO
!CALL k_grid%find( k_grid%p_cart(:,ik) + q_grid%p_cart(:,iq), is, 'cart', ikqs, g0 ) !M
CALL k_grid%find( k_grid%p_cart(:,ik) + q_grid%p_cart(:,iq), 'cart', ikq, g0 )
ikqs = k_grid%ipis2ips(ikq,is)
!
npwkq = ngk(ikqs)
!
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment