ctest checkgrad ref ene and limits
[unres.git] / source / cluster / wham / src-M / gnmr1.f
1       double precision function gnmr1(y,ymin,ymax)
2       implicit none
3       double precision y,ymin,ymax
4       double precision wykl /4.0d0/
5       if (y.lt.ymin) then
6         gnmr1=(ymin-y)**wykl/wykl
7       else if (y.gt.ymax) then
8         gnmr1=(y-ymax)**wykl/wykl
9       else
10         gnmr1=0.0d0
11       endif
12       return
13       end
14 c------------------------------------------------------------------------------
15       double precision function gnmr1prim(y,ymin,ymax)
16       implicit none
17       double precision y,ymin,ymax
18       double precision wykl /4.0d0/
19       if (y.lt.ymin) then
20         gnmr1prim=-(ymin-y)**(wykl-1)
21       else if (y.gt.ymax) then
22         gnmr1prim=(y-ymax)**(wykl-1)
23       else
24         gnmr1prim=0.0d0
25       endif
26       return
27       end
28 c------------------------------------------------------------------------------
29       double precision function harmonic(y,ymax)
30       implicit none
31       double precision y,ymax
32       double precision wykl /2.0d0/
33       harmonic=(y-ymax)**wykl
34       return
35       end
36 c-------------------------------------------------------------------------------
37       double precision function harmonicprim(y,ymax)
38       double precision y,ymin,ymax
39       double precision wykl /2.0d0/
40       harmonicprim=(y-ymax)*wykl
41       return
42       end
43 c---------------------------------------------------------------------------------
44 c---------------------------------------------------------------------------------
45       double precision function rlornmr1(y,ymin,ymax,sigma)
46       implicit none
47       double precision y,ymin,ymax,sigma
48       double precision wykl /4.0d0/
49       if (y.lt.ymin) then
50         rlornmr1=(ymin-y)**wykl/((ymin-y)**wykl+sigma**wykl)
51       else if (y.gt.ymax) then
52         rlornmr1=(y-ymax)**wykl/((y-ymax)**wykl+sigma**wykl)
53       else
54         rlornmr1=0.0d0
55       endif
56       return
57       end
58 c------------------------------------------------------------------------------
59       double precision function rlornmr1prim(y,ymin,ymax,sigma)
60       implicit none
61       double precision y,ymin,ymax,sigma
62       double precision wykl /4.0d0/
63       if (y.lt.ymin) then
64         rlornmr1prim=-(ymin-y)**(wykl-1)*sigma**wykl*wykl/
65      &   ((ymin-y)**wykl+sigma**wykl)**2
66       else if (y.gt.ymax) then
67         rlornmr1prim=(y-ymax)**(wykl-1)*sigma**wykl*wykl/
68      & ((y-ymax)**wykl+sigma**wykl)**2
69       else
70         rlornmr1prim=0.0d0
71       endif
72       return
73       end
74