1
block data initial_smd_energy_data
3
#include "smd_energy_data.fh"
5
data smd_energy_name /"total",
17
subroutine smd_energy_init_system()
21
#include "mafdecls.fh"
26
character*32 sp_energy
27
character*32 tag,pname
30
pname = "smd_energy_init_system"
33
call smd_system_get_component(sp_energy,tag,result)
36
> pname//'no component '//tag,0,0)
38
call smd_energy_init(sp_energy)
43
subroutine smd_energy_init(sp_energy)
47
#include "mafdecls.fh"
51
#include "smd_energy_data.fh"
53
character*(*) sp_energy
58
pname = "smd_energy_init"
60
c write(*,*) "in "//pname
62
c create energy data structures
63
c ---------------------------
64
call smd_namespace_create(sp_energy)
65
call smd_data_create(sp_energy,"energy",smd_energy_nc,MT_DBL)
66
call smd_data_create(sp_energy,"oenergy",smd_energy_nc,MT_LOG)
70
subroutine smd_energy_set_component(aname,avalue)
74
#include "mafdecls.fh"
77
#include "smd_energy_data.fh"
80
double precision avalue
89
character*32 sp_energy
92
pname = "smd_energy_set_component"
94
c write(*,*) "in "//pname
96
call smd_system_get_component(sp_energy,"energy",result)
99
> pname//'no energy ',0,0)
102
call smd_data_get_index(sp_energy,tag,i_e,result)
105
> pname//'error getting index for '//tag,0, RTDB_ERR)
107
call smd_data_get_index(sp_energy,tag,i_oe,result)
110
> pname//'error getting index for '//tag,0, RTDB_ERR)
119
result = inp_match(nrec,ocase,aname,smd_energy_name,i)
122
> pname//'no component '//tag,0, RTDB_ERR)
124
dbl_mb(i_e+i-1) = avalue
125
log_mb(i_oe+i-1) = .true.
130
subroutine smd_energy_unset_component(aname)
132
#include "errquit.fh"
134
#include "mafdecls.fh"
137
#include "smd_energy_data.fh"
148
character*32 sp_energy
151
pname = "smd_energy_set_component"
153
write(*,*) "in "//pname
155
call smd_system_get_component(sp_energy,"energy",result)
158
> pname//'no energy ',0,0)
161
call smd_data_get_index(sp_energy,tag,i_e,result)
164
> pname//'error getting index for '//tag,0, RTDB_ERR)
166
call smd_data_get_index(sp_energy,tag,i_oe,result)
169
> pname//'error getting index for '//tag,0, RTDB_ERR)
177
result = inp_match(nrec,ocase,aname,smd_energy_name,i)
180
> pname//'no component '//tag,0, RTDB_ERR)
182
log_mb(i_oe+i-1) = .false.
183
dbl_mb(i_e+i-1) = 0.0d0
188
subroutine smd_energy_get_component(avalue,aname,oexist)
190
#include "errquit.fh"
192
#include "mafdecls.fh"
195
#include "smd_energy_data.fh"
198
double precision avalue
203
logical oexist,result
207
character*32 sp_energy
210
pname = "smd_energy_get_component"
212
write(*,*) "in "//pname
214
call smd_system_get_component(sp_energy,"energy",result)
217
> pname//'no energy ',0,0)
220
call smd_data_get_index(sp_energy,tag,i_e,result)
223
> pname//'error getting index for '//tag,0, RTDB_ERR)
225
call smd_data_get_index(sp_energy,tag,i_oe,result)
228
> pname//'error getting index for '//tag,0, RTDB_ERR)
236
result = inp_match(nrec,ocase,aname,smd_energy_name,i)
239
> pname//'no component '//tag,0, RTDB_ERR)
241
avalue = dbl_mb(i_e+i-1)
242
oexist = log_mb(i_oe+i-1)
247
subroutine smd_energy_print(un)
249
#include "errquit.fh"
251
#include "mafdecls.fh"
254
#include "smd_energy_data.fh"
261
logical oexist,result
265
character*32 sp_energy
268
pname = "smd_energy_print"
270
c write(*,*) "in "//pname
272
call smd_system_get_component(sp_energy,"energy",result)
275
> pname//'no energy ',0,0)
278
call smd_data_get_index(sp_energy,tag,i_e,result)
281
> pname//'error getting index for '//tag,0, RTDB_ERR)
283
call smd_data_get_index(sp_energy,tag,i_oe,result)
286
> pname//'error getting index for '//tag,0, RTDB_ERR)
289
oexist = log_mb(i_oe+i-1)
291
> write(un,'(A16," : ", F16.6)')
292
> smd_energy_name(i),dbl_mb(i_e+i-1)
298
subroutine smd_energy_compute()
300
#include "errquit.fh"
302
#include "mafdecls.fh"
305
#include "smd_energy_data.fh"
312
logical oexist,result
316
character*32 sp_energy
319
pname = "smd_energy_compute"
321
write(*,*) "in "//pname
323
call smd_system_get_component(sp_energy,"energy",result)
326
> pname//'no energy ',0,0)
329
call smd_data_get_index(sp_energy,tag,i_e,result)
332
> pname//'error getting index for '//tag,0, RTDB_ERR)
334
call smd_data_get_index(sp_energy,tag,i_oe,result)
337
> pname//'error getting index for '//tag,0, RTDB_ERR)
339
dbl_mb(i_e+3) = 0.0d0
341
dbl_mb(i_e+3) = dbl_mb(i_e+3)+ dbl_mb(i_e+i-1)
343
log_mb(i_oe+3) = .true.
347
dbl_mb(i_e) = dbl_mb(i_e)+ dbl_mb(i_e+i-1)
349
log_mb(i_oe) = .true.
354
c $Id: smd_energy.F 21176 2011-10-10 06:35:49Z d3y133 $