-
Notifications
You must be signed in to change notification settings - Fork 0
/
ChangeLog
3926 lines (2350 loc) · 115 KB
/
ChangeLog
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
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
********************************************************************************
ChangeLog File
********************************************************************************
Please add at the top of this file, a description of the latests changes
you have made to the source code. Please follow the following format:
YYYY/MM/DD Author name <email@domain.foo>
* filename_1:
General description of changes done in filename_1. Reaching column 80
go to the next line please. The star separation lines have exactly
80 stars to help you with this.
* filename_2 (function_A):
General description of changes done in filename_2, assocaited with
function_A.
* filename_2 (function_B):
- Itemized description of changes in function_B of filename_1.
- Continued itemized description of changes in function_B of filename_1.
* filename_3:
- Itemized description of changes done in filename_3.
- Continued itemized description of changes done in filename_3.
(function_C):
- Itemized description of changes to function_C in filename_3.
(function_D):
- Itemized description of changes to multiple functions in filename_3.
********************************************************************************
2012-07-14 Yigit Isbiliroglu <yisbilir@andrew.cmu.edu>
A major bug which crashes program(building module) with the increaased
number of processors is resolved with this version. Other small fixes are
applied to buildings module.
* quake/forward/buildings.c:
(get_airprops):
- x,y and z coordinates of the air elements are adjusted wrt shifted origin
(if any).
* quake/forward/drm.c:
(searchBucketList):
- return is included to avoid warning from the compiler.
* quake/forward/meshformatlab.c:
(saveMeshCoordinatesForMatlab):
- changes to print the damping ratios .(if wanted)
* quake/forward/psolve.c:
(setrec):
- new parameters are fed into bldgs_setrec function.
(main):
- new parameters are fed into saveMeshCoordinatesForMatlab function.
(mesh_generate):
- second pass to octor_carvebuildings is eliminated. Since timer still
exists it is not deleted completely.
* octor.c:
(oct_getnextleaf):
- second if statement is modified in order not to go to octants that I dont
possess.
(oct_installleaf):
- second if statement is modified and another line is added in order not to
get a 'false next leaf' in oct_getnextleaf.
(node_setproperty):
- a bug is fixed for touches == 2 case(2).
(octor_carvebuildings):
- built-in function oct_shrink is now used to eliminate the air elements.
- an unneccesary call to tree_setcom is deleted.
(octor_partitiontree):
- another variable is added (irecv).
- PIs with 0 elements(due to carving) are not included in the MPI
communications. For this, another for loop is included(line 4682). Also
if statement(line 4723) is modified.
- NOTE: all changes related to fix are tagged by the name 'yigit'.
********************************************************************************
2012-06-19 Dorian Restrepo <drestrep@andrew.cmu.edu>
All changes in this commit are related to new alternative for rate-independent
plasticity in the nonlinear module.
* quake/forward/nonlinear.h:
- Added option for rate-independent plasticity.
- Added new structs vector_t and qpvectors_t
- Added new variables to the structs nlsolver_t, nlconstants_t and nlstation_t
- Added new method compute_dLambdaII
* quake/forward/nonlinear.c:
(isThisElementNonLinear):
- New lower limit for nonlinear parameters.
(nonlinear_init):
- added broadcasting of the new variables: theNonLinVsMin, thePlasticityModel, theHardeningModulus
(nonlinear_initparameters):
- Added parsing lines, sanity checks and modification of previous arrays sizes for
storing the three new variables mentioned in (nonlinear_init)
(nonlinear_solver_init):
- Memory allocation of new structs myNonlinSolver->ep1 and myNonlinSolver->ep2
- added interpolation line for the hardening modulus
(compute_dLambda):
- Added module for the calculation of the plastic multiplier according with rate-independant theory.
(compute_dLambdaII):
- This is an updated version of (compute_dlambda) and the one that currently is been used for the nonlinear module. Its -
expression for the material update is much more simple, easy and accurate than the one used in (compute_dlambda). In the-
future the previous function (compute_dLambda) should be deprecated.
(tensor_t compute_pstrain2):
- added lines for the updated plastic strains corresponding to rate-independant theory
(compute_nonlinear_state):
- added module for the material update algorithm corresponding to rate-independant theory.
- line: if ( ( theMaterialModel == LINEAR ) || ( J2 == 0 ) ); was replaced by: if ( ( theMaterialModel == LINEAR ) )
(nonlinear_stations_init):
- added pointer for the equivalent plastic strain.
(print_nonlinear_stations):
- added variables and module for the material update algorithm corresponding to rate-independant theory.
- last column printed was changed from "k" to "k + hrd * (*ept)"
********************************************************************************
2011-10-19 Yigit Isbiliroglu <yisbilir@andrew.cmu.edu>
Some bugs are fixed in psolve.c. And timer statistics are added for drm.
* quake/forward/psolve.c:
(toexpand):
- Part1 of drm also goes for drm_toexpand rule.
(mesh_correct_properties):
- theXForMeshOrigin, theYForMeshOrigin and theZForMeshOrigin are added to
query points to correct the mesh properties (to north_m ,east_m and depth_m
respectively. This fixes the bug.
(solver_run_collect_timers):
- Timer Functions are added here for drm.
(print_timing_stat):
- Similarly code is included to print the drm statistics.
********************************************************************************
2011-10-16 Yigit Isbiliroglu <yisbilir@andrew.cmu.edu>
Some changes have been done to drm module.Now one can define drm_print_rate
which makes i/o of drm coordinates faster. Also a bug in psolve.c is fixed.
* parameters.in
- Added lines defining the parameters for drm.
part1_delta_t = 0.001
drm_print_rate = 10
( These are also added to below for convenience.)
part1_delta_t : is the deltaT used in part1. One can choose a lower deltaT
for part2.
* quake/forward/psolve.c:
- return value of open_cvmdb is changed to static void from static int.
(read_parameters):
- Param.theRegionLat, Param.theRegionLong and Param.theRegionDepth are
broadcasted to all processors, which now prevents the program to crash.
(parse_parameters):
- Definitions of unused variables localFourDOutFile,
localcvmdb_input_file, localmesh_etree_output_file are deleted.
(open_cvmdb):
- Exit codes in case of an error have been fixed.
********************************************************************************
2011-10-07 Yigit Isbiliroglu <yisbilir@andrew.cmu.edu>
A new feature is added to program. Now, Domain Reduction Method (DRM) is
fully implemented in Hercules.For this, drm.c and drm.h files are created.
It's worth it to mention that one needs to run 3 simulations related to DRM
in order to take advantage of this method, namely Part0, Part1 and Part2.
This method is useful if one needs to conduct a more detailed (repeated)
study in a small sub-region within the original big domain.In Part0,drm-box
boundary is defined and coordinates of the drm-nodes are stored(you only
need the small subregion and only let the meshing process to happen). In
Part1, displacements for the drm-nodes (read from the Part0) are stored at
each time step (this is the regular Hercules run except that you store
displacements at some points to be used in Part2). And finally in Part2,
by using the displacements stored in Part1 and converting them to effective
forces, one can do repeated simulations in the small subregion. So Part0
and Part1 runs are done ONLY once, then you have everything necessary to do
multiple Part2 runs. It is impossible to explain all the details here,but
i tried to explain steps within the code.
* parameters.in
- Added lines defining the parameters for drm.
One of the following two options should be added to parameters.in
# DRM
implement_drm = no
OR
# DRM
implement_drm = yes
drm_directory = outputfiles/DRM
which_drm_part = part2
# part0 part1 or part2
#............................................................................
drm_edgesize = 50.0
drm_offset_x = 10000.0
drm_offset_y = 20000.0
part1_delta_t = 0.001 **
drm_print_rate = 10 **
drm_boundary =
200 200 600 600 525
# min_x min_y max_x max_y depth
# ............................................................................
** Explanations for these two are above.
If the implement_drm is no, the program will work as usual.
If you want to use DRM, you need to make sure that you created part0,part1
and part2 directories under outputfiles/DRM.
drm_offset_x and y: distance between origin of the original domain and
origin of your sub-domain(in m).
drm_edgesize: for some reasons (to avoid dangling nodes) we force the
drm boundary to consist of same sized elements.This is the desired element
size for the drm elements(in m).
drm_boundary:limits of your drm boundary(in m). This is according to origin
of your small subregion. This is NOT used in PART1.
* quake/forward/psolve.c:
- drm.h is added in header.
- noyesflag_t drmImplement is defined in Params.
- drm_part_t theDrmPart is defined in Params.
(read_parameters):
- Param.drmImplement variable is broadcasted to all processors.
(parse_parameters):
- Added char implement_drm[64].
- Added noyesflag_t implementdrm.
- implement_drm is parsed by PE0 from parameters.in and sanity
check is done to make sure it is either yes or no. Then, it is assigned
to implementdrm. Also printed on the screen.
(mesh_generate):
- A call to drm_fix_coordinates is added .
(toexpand):
- An if statement was added to check whether the drm is on or off(except for
Part1).If it is on and the element is in the drm boundary, it forces to
have same sized elements in the drm boundary,and skips the regular Vs
rule.
(source_init):
- An if statement was added at the very beginning of the function.It skips
source init if this is a DRM Part0 or Part2 run.
(solver_run):
- Calls to solver_output_drm_nodes, solver_read_drm_displacements,
solver_compute_effective_drm_force and solver_drm_close are added.I think
names are self explanatory.
(main):
- An if statement is added to initialize parameters for drm if drm_implement
is yes.
- And other drm related calls are added after the meshing process.
********************************************************************************
2011-07-31 John Urbanic <urbanic@.psc.edu>
Move planes array data out of parameter input file and into own
file. This is first of three such changes and will be soon
followed by similar fixes for stations and buildings. At that time,
I will document the new/final input file format.
* quake/forward/psolve.c:
- Add new planes array filename to Params. Passed this to
Planes_setup() routine.
* quake/forward/io_planes.c/h:
(new/oldplanes_setup):
- Added in new input parameter to pass planes filename.
- Now open and parse this new input file instead of reading from
general input file data.
********************************************************************************
2011-07-20 John Urbanic <urbanic@.psc.edu>
Implementing new input file format and cleaning up psolve.c
* parameters.in (parameter input file - not a real source file):
Three previous command line arguments have been moved into the input
file. They are cvmdb_input_file, mesh_etree_output_file, and
4D_output_file. They are currently required.
* quake/forward/psolve.c:
- Removed all references, save one, to argv[]. Replaced with proper
parameters.
- Added last few loose parameters to Param, and removed remote
initialization of Global variables Global.myOctree, Global.myMesh and
Global.mySolver.
(main)
- Sole input argument is now the data input file. This includes, or
points to, all other parameters.
(load_parameters)
- includes old local_init, but moves out unrelated pieces. Mostly the
cvmdb open and create routines. Also consolidates all parameter
broadcasts.
(open_cvbdb)
- Moved all cvmdb initialization code into this. This replaces code in
radom other places, primarily local_init, replicateDB and OpenDB.
(parse_parameters)
- just a slightly modified version of old read_params to include new
input arguments. Slight re-arrangement to accomodate heavy
modifications to immediately follow.
********************************************************************************
2011-07-05 John Urbanic <urbanic@.psc.edu>
Major changes throughout psolve.c, psolve.h, io_planes.c and ioplanes.h
* quake/forward/psolve.c:
All new parameters should be added to Param, and should be passed as
individual structures. No new globals should be added to Global, or
anywhere. Those here should eventually be eliminated as globals.
- All global variables, bar MPI_Comm, have been gathered into Params and
Global structures. They have retained their original names there.
Initializers are set as previously.
- External functions that required passing any of these variables have
been changed to pass them as parameters.
- All VIS defined real-time visualization structures were removed.
- Some unused (completely unreferenced) variables were removed. Some
variables that look unused were left as they look potentially useful.
* quake/forward/psolve.h:
- changes to maintain consistancy with the above.
* quake/forward/io_planes.c:
- Eliminated all extern global variables. All data now passed from
outside as parameters. Only local static private data.
* quake/forward/io_planes.h:
- changes to maintain consistancy with the above.
********************************************************************************
2011-05-08 Haydar Karaoglu <hkaraogl@andrew.cmu.edu>
A new attenuation model (BKT) is implemented into Hercules.
* quake/forward/stiffness.c
* quake/forward/damping.c
- New methods to incorporate BKT model.
* quake/forward/psolve.c
- theQTABLE is added as hard-coded.
- New method to read theQTABLE.
- Changes have been made to setrec method to read and store the coefficients related to introduced model for each element.
(Velocity profile in the model is being corrected according to the attenuation model within setrec)
*quake/forward/quake_util.c
- New method to search theQTABLE to get the corresponding coefficients for each element in the mesh.
*parameters.in
- "bkt" is a new option for the type of damping.
- "simulation_velocity_profile_freq_hz" (The frequency for which the given velocity profile holds) should be given if bkt model is to be used, otherwise it should be given as "zero".
********************************************************************************
2011-05-07 John Urbanic <urbanic@.psc.edu>
*/quake/forward/psolve.c
First definition of Param and Global structures to eliminate all wild
global variables. The process of herding all variables into these
has begun.
********************************************************************************
2010-12-11 John Urbanic <urbanic@.psc.edu>
* quake/forward/quakesource.c:
(compute_myForces_srfh)
- Changed so that non-participating nodes do not write source force files
********************************************************************************
2010-11-03 John Urbanic <urbanic@.psc.edu>
* quake/forward/psolve.c:
- re-enabled calls to damping routines
* quake/forward/io_planes.c:
(IO_PE_main)
- accomodated odd combo of number of planes and IO_Pool count
* quake/forward/checkpointing.c/h:
- added stdlib.h and copyright headers
********************************************************************************
2010-10-29 John Urbanic <urbanic@.psc.edu>
Changes to implement single or double precision selectable compilation
* quake/forward/psolve.h:
- Added SINGLE_PRECISION_SOLVER ifdef to switch between types
- Changed structures f_vector and n_t to use this type, solver_float
* quake/forward/psolve.c:
(compute_adjust, schedule_sendata):
- Changed doublesperentry to itemsperentry to be size agnostic
- Changed all relevent doubles to new type, solver_float
********************************************************************************
2010-07-20 John Urbanic <urbanic@.psc.edu>
* quake/forward/psolve.c:
- Moved checkpoint timers to io_checkpoint
* quake/forward/io_checkpoint.c:
(checkpoint_read, checkpoint_write):
- Added striping code to scale on Lustre
********************************************************************************
2010-07-17 John Urbanic <urbanic@.psc.edu>
* quake/forward/psolve.c:
- Added header io_checkpoint.h
- Changed checkpoint_read() and checkpoint_write() parameters
- Moved all checkpoint related code to io_checkpoint. Only
one call to checkpoint read and write left in psolve.
* quake/forward/io_checkpoint.h:
- Created for io_checkpoint.c. Only included in psolve.c
* quake/forward/io_checkpoint.c:
- Move all checkpoint code here. Refactored. Will be
changed a more shortly to accomodate new large scaling
algorithm.
* quake/forward/Makefile:
- Modified to accomodate io_checkpoint.c/h
********************************************************************************
2010-07-13 Ricardo Taborda <rtaborda@.cmu.edu>
* octor/octor.c:
(node_setproperty):
- Fixed bug for 6 touches case for a building resting on the surface
with a node in the interior of the bottom face. This case was
missing.
* quake/forward/buildings.c:
- Added header file commutil.h.
- Added a bunch of global variables to handle the fixed base options.
Will need to re-arrange them in a different way later.
- Added local prototypes for fixed base methods. (some still missing
to add).
(basenode_t):
- New struct to handle nodes at the base of the buildings.
(get_fixedbase_flag):
- New public method to pass the fixed-base flag controller to psolve.
(basenode_search):
- New method to determine if a node is on the contact/cut of a building
with the surface. It returns 0 if the node is not in the building
and N > 0, N being the number of the building the node relates to.
(bldgs_init):
- Added broadcasting of the base fixed input parameters
(buildings_initparameters):
- Added instructions to read the flag to control fixed base options.
- Added missing instructions to close parametersin file.
(fixedbase_read, count_base_nodes, map_base_nodes, read_base_input, ...)
(bldgs_fixedbase_init, interpolatedisp, bldgs_get_base_disp, ...)
(bldgs_load_fixedbase_disps):
- All new methods to force input at the base of buildings to reproduce
fixed base conditions.
* quake/forward/buildings.h:
- Added header file quake_util.h
- Added public prototypes for get_fixedbase_flag, bldgs_fixedbase_init,
and bldgs_load_fixedbase_disps.
* quake/forward/psolve.c:
(solver_load_fixedbase_displacements):
- Auxiliar method to invoque and load the displacements at the base
of the building nodes.
(solver_run):
- Added call to solver_load_fixedbase_displacements.
(main):
- Added call to bldgs_fixedbase_init.
********************************************************************************
2010-06-30 Ricardo Taborda <rtaborda@.cmu.edu>
* octor/octor.c:
(tree_t):
- Added new element to know the tick address of the surface. Also
done in .h file for octree_t.
(tree_setcom):
- Added bldgs_nodesearch plugin to the parameters and pass it along
to com_allocpstl.
(com_allocpctl):
- Added bldgs_nodeseearch plugin and surface tick point and ticksize
to the method's parameters.
- Style editing on dicard out of bounds if statements.
- Added new provision to discard 'air' points.
(node_setproperty):
- Fixed bug for 6 touches and improved 5 touches case.
(octor_newtree):
- Added assignation of tree->surfacep.
- Changed parameters being sent to com_allocpctl so that in this
first occasion it does not consider the case of buildings yet.
(octor_carvebuildings):
- Added new parameters: (1) a plugin from the buildings application;
and (2) a flag to handle the two different calls to this method
differently.
- Added new sanity checks and temporarily commented out abort
exits.
(octor_trimfirstleaf):
- Eliminated! obsolete!
(octor_partitiontree):
- Added buildings plugin to the parameters and passes it to tree_setcom.
(octor_extractmesh):
- Fractioned the order of ecvaluation to discard 'air' points.
- Improved error messages.
* octor/octor.h:
- Modified prototypes in accordance with changes in octor.c, i.e.
added parameters to balancetree, carvebuildings, and partitiontree.
- Eliminated the prototype of the obsolete method octor_trimfirstleaf.
(octree_t):
- Added new item to this structure to have information about the tick
corresponding to the surface for the case of buildings. This is in
agreement with changes in octor.c related to tree_t.
* quake/forward/qmesh:
(main):
Added NULL as the second parameter in octor_partitiontree for
compliance with recent changes in octor related to buildings meshing.
This is only to get avoid compilation errors. It will have to be
reviwed in the future for running qmesh.
* quake/forward/psolve.c:
- Changed timers related to carving buildings.
(mesh_generate):
- Added new parameters requested by octor_* methods.
- Eliminated call to onsolete method octor_trimfirstleaf and replaced
it with the variation of octor_carvebuildings with flag = 0.
* quake/forward/buildings.c
(get_airprops)
- Added immediate return in case of a failed cvm_query so that queries
out of the domain do not spoil the meshing process for non-cubic
simulation domains.
(bldgs_nodesearch):
- Expanded description to be in compliance with onboundarysearch
method.
********************************************************************************
2010-06-17 Ricardo Taborda <rtaborda@.cmu.edu>
* ..............................checkpoint..............................
* parameters.in:
New and modified lines apply to whether include buildings/foundations
into the model. The whole module is now controlled by the following
line
include_buildings = <yes> OR <no>
If the above parameter is <yes>, the following input lines apply:
number_of_buildings = <INTEGER>
min_octant_size_m = <DOUBLE>
surface_shift_m = <DOUBLE>
buildings_n_factor = <INTEGER>
If the number of buildings above is > 0 then the following table
applies:
building_properties =
min_x max_x min_y max_y depth height Vp Vs Rho Vp Vs Rho
All values are real. Coordinates are in local XYZ coordinates
where X=North, Y=East, and Z=Depth. Coordinates do not have to comply
with etree power of 2 grid. They are adjusted according to the closest
grid point using the minimum octant size in physical coordinates (or
meters).
The minimum octant size DO HAVE to be such that:
min_octant_size = L / ( 2 ^ N )
where
L is the maximum (dominant) domain dimension, and
N is a positive integer.
* matlab-utils/examples
Simplified file name: Replaced parameters_for_matlab.in for
plotmeshinput.in
* matlab-utils/scripts
Simplified file name: Replaced plot3d_Hercules_v2.m for plotmesh.m
* octor/octor.h
(bldgs_nodesearch_t)
- New application provided plugin. Helps finding if a vertex does or
does not exist in the simulation domain.
(octor_newtree)
- Added input parameter surface_shift
(octor_carvebuildings, octor_trimfirstleaf)
- New public functions
(octor_extractmesh)
- Added input parameter (function plugin) bldgs_nodesearch.
* octor/octor.c
- Added two global variables: theSurfaceShift and theTotalDepth.
The former indicates for how much is the surfaces push down to
have space for buildings. The latter is the dimension of the
model in depth or Z-direction.
- Added a typedef struct that is a copy of the edata_t from psolve.h.
We will need to think about these copies in a future re-ingineering
of the whole program.
(node_setproperty)
- Completely refactored. It now allows many more cases of 'touches'
to satisfy with the different options posed by pushing the surface
down and including buildings that protrude from the surface after
they are carved off from the mesh including air elements.
A vertex can now be touched by 8, 6, 5, 4, 3, 2 and 1 elements.
The case for 7 touches is there but throws an immediate error.
Some of these cases will help in the future to implement topography.
Each case is well documented with comments at the beginning and
throughout their sub-cases.
(octor_carvebuildings)
- This new method identifies which elements or leaves have a payload
with a negative value of Vp and eliminates those leaves from the tree.
When a leaf is eliminated, other tree structures and counters are
updated.
- If a processor is to be left without any element, the method prevents
itself of allowing this by leaving at least one (first/leftmost) leaf
in the local tree, even if this leaf has a negative Vp.
(octor_trimfirstleaf)
- This new method eliminates the first leaf of the local tree if
this leaf has a negative value of Vp. It corrects the special case
describe above. It occurs after partitioning, thus it assumes that
all processors have now more than 1 leaf/element.
(backfire_parent)
- Is a new recursive method invoked by octor_carvebuildings and
octor_trimfirstleaf to make sure that a parent for whom all children
leafs have been eliminated because of them having a negative Vp
is also erased from the tree. Once this happens it calls itself
recursively to make sure that grandpas, great-grandpas and so one
do have childrens with data.
(octor_partitiontree)
- Added a temporary sanity check to make sure that after partition,
the first leaf is not pointing to NULL. May be eliminated later on
when we get sure the buildings carving is working properly.
- Changed the tree_showstat to 'details' instead of 'brief'.
(octor_extractmesh)
- Added new parameter. A plugin to be sent to the node_setproperty
method.
- Added two sanity checks before traversing the elements to create
the vertices. May be eliminated later on when we proof the
buildings package.
- Improved error messaging.
- Additional sanity check before doing the direct sharing. For later
elimination.
- Also in direct sharing loop. Corrected style of discards for
potential neighboring vertices.
- Added a provision to discard vertices that are in the 'air'.
- Added a sanity check to make sure that the returned procid from
match_zsearch exists.
- Improved error message for when node_setproperty returns a negative
value.
* quake/cvm
cvmpayload_t is now a typedef from the go.
* quake/forward/io_planes.h
Added copyright header.
(planes_setup)
Added parameter surfaceShift
* quake/forward/io_planes.c
- Added copyright header.
(planes_setup)
Added parameter surfaceShift
(Old_planes_setup, New_planes_setup)
- Now take the surface shift and adjust the planes origin accrdingly.
* quake/forward/qmesh.c
***WARNING***
Changed octor_ calls to comply with the new buildings package.
Not tested. Only changed to ensure compilation.
* quake/forward/quake_util.c
Cosmetic changes.
* quake/forward/quakesource.h
(compute_print_source)
Added new parameter: surfaceShift.
* quake/forward/quakesource.c:
***WARNING*** Buildings are only working properly with SRF source.
(read_srf_source, source_init_parameters, compute_print_source)
Now accepting surfaceShift to adjust source location in the case
of buildings.
* quake/forward/psolve.c
- New controller for buildings is a No/Yes flag.
- Renamed controller for nonlinear analysis.
(setrec)
- Added provisions to capture data in octants that belong to a
building.
- Added an if statement to check if the query point needs to be
pushed down by the surface-shift.
(mesh_generate)
- Added parameter in octor_newtree
- Adedd calls to octor_carvebuildings and octor_trimfirstleaf.
- Added plugin-passing parameter to octor_extractmesh.
(toexpand, mesh_correct_properties)
- Refactored for the case of buildings.
(print_timing_stat)