urbanopt-geojson 0.5.2 → 0.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +2 -3
  3. data/CHANGELOG.md +37 -0
  4. data/Gemfile +1 -1
  5. data/LICENSE.md +27 -17
  6. data/Rakefile +16 -6
  7. data/doc_templates/LICENSE.md +27 -17
  8. data/doc_templates/copyright_erb.txt +40 -30
  9. data/doc_templates/copyright_js.txt +1 -1
  10. data/doc_templates/copyright_ruby.txt +17 -7
  11. data/docs/package-lock.json +2534 -1585
  12. data/docs/package.json +9 -4
  13. data/lib/measures/urban_geometry_creation/LICENSE.md +27 -17
  14. data/lib/measures/urban_geometry_creation/measure.rb +16 -6
  15. data/lib/measures/urban_geometry_creation/measure.xml +12 -12
  16. data/lib/measures/urban_geometry_creation_zoning/LICENSE.md +27 -17
  17. data/lib/measures/urban_geometry_creation_zoning/measure.rb +16 -6
  18. data/lib/measures/urban_geometry_creation_zoning/measure.xml +27 -9
  19. data/lib/urbanopt-geojson.rb +16 -6
  20. data/lib/urbanopt/geojson.rb +16 -6
  21. data/lib/urbanopt/geojson/building.rb +16 -6
  22. data/lib/urbanopt/geojson/derived_extension.rb +16 -6
  23. data/lib/urbanopt/geojson/district_system.rb +16 -6
  24. data/lib/urbanopt/geojson/feature.rb +24 -11
  25. data/lib/urbanopt/geojson/geo_file.rb +16 -6
  26. data/lib/urbanopt/geojson/helper.rb +52 -42
  27. data/lib/urbanopt/geojson/logging.rb +16 -6
  28. data/lib/urbanopt/geojson/mapper_classes.rb +16 -6
  29. data/lib/urbanopt/geojson/model.rb +16 -6
  30. data/lib/urbanopt/geojson/region.rb +16 -6
  31. data/lib/urbanopt/geojson/scale_area.rb +16 -6
  32. data/lib/urbanopt/geojson/schema/building_properties.json +8 -7
  33. data/lib/urbanopt/geojson/schema/electrical_connector_properties.json +23 -14
  34. data/lib/urbanopt/geojson/schema/site_properties.json +8 -0
  35. data/lib/urbanopt/geojson/schema/thermal_connector_properties.json +1 -1
  36. data/lib/urbanopt/geojson/schema/thermal_junction_properties.json +1 -1
  37. data/lib/urbanopt/geojson/update_areas.rb +16 -6
  38. data/lib/urbanopt/geojson/validate_geojson.rb +16 -6
  39. data/lib/urbanopt/geojson/version.rb +17 -7
  40. data/lib/urbanopt/geojson/zoning.rb +16 -6
  41. data/urbanopt-geojson-gem.gemspec +3 -3
  42. metadata +9 -9
@@ -1,21 +1,31 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2021, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
- #
4
+
5
5
  # Redistribution and use in source and binary forms, with or without modification,
6
6
  # are permitted provided that the following conditions are met:
7
- #
7
+
8
8
  # Redistributions of source code must retain the above copyright notice, this list
9
9
  # of conditions and the following disclaimer.
10
- #
10
+
11
11
  # Redistributions in binary form must reproduce the above copyright notice, this
12
12
  # list of conditions and the following disclaimer in the documentation and/or other
13
13
  # materials provided with the distribution.
14
- #
14
+
15
15
  # Neither the name of the copyright holder nor the names of its contributors may be
16
16
  # used to endorse or promote products derived from this software without specific
17
17
  # prior written permission.
18
- #
18
+
19
+ # Redistribution of this software, without modification, must refer to the software
20
+ # by the same designation. Redistribution of a modified version of this software
21
+ # (i) may not refer to the modified version by the same designation, or by any
22
+ # confusingly similar designation, and (ii) must refer to the underlying software
23
+ # originally provided by Alliance as “URBANopt”. Except to comply with the foregoing,
24
+ # the term “URBANopt”, or any confusingly similar designation may not be used to
25
+ # refer to any modified version of this software or any modified version of the
26
+ # underlying software originally provided by Alliance without the prior written
27
+ # consent of Alliance.
28
+
19
29
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
30
  # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
31
  # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
@@ -1,21 +1,31 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2021, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
- #
4
+
5
5
  # Redistribution and use in source and binary forms, with or without modification,
6
6
  # are permitted provided that the following conditions are met:
7
- #
7
+
8
8
  # Redistributions of source code must retain the above copyright notice, this list
9
9
  # of conditions and the following disclaimer.
10
- #
10
+
11
11
  # Redistributions in binary form must reproduce the above copyright notice, this
12
12
  # list of conditions and the following disclaimer in the documentation and/or other
13
13
  # materials provided with the distribution.
14
- #
14
+
15
15
  # Neither the name of the copyright holder nor the names of its contributors may be
16
16
  # used to endorse or promote products derived from this software without specific
17
17
  # prior written permission.
18
- #
18
+
19
+ # Redistribution of this software, without modification, must refer to the software
20
+ # by the same designation. Redistribution of a modified version of this software
21
+ # (i) may not refer to the modified version by the same designation, or by any
22
+ # confusingly similar designation, and (ii) must refer to the underlying software
23
+ # originally provided by Alliance as “URBANopt”. Except to comply with the foregoing,
24
+ # the term “URBANopt”, or any confusingly similar designation may not be used to
25
+ # refer to any modified version of this software or any modified version of the
26
+ # underlying software originally provided by Alliance without the prior written
27
+ # consent of Alliance.
28
+
19
29
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
30
  # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
31
  # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
@@ -1,21 +1,31 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2021, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
- #
4
+
5
5
  # Redistribution and use in source and binary forms, with or without modification,
6
6
  # are permitted provided that the following conditions are met:
7
- #
7
+
8
8
  # Redistributions of source code must retain the above copyright notice, this list
9
9
  # of conditions and the following disclaimer.
10
- #
10
+
11
11
  # Redistributions in binary form must reproduce the above copyright notice, this
12
12
  # list of conditions and the following disclaimer in the documentation and/or other
13
13
  # materials provided with the distribution.
14
- #
14
+
15
15
  # Neither the name of the copyright holder nor the names of its contributors may be
16
16
  # used to endorse or promote products derived from this software without specific
17
17
  # prior written permission.
18
- #
18
+
19
+ # Redistribution of this software, without modification, must refer to the software
20
+ # by the same designation. Redistribution of a modified version of this software
21
+ # (i) may not refer to the modified version by the same designation, or by any
22
+ # confusingly similar designation, and (ii) must refer to the underlying software
23
+ # originally provided by Alliance as “URBANopt”. Except to comply with the foregoing,
24
+ # the term “URBANopt”, or any confusingly similar designation may not be used to
25
+ # refer to any modified version of this software or any modified version of the
26
+ # underlying software originally provided by Alliance without the prior written
27
+ # consent of Alliance.
28
+
19
29
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
30
  # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
31
  # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
@@ -251,10 +261,12 @@ module URBANopt
251
261
  end
252
262
 
253
263
  ##
254
- # Used to determine the centroid for the feature's coordinates.
264
+ # Used to determine the centroid for the feature's geojson coordinates.
255
265
  #
256
266
  # [Parameters]
257
267
  # * +vertices+ - The first set polygon vertices in the array of feature coordinates.
268
+ # [Returns]
269
+ # Returns Feature centroid coordinates [long, lat]
258
270
  def find_feature_center(vertices)
259
271
  number_of_locations = vertices.length
260
272
 
@@ -262,8 +274,8 @@ module URBANopt
262
274
 
263
275
  x = y = z = 0.0
264
276
  vertices.each do |station|
265
- latitude = station[0] * Math::PI / 180
266
- longitude = station[1] * Math::PI / 180
277
+ latitude = station[1] * Math::PI / 180
278
+ longitude = station[0] * Math::PI / 180
267
279
 
268
280
  x += Math.cos(latitude) * Math.cos(longitude)
269
281
  y += Math.cos(latitude) * Math.sin(longitude)
@@ -278,8 +290,9 @@ module URBANopt
278
290
  central_square_root = Math.sqrt(x * x + y * y)
279
291
  central_latitude = Math.atan2(z, central_square_root)
280
292
 
281
- [central_latitude * 180 / Math::PI,
282
- central_longitude * 180 / Math::PI]
293
+ [central_longitude * 180 / Math::PI,
294
+ central_latitude * 180 / Math::PI]
295
+
283
296
  end
284
297
 
285
298
  private
@@ -1,21 +1,31 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2021, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
- #
4
+
5
5
  # Redistribution and use in source and binary forms, with or without modification,
6
6
  # are permitted provided that the following conditions are met:
7
- #
7
+
8
8
  # Redistributions of source code must retain the above copyright notice, this list
9
9
  # of conditions and the following disclaimer.
10
- #
10
+
11
11
  # Redistributions in binary form must reproduce the above copyright notice, this
12
12
  # list of conditions and the following disclaimer in the documentation and/or other
13
13
  # materials provided with the distribution.
14
- #
14
+
15
15
  # Neither the name of the copyright holder nor the names of its contributors may be
16
16
  # used to endorse or promote products derived from this software without specific
17
17
  # prior written permission.
18
- #
18
+
19
+ # Redistribution of this software, without modification, must refer to the software
20
+ # by the same designation. Redistribution of a modified version of this software
21
+ # (i) may not refer to the modified version by the same designation, or by any
22
+ # confusingly similar designation, and (ii) must refer to the underlying software
23
+ # originally provided by Alliance as “URBANopt”. Except to comply with the foregoing,
24
+ # the term “URBANopt”, or any confusingly similar designation may not be used to
25
+ # refer to any modified version of this software or any modified version of the
26
+ # underlying software originally provided by Alliance without the prior written
27
+ # consent of Alliance.
28
+
19
29
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
30
  # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
31
  # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
@@ -1,21 +1,31 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2021, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
- #
4
+
5
5
  # Redistribution and use in source and binary forms, with or without modification,
6
6
  # are permitted provided that the following conditions are met:
7
- #
7
+
8
8
  # Redistributions of source code must retain the above copyright notice, this list
9
9
  # of conditions and the following disclaimer.
10
- #
10
+
11
11
  # Redistributions in binary form must reproduce the above copyright notice, this
12
12
  # list of conditions and the following disclaimer in the documentation and/or other
13
13
  # materials provided with the distribution.
14
- #
14
+
15
15
  # Neither the name of the copyright holder nor the names of its contributors may be
16
16
  # used to endorse or promote products derived from this software without specific
17
17
  # prior written permission.
18
- #
18
+
19
+ # Redistribution of this software, without modification, must refer to the software
20
+ # by the same designation. Redistribution of a modified version of this software
21
+ # (i) may not refer to the modified version by the same designation, or by any
22
+ # confusingly similar designation, and (ii) must refer to the underlying software
23
+ # originally provided by Alliance as “URBANopt”. Except to comply with the foregoing,
24
+ # the term “URBANopt”, or any confusingly similar designation may not be used to
25
+ # refer to any modified version of this software or any modified version of the
26
+ # underlying software originally provided by Alliance without the prior written
27
+ # consent of Alliance.
28
+
19
29
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
30
  # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
31
  # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
@@ -233,10 +243,10 @@ module URBANopt
233
243
  # Used to scale footprint to desired area while keeping the original shape.
234
244
  #
235
245
  # [Parameters]
236
- # * +vertices+ - _Type:Array_ - An array of vertices for the original floorprint
246
+ # * +vertices+ - _Type:Array_ - An array of vertices for the original floorprint
237
247
  # * +desired_area+ - _Type:String_ - Area to which you want to scale the vertices to
238
248
  # * +runner+ - _Type:String_ - An instance of +Openstudio::Measure::OSRunner+ for the measure run.
239
- #
249
+ #
240
250
  def self.adjust_vertices_to_area(vertices, desired_area, runner, eps = 0.1)
241
251
  ar = ScaleArea.new(vertices, desired_area, runner, eps)
242
252
 
@@ -298,8 +308,11 @@ module URBANopt
298
308
  # find the polygon of the other_building by passing it to the get_multi_polygons method
299
309
  other_building_points = building.other_points(other_building, other_height, origin_lat_lon, runner, zoning)
300
310
  shadowed = URBANopt::GeoJSON::Helper.is_shadowed(feature_points, other_building_points, origin_lat_lon)
311
+ if shadowed
312
+ runner.registerInfo("Feature #{other_building[:properties][:id]} is acting as shading object for #{building.id}")
313
+ end
301
314
  next unless shadowed
302
- new_building = building.create_other_building(:space_per_building, model, origin_lat_lon, runner, zoning, other_building)
315
+ new_building = building.create_other_building(:space_per_building, model, origin_lat_lon, runner, zoning, 0, other_building)
303
316
  if new_building.nil? || new_building.empty?
304
317
  runner.registerWarning("Failed to create spaces for other building '#{name}'")
305
318
  end
@@ -321,23 +334,27 @@ module URBANopt
321
334
  # * +origin_lat_lon+ _Type:Float_ - An instance of OpenStudio::PointLatLon indicating the origin's
322
335
  # latitude and longitude.
323
336
  def self.is_shadowed(potentially_shaded, potential_shader, origin_lat_lon)
324
- all_pairs = []
337
+ # not using origin_lat_lon but have not removed it yet
338
+ min_distance = nil
339
+ min_pair = nil
325
340
  potentially_shaded.each do |building_point|
326
341
  potential_shader.each do |other_building_point|
327
342
  vector = other_building_point - building_point
328
- all_pairs << {
329
- building_point: building_point,
330
- other_building_point: other_building_point,
331
- vector: vector,
332
- distance: vector.length
333
- }
343
+ distance = Math.sqrt(vector.x * vector.x + vector.y * vector.y)
344
+ if min_distance.nil? || distance < min_distance
345
+ min_distance = distance
346
+ min_pair = {
347
+ building_point: building_point,
348
+ other_building_point: other_building_point,
349
+ vector: vector,
350
+ distance: vector.length
351
+ }
352
+ end
334
353
  end
335
354
  end
336
- all_pairs.sort! { |x, y| x[:distance] <=> y[:distance] }
337
- all_pairs.each do |pair|
338
- if is_shaded(pair[:building_point], pair[:other_building_point], origin_lat_lon)
339
- return true
340
- end
355
+
356
+ if is_shaded(min_pair[:building_point], min_pair[:other_building_point], origin_lat_lon)
357
+ return true
341
358
  end
342
359
  return false
343
360
  end
@@ -351,34 +368,27 @@ module URBANopt
351
368
  # * +origin_lat_lon+ - _Type:Float_ - An instance of +OpenStudio::PointLatLon+ indicating the
352
369
  # origin's latitude and longitude.
353
370
  def self.is_shaded(building_point, other_building_point, origin_lat_lon)
371
+ # not using origin_lat_lon but have not removed it yet
354
372
  vector = other_building_point - building_point
355
- height = vector.z
356
373
  distance = Math.sqrt(vector.x * vector.x + vector.y * vector.y)
357
374
  if distance < 1
358
375
  return true
359
376
  end
360
- hour_angle_rad = Math.atan2(-vector.x, -vector.y)
361
- hour_angle = OpenStudio.radToDeg(hour_angle_rad)
362
- latitude_rad = OpenStudio.degToRad(origin_lat_lon.lat)
363
- result = false
364
- (-24..24).each do |declination|
365
- declination_rad = OpenStudio.degToRad(declination)
366
- zenith_angle_rad = Math.acos(Math.sin(latitude_rad) * Math.sin(declination_rad) + Math.cos(latitude_rad) * Math.cos(declination_rad) * Math.cos(hour_angle_rad))
367
- zenith_angle = OpenStudio.radToDeg(zenith_angle_rad)
368
- elevation_angle = 90 - zenith_angle
369
- apparent_angle_rad = Math.atan2(height, distance)
370
- apparent_angle = OpenStudio.radToDeg(apparent_angle_rad)
371
- if elevation_angle > 0 && elevation_angle < apparent_angle
372
- result = true
373
- break
374
- end
377
+ elevation_angle = 2.5 #not sure of best value maybe allow as project level argument
378
+ height = vector.z
379
+ apparent_angle_rad = Math.atan2(height, distance)
380
+ apparent_angle = OpenStudio.radToDeg(apparent_angle_rad)
381
+ if elevation_angle < apparent_angle
382
+ result = true
383
+ else
384
+ result = false
375
385
  end
376
386
  return result
377
387
  end
378
388
 
379
- class << self
380
- private :is_shaded
389
+ class << self
390
+ private :is_shaded
391
+ end
392
+ end
393
+ end
381
394
  end
382
- end
383
- end
384
- end
@@ -1,21 +1,31 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2021, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
- #
4
+
5
5
  # Redistribution and use in source and binary forms, with or without modification,
6
6
  # are permitted provided that the following conditions are met:
7
- #
7
+
8
8
  # Redistributions of source code must retain the above copyright notice, this list
9
9
  # of conditions and the following disclaimer.
10
- #
10
+
11
11
  # Redistributions in binary form must reproduce the above copyright notice, this
12
12
  # list of conditions and the following disclaimer in the documentation and/or other
13
13
  # materials provided with the distribution.
14
- #
14
+
15
15
  # Neither the name of the copyright holder nor the names of its contributors may be
16
16
  # used to endorse or promote products derived from this software without specific
17
17
  # prior written permission.
18
- #
18
+
19
+ # Redistribution of this software, without modification, must refer to the software
20
+ # by the same designation. Redistribution of a modified version of this software
21
+ # (i) may not refer to the modified version by the same designation, or by any
22
+ # confusingly similar designation, and (ii) must refer to the underlying software
23
+ # originally provided by Alliance as “URBANopt”. Except to comply with the foregoing,
24
+ # the term “URBANopt”, or any confusingly similar designation may not be used to
25
+ # refer to any modified version of this software or any modified version of the
26
+ # underlying software originally provided by Alliance without the prior written
27
+ # consent of Alliance.
28
+
19
29
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
30
  # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
31
  # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
@@ -1,21 +1,31 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2021, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
- #
4
+
5
5
  # Redistribution and use in source and binary forms, with or without modification,
6
6
  # are permitted provided that the following conditions are met:
7
- #
7
+
8
8
  # Redistributions of source code must retain the above copyright notice, this list
9
9
  # of conditions and the following disclaimer.
10
- #
10
+
11
11
  # Redistributions in binary form must reproduce the above copyright notice, this
12
12
  # list of conditions and the following disclaimer in the documentation and/or other
13
13
  # materials provided with the distribution.
14
- #
14
+
15
15
  # Neither the name of the copyright holder nor the names of its contributors may be
16
16
  # used to endorse or promote products derived from this software without specific
17
17
  # prior written permission.
18
- #
18
+
19
+ # Redistribution of this software, without modification, must refer to the software
20
+ # by the same designation. Redistribution of a modified version of this software
21
+ # (i) may not refer to the modified version by the same designation, or by any
22
+ # confusingly similar designation, and (ii) must refer to the underlying software
23
+ # originally provided by Alliance as “URBANopt”. Except to comply with the foregoing,
24
+ # the term “URBANopt”, or any confusingly similar designation may not be used to
25
+ # refer to any modified version of this software or any modified version of the
26
+ # underlying software originally provided by Alliance without the prior written
27
+ # consent of Alliance.
28
+
19
29
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
30
  # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
31
  # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
@@ -1,21 +1,31 @@
1
1
  # *********************************************************************************
2
- # URBANopt (tm), Copyright (c) 2019-2020, Alliance for Sustainable Energy, LLC, and other
2
+ # URBANopt™, Copyright (c) 2019-2021, Alliance for Sustainable Energy, LLC, and other
3
3
  # contributors. All rights reserved.
4
- #
4
+
5
5
  # Redistribution and use in source and binary forms, with or without modification,
6
6
  # are permitted provided that the following conditions are met:
7
- #
7
+
8
8
  # Redistributions of source code must retain the above copyright notice, this list
9
9
  # of conditions and the following disclaimer.
10
- #
10
+
11
11
  # Redistributions in binary form must reproduce the above copyright notice, this
12
12
  # list of conditions and the following disclaimer in the documentation and/or other
13
13
  # materials provided with the distribution.
14
- #
14
+
15
15
  # Neither the name of the copyright holder nor the names of its contributors may be
16
16
  # used to endorse or promote products derived from this software without specific
17
17
  # prior written permission.
18
- #
18
+
19
+ # Redistribution of this software, without modification, must refer to the software
20
+ # by the same designation. Redistribution of a modified version of this software
21
+ # (i) may not refer to the modified version by the same designation, or by any
22
+ # confusingly similar designation, and (ii) must refer to the underlying software
23
+ # originally provided by Alliance as “URBANopt”. Except to comply with the foregoing,
24
+ # the term “URBANopt”, or any confusingly similar designation may not be used to
25
+ # refer to any modified version of this software or any modified version of the
26
+ # underlying software originally provided by Alliance without the prior written
27
+ # consent of Alliance.
28
+
19
29
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20
30
  # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21
31
  # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.