-
Notifications
You must be signed in to change notification settings - Fork 0
/
messages.f90
232 lines (196 loc) · 8.09 KB
/
messages.f90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
subroutine messages
! * This routine writes to standard output the compilation settings of the program
! based on the variables defined in control_simulation.h
! * Performs consitency checks at compilation time.
use commons
implicit none
logical,parameter :: debug =.false.
#include 'control_simulation.h'
! Symmetry of the problem: PBC in 3D or 2D
#if SYMMETRY == 0
print '(/a/)', " * SIMULATING: a system with PBC in X and Y coordinates (Walls in Z)"
#elif SYMMETRY == 1
print '(/a/)', " * SIMULATING: a system with PBC in X, Y and Z coordinates (BULK)"
#endif
! --- Artifical settings ----
#ifdef BIDIMENSIONAL
print '(/a/)', " * SIMULATING: Velocities in Y coordinate are permanently set to ZERO, and won't evolve"
#endif
! --- System settings ----
#if SYSTEM == 0
# if SYMMETRY == 0
print '(/a)', " * SIMULATING: grafted chains, non grafted chains and 3 or 4 type of particles"
print '(a/)', " * Channel-like geometry of the simulation box"
# else
# ifdef ACTIVE_BRUSH
print '(/a)', " * SIMULATING: active, polymers are driven by external forces"
# endif
# ifdef SPRING_ARRAY
print '(/a)', " * SIMULATING: springs, brush polymers are joined by springs. Only works for ordered brush "
#endif
# endif
#elif SYSTEM == 1
print '(/a)', " * SIMULATING: grafted chains, non grafted chains and 3 or type of particles"
print '(a/)', " * Droplet geometry: No brush in the top wall."
print '(a/)', " * Droplet geometry: Others and more measuring routines"
#elif SYSTEM == 2
print '(/a)', " * SIMULATING: free chains, ions and counterions with Coulomb interactions"
print '(a)', " * No brushes."
# if SYMMETRY == 1
print '(a/)', " * Performing Ewald sum in 3D"
# elif SYMMETRY == 0
print '(a)', " * Performing Ewald sum in 3D"
print '(a/)', " * Using dipolar correction in Z direction"
# endif
#elif SYSTEM == 3
print '(/a)', " * SIMULATING: brushes, free chains, ions and counterions with Coulomb interactions"
print '(a/)', " * Channel-like geometry of the simulation box"
# if SYMMETRY == 1
print '(a/)', " * bulk + fixed brushes is not possible ! CHANGE control_simulation.h !!! "
stop
# elif SYMMETRY == 0
print '(a)', " * Performing Ewald sum in 3D"
print '(a/)', " * Using dipolar correction in Z direction"
# endif
#endif
! Messages related to the wall interactions
# if SYMMETRY == 0
# if WALL == 1
print '(/a/)', " * WALLS: Explicit LJ particles "
# endif
# if WALL == 2
print '(/a/)', " * WALLS: Implicit 9-3 potential. It could be purely repulsive if A_w<0"
# endif
# if WALL == 3
print '(/a/)', " * WALLS: Bottom: Implicit 9-3 potential. TOP: hard wall (bounce in z) "
# endif
# if WALL == 4
print '(/a)', " * WALLS: Both, TOP and BOTTOM walls are hard walls."
print '(a/)', " * A_w and s_w are ignored. "
# endif
# endif
#ifdef RELAX
print '(/a)', " * WARNING: the program is compiled in RELAX mode. NO MD !!! "
print '(a)', " * WARNING: the program is compiled in RELAX mode. NO MD !!! "
print '(a/)', " * WARNING: the program is compiled in RELAX mode. NO MD !!! "
#endif
#if SOLVENT == 0
print '(/a/)'," * Simulating poor solvent conditions "
#elif SOLVENT == 1
print '(/a/)'," * Simulating good solvent conditions "
#elif SOLVENT == 2
print '(/a/)'," * Simulating good solvent conditions with non-additive potentials. Different sig_23 "
#elif SOLVENT == 3
print '(/a)'," * Simulating poor solvent conditions with non-additive potentials. Different sig_23 "
! print '(a/)'," * Interaction 2-3 is purely repulsive "
#endif
#ifdef PROFILES
print '(/a/)'," * Doing simulation with profiles calculation (slower) "
#endif
#if THERMOSTAT == 0
print '(/a)'," * Using DPD thermostat. "
# ifdef DPD_VV
print '(a)'," * Using DPD_VV: Fd is recalculated after the standard Velocity Verlet loop"
# endif
# ifdef DPD_CUT_OFF
print '(/a,f10.5/ )'," * Using DPD cutoff independently of potentials: dpd_cut_off= ",DPD_CUT_OFF
# else
print '(/a/ )'," * Using DPD cutoff coincides with potentials cut-offs"
# endif
! ---- Different weight functions
# if DPD_WEIGHT == 0
print '(a)'," * Using usual DPD weight function: Wd=(1-r/rc)^2 ; Wr^2=Wd "
# endif
# if DPD_WEIGHT == 1
print '(a)'," * Using CONSTANT DPD weight function: Wd=1 ; Wr^2=Wd "
# endif
# if DPD_WEIGHT ==2
print '(a)'," * Using SQUARE_ROOT DPD weight function: Wd=sqrt(1-r/rc) ; Wr^2=Wd "
# endif
# if DPD_WEIGHT ==3
print '(a)'," * Using POWER 1/4 DPD weight function: Wd=(1-r/rc)^(1/4) ; Wr^2=Wd "
# endif
# if DPD_WEIGHT ==4
print '(a)'," * Using POWER 1/4*GAUSSIAN DPD weight function: Wd=(1-r/rc)^(1/4)*2.6*exp(-(1-r/rc)^2) ; Wr^2=Wd "
# endif
# ifndef DPD_WEIGHT
print '(a)'," * Current version of the programs NEEDS a value for DPD_WEIGHT in dpd mode."
stop
# endif
!!!! #ifdef DPD_EMBEDDED
!!!! print '(a/)'," * DPD forces calculations done INSIDE the fluid-fluid routine"
!!!! #else
!!!! print '(a/)'," * DPD forces calculation is done in dpd_forces_ll.f90"
!!!! #endif
#elif THERMOSTAT == 1
print '(/a/)'," * Using LANGEVIN thermostat. "
#endif
#if SYSTEM == 0
# ifdef POISEUILLE
print '(/a/)'," * POISEUILLE version of the program. External force used and expected in system_input"
# else
# if SYMMETRY != 1
print '(/a/)'," * Shear version of the program (Couette). Walls can be moved at V=const."
# endif
# endif
#endif
#ifdef NO_WARNS
print '(/a/)'," * No warnings will be sent to standard output"
#else
print '(/a/)'," * Some warnings will be sent to standard output"
#endif
!! #ifndef FLUID_ROUTINE
!! print '(/a/)' , "FLUID_ROUTINE not defined !!! Stopping here ! " ; stop
!! #endif
!! #if FLUID_ROUTINE == 0
!! print '(/a/)' , " * Using stable fluid_fluid.f90 version"
!! #elif FLUID_ROUTINE == 1
!! print '(/a/)' , " * Using TESTING fluid_fluid_test.f90 version"
!! #endif
#if STORE == 0
print '(/a/)' , " * Writing out folded coordinates"
#elif STORE == 1
print '(/a/)' , " * Writing out UNFOLDED coordinates. This reads/writes conf_unfold"
# ifdef DIFF
print '(/a/)' , " * Performing diffusion calculation of particle 4: Each run starts a new reference "
# endif
#endif
!! if(f_g0 ) then
!! print '(/a/)', " * FRICTION force in X direction (shear) is set to 0 "
!! print '(/a/)', " ---- IMPORTANT WHEN USING LANGEVIN THERMOSTAT !!! ---- "
!! end if
! Consistency checks of the flags defined in control_simulation.h for a given
! physics.
#ifdef STARS
# ifdef FLUKT
write(*,*) "can not be Fluktuations with stars, not in program yet,"
write (*,*) "to add it - just the same like in balls, it is just writing out fort.555"
stop
# endif
# if SYSTEM == 1 || SYSTEM == 2
write(*,*) "SYSTEM 2 or 3 with stars are not possible yet"
stop
# endif
# if WALL==2
write(*,*) "Stars are only with explicit walls, for implicit wall modify types, and check reading of parameters from mfa_input."
stop
# endif
#endif
#ifdef FORCE_SWITCH_ON
print '(/a/)'," * Performing progressive force switch on towards thermalization "
#endif
#if THERMOSTAT == 1
!!!! #ifdef DPD_EMBEDDED
!!!! print '(/a/)', "DEFINITION ERROR: with LGV thermostat DPD_EMBEDDED must be undefined"
!!!! stop
!!!! #endif
#endif
#if WALL==1
# if SYSTEM==2 || SYSTEM==1
print *," **** Incorrect algorithm combination: *** "
print *," explicit walls atoms with system 2 or system 1 are not implemented ! "
print *, "Stopping here. "
stop
# endif
#endif
end subroutine messages